Sto cercando di fare un po 'un'applicazione desktop che dovrebbe mostrare il contenuto degli appunti (se si tratta di una stringa). Ho fatto un costruttore che lo fa e funziona bene, ora voglio solo effettuare una chiamata ad un metodo simile ogni volta che un testo viene copiato negli appunti nel sistema operativo. Sono abbastanza nuovo in questo modo qualsiasi aiuto sarebbe apprezzato! Qualcosa mi dice che dovrei usare gli interrupt in qualche modo ...chiamare un metodo quando il contenuto della clipboard è cambiato
package pasty;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class PastyFrame implements KeyListener {
String currentClipboardString;
JLabel clipboardLabel = new JLabel();
public PastyFrame() {
JFrame frame = new JFrame();
frame.setVisible(true);
try {
currentClipboardString = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException | IOException ex) {
Logger.getLogger(PastyFrame.class.getName()).log(Level.SEVERE, null, ex);
currentClipboardString = "";
}
if (currentClipboardString.isEmpty()) {
currentClipboardString = "The clipboard is empty";
}
frame.setSize(400, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(new FlowLayout());
clipboardLabel.setText(currentClipboardString);
frame.add(clipboardLabel);
}
+1 mi ha battuto: P ... – MadProgrammer
Non sono sicuro che questo funziona davvero per me: dai miei esperimenti sembra che l'ascoltatore risponde quando (per esempio) ho selezionare e copiare del testo .. ma se poi copio un altro testo l'ascoltatore non spara. Questo non è sorprendente in quanto sembra che stai aspettando che il FLAVOR cambi. Forse la soluzione potrebbe essere quella di svuotare gli appunti dopo ogni evento? –
@mikerodent: l'evento si attiva finché si copia dagli Appunti con diverse app. Finché utilizzi la stessa app, l'evento scatterà solo una volta. – jamie