Ce petit exemple vous montre comment utiliser le clipboard (le presse papier) du système d'exploitation sous jacents pour échanger des données entre votre application Java et d'éventuelles autres applications. Il est vrai que les séquences de touches pour le copy, cut and paste (copier, couper et coller) sont déjà implémentées sur un composant JTextArea. Cependant, il vous est ici montré comment réaliser ces tâches, mais par programmation.
java.awt.datatransfer
et ce, même avec une application Swing.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; public class TestClipboard extends JFrame { private JTextArea txtArea = new JTextArea(); private JButton btnFrom = new JButton("Copy from System Clipboard"); private JButton btnTo = new JButton("Copy to System Clipboard"); public TestClipboard() { this.setTitle("Test Clipboard"); this.setSize(new Dimension(406, 280)); this.setDefaultCloseOperation( DISPOSE_ON_CLOSE ); txtArea.setBounds(new Rectangle(9, 9, 381, 197)); btnFrom.setBounds(new Rectangle(192, 214, 199, 23)); btnFrom.addActionListener( this::btnFrom_actionPerformed ); btnTo.setBounds(new Rectangle(9, 214, 179, 23)); btnTo.addActionListener( this::btnTo_actionPerformed ); JPanel contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(null); contentPane.add(this.txtArea); contentPane.add(this.btnFrom); contentPane.add(this.btnTo); } void btnTo_actionPerformed(ActionEvent event) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); StringSelection data = new StringSelection(this.txtArea.getText()); clipboard.setContents (data, data); } void btnFrom_actionPerformed(ActionEvent event) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable clipData = clipboard.getContents(clipboard); if (clipData != null) { try { String content = (String)(clipData.getTransferData(DataFlavor.stringFlavor)); this.txtArea.setText(content); } catch (Exception exc) { exc.printStackTrace(); } } } public static void main(String[] args) { new TestClipboard().setVisible(true); } } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :