返信ありがとうございます。私の問題を示すために、以下のコードを使用します(インポートは無視されます)。(略して、上のテキストフィールドを「field1」、下のテキストフィールドを「field2」と呼びます)ダイアログで、field1に入力してfield2をクリックすると、field2にfield1のテキストが表示されます。しかし、field1 に入力し、そのポップアップ メニューを表示してコピー/貼り付けする場合、field1 のテキストを field2 に表示したくありません。
public class MyDialog extends JDialog {
public MyDialog() {
final JTextField name = new JTextField(20);
name.setEditable(true);
final JTextField clone = new JTextField(20);
clone.setEditable(true);
getContentPane().setLayout(new GridLayout(2, 1));
getContentPane().add(name);
getContentPane().add(clone);
name.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
clone.setText(name.getText());
}
});
addPopupMenu(name);
}
private void addPopupMenu(final JTextField name) {
JPopupMenu menu = new JPopupMenu();
JMenuItem copyItem = menu.add(name.getActionMap().get(DefaultEditorKit.copyAction));
copyItem.setText("copy");
JMenuItem pasteItem = menu.add(name.getActionMap().get(DefaultEditorKit.pasteAction));
pasteItem.setText("paste");
name.setComponentPopupMenu(menu);
}
public static void main(String args[]){
MyDialog dlg = new MyDialog();
dlg.setSize(500, 200);
dlg.setVisible(true);
}
}