テキストの後にアクションを取得することはjtextComponent(Java)に貼り付けられます
-
23-10-2019 - |
質問
これは本当に私を困惑させます。
私は持っています JTextComponent
jpopupmenuを使用して、右クリックカット copy Pasteメニューを追加しました 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 );
しかし、私が手に入れることができる唯一のテキストはそれがあった文字列です 前 後でではなく、コンポーネントに貼り付けました。
これに対する明らかな解決策はありますか?
解決
ActionPerformed()メソッドをSwingUtilities.Invokelater(...)に巻き付けます。これにより、CODEがEDTの終了に追加され、CUT/COPY/PASTEコマンドの後に実行されるようにコードが追加されます。
他のヒント
それはあなたがあなたのテキストフィールドを聞かないからです、あなたはメニューを聞いています:-)
テキストフィールド、またはテキストフィールドのドキュメント、またはおそらくフィルタードキュメント、または独自のドキュメントにリスナーを置きます。
所属していません StackOverflow