Heim Java javaLernprogramm Java nutzt die Zwischenablage, um den Datenaustausch zwischen Programmen zu implementieren

Java nutzt die Zwischenablage, um den Datenaustausch zwischen Programmen zu implementieren

Jan 11, 2017 pm 03:25 PM

Das Beispiel in diesem Artikel beschreibt, wie Java die Zwischenablage verwendet, um Daten zwischen Programmen auszutauschen. In grafischen Systemen ist die Systemzwischenablage sehr wichtig. Es ist schwer vorstellbar, wie ein grafisches Betriebssystem ohne Zwischenablagefunktion verwendet werden könnte. In diesem Beispiel wird der Datenaustausch zwischen dem Java-Programm und der Zwischenablage des Systems realisiert, in dem es sich befindet. Wenn auf die Schaltfläche „Einfügen“ geklickt wird, ruft das Java-Programm die Daten aus der System-Zwischenablage ab und zeigt sie in einer JTextArea-Komponente an Klicken Sie auf die Schaltfläche „Kopieren“. Anschließend wird der ausgewählte Text im Textbereich in die Zwischenablage des Systems übertragen.

Zuerst müssen Sie die Instanzreferenz der Systemzwischenablage abrufen. Die Klasse java.awt.Toolkit stellt die Methode getSystemClipboard() bereit, um eine Zwischenablageinstanz zurückzugeben Geben Sie eine Toolkit-Instanz zurück, sodass kein neues Toolkit-Objekt erstellt werden muss. Der spezifische Implementierungscode lautet wie folgt:

Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Nach dem Login kopieren

Hier die Clipboard-Klasse stellt die Methoden getContents() und setContents() bereit.

Transferable getContents(Object requester);
Void setContents(Transferable contents, ClipboardOwner owner);
Nach dem Login kopieren

Die Methode getContents() ruft hier ein übertragbares Objekt aus der Systemzwischenablage ab. Im Allgemeinen ist dies ausreichend. , was darauf hinweist, dass die angeforderten Daten ein Instanzobjekt dieser Klasse sind. Wenn es sich bei den erforderlichen Daten um Text handelt, können Sie getTransferData(DataFlavor.stringFlavor) des Transferable-Objekts aufrufen, um ihn abzurufen. Der Implementierungscode lautet wie folgt:

Transferable tr = cb.getContents(this);
String s = (String) tr.getTransferData(DataFlavor.stringFlavor);
Nach dem Login kopieren

setContents() Methode von Im Programm werden Daten in die Systemzwischenablage übertragen. Der Parameterinhalt repräsentiert die Daten und der Parameterbesitzer repräsentiert den Besitzer der Zwischenablage.

StringSelection ss = new StringSelection(this.jTextArea1.getText());
cb.setContents(ss,ss);
Nach dem Login kopieren

Die StringSelection-Klasse in der obigen Anweisung repräsentiert den ausgewählten Text.
Aus der obigen Analyse geht hervor, dass die Systemzwischenablage tatsächlich eine Sammlung übertragbarer Objekte speichert, und der Datenaustausch zwischen dem Programm und der Systemzwischenablage ist die Übertragung übertragbarer Objekte. Programmcode:

1. Erstellen Sie ein neues Projekt und nennen Sie es JClipDemo.
2. Erstellen Sie eine neue Anwendung und nennen Sie sie JClipDemo. Benennen Sie das Hauptfenster MainFrame und nennen Sie es JClipDemo.
3. Fügen Sie eine JTextArea-Komponente, zwei JButtons und eine JPanel-Komponente zum Designfenster der MainFrame-Klasse hinzu und platzieren Sie die beiden JButton-Komponenten auf der JPanel-Komponente. Neue Eigenschaft hinzufügen. Zwischenablage cb. Der spezifische Code lautet wie folgt:

public class MainFrame extends JFrame {
private JPanel contentPane;
private BorderLayout borderLayout1 = new BorderLayout();
//创建新的组件
private JTextArea jTextArea1 = new JTextArea();
private JPanel jPanel1 = new JPanel();
private JButton jButton1 = new JButton();
private JButton jButton2 = new JButton();
//剪贴板实例
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
……
}
Nach dem Login kopieren

4. Schreiben Sie die Initialisierungsmethode jbInit() der MainFrame-Klasse, vervollständigen Sie die anfänglichen Eigenschaftseinstellungen jeder Komponente und fügen Sie Ereignis-Listener für die Schaltflächenkomponenten hinzu. Der spezifische Code lautet wie folgt:

private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(396, 203));
this.setTitle("JClipboardDemo");
jButton1.setFont(new java.awt.Font("Dialog", 0, 14));
jButton1.setText("Copy");
jButton1.addActionListener(new java.awt.event.ActionListener() { //添加事件监听器
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setFont(new java.awt.Font("Dialog", 0, 14));
jButton2.setText("Paste");
jButton2.addActionListener(new java.awt.event.ActionListener() {//添加事件监听器
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
contentPane.add(jTextArea1, BorderLayout.CENTER);
contentPane.add(jPanel1, BorderLayout.SOUTH);
jPanel1.add(jButton1, null);
jPanel1.add(jButton2, null);
}
Nach dem Login kopieren

5. Schreiben Sie die Ereignisbehandlungsmethode der Schaltfläche „Kopieren“, um Daten in die Systemzwischenablage zu senden.

void jButton1_actionPerformed(ActionEvent e) {
StringSelection ss = new StringSelection(this.jTextArea1.getText()); //发送选中文本到系统剪贴板
cb.setContents(ss,ss);
}
Nach dem Login kopieren

6. Schreiben Sie die Ereignisbehandlungsmethode der Schaltfläche „Einfügen“, um Daten aus der Systemzwischenablage abzurufen.

void jButton2_actionPerformed(ActionEvent e) {
try{
Transferable tr = cb.getContents(this); //从系统剪贴板得到一个Transferable 对象
if (tr != null){
String s = (String) tr.getTransferData(DataFlavor.stringFlavor); //从Transferable 对象中得到文本数据
if (s!=null)
this.jTextArea1.insert(s,this.jTextArea1.getCaretPosition()); //在JTextArea 组件中的光标所在处插入文本
}
}catch(Exception err){
err.printStackTrace();
}
}
Nach dem Login kopieren

Weitere verwandte Artikel darüber, wie Java die Zwischenablage zum Datenaustausch zwischen Programmen verwendet, finden Sie auf der chinesischen PHP-Website!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)