In diesem Artikel wird die Implementierungsmethode von Java beschrieben, bei der die Zwischenablage zum Datenaustausch zwischen Programmen verwendet wird. In grafischen Systemen ist die Systemzwischenablage sehr wichtig. Es ist schwer vorstellbar, wie ein grafisches Betriebssystem ohne Zwischenablagefunktion verwendet werden könnte. Dieses Beispiel realisiert den Datenaustausch zwischen dem Java-Programm und der Zwischenablage des Systems. Wenn Sie auf die Schaltfläche „Einfügen“ klicken, ruft das Java-Programm die Daten aus der Zwischenablage des Systems ab und zeigt sie in einer JTextArea-Komponente an angeklickt wird. Anschließend wird der ausgewählte Text im Textbereich in die Systemzwischenablage übertragen.
Zuerst müssen Sie einen Instanzverweis auf die Systemzwischenablage abrufen. Die Klasse java.awt.Toolkit stellt die Methode getSystemClipboard() bereit, um eine Clipboard-Instanz zurückzugeben. Es ist nicht erforderlich, ein neues Toolkit-Objekt zu erstellen. Der spezifische Implementierungscode lautet wie folgt:
Zwischenablage cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Hier stellt die Clipboard-Klasse die Methoden getContents() und setContents() zur Implementierung des Datenaustauschs bereit.
Übertragbarer getContents(Objektanforderer);Void setContents(Übertragbarer Inhalt, ClipboardOwner-Besitzer);
Die Methode getContents() ruft hier ein übertragbares Objekt aus der Systemzwischenablage ab. Der Parameter Requester stellt im Allgemeinen den Datenantragsteller dar und zeigt an, dass die Datenanforderung ein Instanzobjekt dieser Klasse ist. 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:
Übertragbar tr = cb.getContents(this);String s = (String) tr.getTransferData(DataFlavor.stringFlavor);
Die Methode setContents() überträgt Daten vom Programm in die Systemzwischenablage. 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);
Die StringSelection-Klasse in der obigen Anweisung repräsentiert den ausgewählten Text.
Aus der obigen Analyse geht hervor, dass die Zwischenablage des Systems tatsächlich eine Sammlung übertragbarer Objekte speichert, und der Datenaustausch zwischen dem Programm und der Zwischenablage des Systems 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:
öffentliche Klasse MainFrame erweitert JFrame {private JPanel contentPane;private BorderLayout borderLayout1 = new BorderLayout();//Erstelle eine neue Komponente private JTextArea jTextArea1 = new JTextArea();private JPanel jPanel1 = new JPanel();private JButton jButton1 = new JButton( );private JButton jButton2 = neu JButton();//Clipboard instanceClipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();……}
4. Schreiben Sie die Initialisierungsmethode jbInit() der MainFrame-Klasse, vervollständigen Sie die anfänglichen Eigenschafteneinstellungen jeder Komponente und fügen Sie einen Ereignis-Listener für die Schaltflächenkomponente hinzu. Der spezifische Code lautet wie folgt:
private void jbInit() löst eine Ausnahme aus {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Ihr Symbol]")));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() { //Ereignis-Listener hinzufügen 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() {//Ereignis-Listener hinzufügen 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); }
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()); //Sende den ausgewählten Text an die Systemzwischenablage cb.setContents(ss,ss);}
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); //Ein übertragbares Objekt aus der Systemzwischenablage abrufen if (tr != null){String s = (String) tr.getTransferData(DataFlavor.stringFlavor ); //Textdaten vom übertragbaren Objekt abrufen, wenn (s!=null)this.jTextArea1.insert(s,this.jTextArea1.getCaretPosition()); //Text an der Cursorposition in der JTextArea-Komponente einfügen}}catch(Exception err){err.printStackTrace();} }