1

これは本当に私を困惑させます。

JPopupMenuJTextComponentとを使用して右クリックのカット\コピー\貼り付けメニューを追加したものがありDefaultEditorKit.Cut\Copy\PasteAction()ます。

JMenuItem cutItem = new JMenuItem(new DefaultEditorKit.CutAction());
JMenuItem copyItem = new JMenuItem(new DefaultEditorKit.CopyAction());
JMenuItem pasteItem = new JMenuItem(new DefaultEditorKit.PasteAction());

アクションごとに、関数で使用するJTextComponentのテキストを取得するアクションリスナーを追加しました。

final ActionListener textFieldListener = new ActionListener() {
@Override public void actionPerformed(ActionEvent e){someGlobalFunction(textComponent.getText());
}
}; 

..。

cutItem.addActionListener(textFieldListener );
copyItem.addActionListener(textFieldListener );
pasteItem.addActionListener(textFieldListener );

ただし、保持できるテキストは、コンポーネントにカットアンドペーストする前の文字列であり、後ではありません。

これに対する明白な解決策はありますか?

4

2 に答える 2

1

SwingUtilities.invokeLater(...)のactionPerformed()メソッドでコードをラップします。これにより、EDTの最後にコードが追加されるため、カット/コピー/貼り付けコマンドの後に実行する必要があります。

于 2010-06-02T19:36:52.623 に答える
0

それはあなたがあなたのテキストフィールドを聞いていないので、あなたはメニューを聞いているからです:-)

リスナーをテキストフィールド、テキストフィールドのドキュメント、またはFilterDocument、あるいは独自のドキュメントに配置します。

于 2010-06-02T19:32:50.463 に答える