0

返信ありがとうございます。私の問題を示すために、以下のコードを使用します(インポートは無視されます)。(略して、上のテキストフィールドを「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);
    }
}
4

1 に答える 1

0

これにより、ポップアップ メニューがテキスト フィールドからフォーカスを奪うのを防ぎます。menu.setFocusable(false);

于 2013-10-18T19:28:22.293 に答える