Artikel ini menjelaskan metode implementasi Java menggunakan clipboard untuk pertukaran data antar program. Dalam sistem grafis, clipboard sistem sangat penting. Sulit membayangkan bagaimana sistem operasi grafis tanpa fungsi clipboard akan digunakan. Contoh ini mewujudkan pertukaran data antara program Java dan clipboard sistem. Ketika tombol "Tempel" diklik, program Java memperoleh data dari clipboard sistem dan menampilkannya dalam komponen JTextArea ketika tombol "Salin". diklik Setelah itu, teks yang dipilih di area teks akan ditransfer ke clipboard sistem.
Pertama, Anda harus mendapatkan referensi instance ke clipboard sistem. Kelas java.awt.Toolkit menyediakan metode getSystemClipboard() untuk mengembalikan instance Clipboard dan karena kelas Toolkit menyediakan metode statis getDefaultToolkit() untuk mengembalikan instance Toolkit; tidak perlu membuat objek Toolkit baru, kode implementasi spesifiknya adalah sebagai berikut:
Papan klip cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Di sini, kelas Clipboard menyediakan metode getContents() dan setContents() untuk mengimplementasikan pertukaran data.
getContents yang dapat dipindahtangankan (Pemohon objek);Void setContents (Konten yang dapat dipindahtangankan, pemilik ClipboardOwner);
Metode getContents() di sini memperoleh objek Transferable dari clipboard sistem. Peminta parameter mewakili pemohon data. Secara umum, ini sudah cukup, yang menunjukkan bahwa permintaan data adalah objek instan dari kelas ini. Jika data yang diperlukan berupa teks, Anda dapat memanggil getTransferData(DataFlavor.stringFlavor) dari objek Transferable untuk mendapatkannya. Kode implementasinya adalah sebagai berikut:
Tr yang dapat dipindahtangankan = cb.getContents(ini);String s = (String) tr.getTransferData(DataFlavor.stringFlavor);
Metode setContents() mentransfer data dari program ke clipboard sistem. Isi parameter mewakili data, dan pemilik parameter mewakili pemilik clipboard.
StringSelection ss = StringSelection baru(this.jTextArea1.getText());cb.setContents(ss,ss);
Kelas StringSelection dalam pernyataan di atas mewakili teks yang dipilih.
Dari analisa di atas, sebenarnya clipboard sistem menyimpan kumpulan objek Transferable, dan pertukaran data antara program dan clipboard sistem adalah transfer objek Transferable. Kode program:
1. Buat Proyek baru dan beri nama JClipDemo.
2. Buat Aplikasi baru dan beri nama JClipDemo; beri nama jendela utama MainFrame dan beri judul JClipDemo.
3. Tambahkan komponen JTextArea, dua JButton, dan komponen JPanel ke jendela desain kelas MainFrame, dan tempatkan dua komponen JButton pada komponen JPanel. Tambahkan properti baru Clipboard cb. Kode spesifiknya adalah sebagai berikut:
public class MainFrame extends JFrame {private JPanel contentPane;private BorderLayout borderLayout1 = new BorderLayout();//Buat komponen baru private JTextArea jTextArea1 = new JTextArea();private JPanel jPanel1 = new JPanel();private JButton jButton1 = new JButton( );JButton pribadi jButton2 = baru JButton();//Clipboard instanceClipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();……}
4. Tulis metode inisialisasi jbInit() kelas MainFrame, selesaikan pengaturan properti awal setiap komponen, dan tambahkan event listening untuk komponen tombol. Kode spesifiknya adalah sebagai berikut:
private void jbInit() menampilkan Pengecualian {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Ikon Anda]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);ini.setSize(Dimensi baru(396, 203));this.setTitle("JClipboardDemo");jButton1.setFont(new java.awt.Font("Dialog", 0, 14));jButton1.setText("Copy");jButton1.addActionListener(java. awt.event.ActionListener() {//Tambahkan pendengar acara 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() {//Tambahkan pendengar acara 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. Tulis metode penanganan kejadian tombol "Salin" untuk mengirim data ke clipboard sistem.
void jButton1_actionPerformed(ActionEvent e) {StringSelection ss = new StringSelection(this.jTextArea1.getText()); //Kirim teks yang dipilih ke clipboard sistem cb.setContents(ss,ss);}
6. Tulis metode penanganan kejadian tombol "Tempel" untuk mendapatkan data dari clipboard sistem.
void jButton2_actionPerformed(ActionEvent e) {try{Transferable tr = cb.getContents(this); //Dapatkan objek yang Dapat Dipindahtangankan dari clipboard sistem if (tr != null){String s = (String) tr.getTransferData(DataFlavor.stringFlavor ); //Dapatkan data teks dari objek yang dapat ditransfer jika (s!=null)this.jTextArea1.insert(s,this.jTextArea1.getCaretPosition()); //Sisipkan teks pada posisi kursor di komponen JTextArea}}catch(Exception err){err.printStackTrace();} }