Swing/DefaultEditorKit のバックアップの現在との差分(No.16)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/DefaultEditorKit へ行く。
- 1 (2005-07-24 (日) 23:53:47)
- 2 (2005-07-25 (月) 00:53:54)
- 3 (2005-10-25 (火) 15:06:34)
- 4 (2006-02-27 (月) 15:37:59)
- 5 (2006-02-27 (月) 17:10:00)
- 6 (2006-04-12 (水) 19:40:01)
- 7 (2006-11-19 (日) 13:44:10)
- 8 (2007-04-12 (木) 04:19:39)
- 9 (2008-01-25 (金) 21:05:20)
- 10 (2008-02-06 (水) 12:59:11)
- 11 (2009-06-09 (火) 20:31:41)
- 12 (2012-04-30 (月) 08:54:01)
- 13 (2012-04-30 (月) 10:45:31)
- 14 (2013-03-27 (水) 16:46:57)
- 15 (2014-02-10 (月) 17:22:39)
- 16 (2014-09-18 (木) 02:43:08)
- 17 (2014-10-19 (日) 18:58:52)
- 18 (2015-11-11 (水) 20:07:49)
- 19 (2016-09-08 (木) 17:51:26)
- 20 (2017-10-14 (土) 17:57:43)
- 21 (2019-04-18 (木) 18:04:21)
- 22 (2021-01-31 (日) 08:44:37)
- 23 (2024-01-11 (木) 12:39:09)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:DefaultEditorKitでポップアップメニューからコピー #tags(DefaultEditorKit, JTextField, JTextComponent, JPopupMenu) #author(aterai) #pubdate(2005-07-25) * 概要 [#d4309d1c] --- category: swing folder: DefaultEditorKit title: DefaultEditorKitでポップアップメニューからコピー tags: [DefaultEditorKit, JTextField, JTextComponent, JPopupMenu] author: aterai pubdate: 2005-07-25T08:41:31+09:00 description: DefaultEditorKitを使って、JTextFieldなどでポップアップメニューを使ったコピー、貼り付け、切り取りを行います。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTKk8KGiNI/AAAAAAAAAWM/dJouzZuxv6g/s800/DefaultEditorKit.png --- * 概要 [#summary] `DefaultEditorKit`を使って、`JTextField`などでポップアップメニューを使ったコピー、貼り付け、切り取りを行います。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTKk8KGiNI/AAAAAAAAAWM/dJouzZuxv6g/s800/DefaultEditorKit.png) * サンプルコード [#mcf85a7d] * サンプルコード [#sourcecode] #code(link){{ //textField.setComponentPopupMenu(new TextFieldPopupMenu()); // textField.setComponentPopupMenu(new TextFieldPopupMenu()); class TextFieldPopupMenu extends JPopupMenu { private final Action cutAction = new DefaultEditorKit.CutAction(); private final Action copyAction = new DefaultEditorKit.CopyAction(); private final Action pasteAction = new DefaultEditorKit.PasteAction(); private final Action deleteAction = new AbstractAction("delete") { @Override public void actionPerformed(ActionEvent e) { Component c = getInvoker(); if(c instanceof JTextComponent) { ((JTextComponent)c).replaceSelection(null); if (c instanceof JTextComponent) { ((JTextComponent) c).replaceSelection(null); } } }; private final Action cut2Action = new AbstractAction("cut2") { @Override public void actionPerformed(ActionEvent e) { Component c = getInvoker(); if(c instanceof JTextComponent) { ((JTextComponent)c).cut(); if (c instanceof JTextComponent) { ((JTextComponent) c).cut(); } } }; public TextFieldPopupMenu() { protected TextFieldPopupMenu() { super(); add(cutAction); add(copyAction); add(pasteAction); add(deleteAction); addSeparator(); add(cut2Action); } @Override public void show(Component c, int x, int y) { boolean flg; if(c instanceof JTextComponent) { JTextComponent field = (JTextComponent)c; flg = field.getSelectedText()!=null; }else{ flg = false; if (c instanceof JTextComponent) { JTextComponent tc = (JTextComponent) c; boolean f = tc.getSelectionStart() != tc.getSelectionEnd(); cutAction.setEnabled(f); copyAction.setEnabled(f); deleteAction.setEnabled(f); cut2Action.setEnabled(f); super.show(c, x, y); } cutAction.setEnabled(flg); copyAction.setEnabled(flg); deleteAction.setEnabled(flg); cut2Action.setEnabled(flg); super.show(c, x, y); } } }} * 解説 [#n6767e6a] `DefaultEditorKit`には、エディタとして必要な最小限度の機能がデフォルトで実装されています。上記のサンプルでは、`DefaultEditorKit.CopyAction`で、システムクリップボードを使ったコピーをポップアップメニューで行っています。 * 解説 [#explanation] - `DefaultEditorKit.CopyAction`をポップアップメニューに追加してクリップボードを使ったコピーなどが可能になるよう設定 -- サンプルの`cut2`のように、`JTextComponent#cut()`メソッドなどを使用する方法もある サンプルの"切り取り2"のように、`JTextComponent#cut()`などを使っても同様のことが行えます。 ---- サンプルを`Java Web Start`で起動した場合は、システム全体の共有クリップボードにはアクセス不可能で、アプリケーション内部のみでのコピー、貼り付けとなるようです。 - サンプルを`Java Web Start`で起動した場合は、システム全体の共有クリップボードにはアクセス不可能でアプリケーション内部のみでのコピー、貼り付けとなる - [[ClipboardServiceでシステム全体の共有クリップボードにアクセスする>Swing/ClipboardService]] #ref(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTKnUb6nqI/AAAAAAAAAWQ/L3ylLdA-GIw/s800/DefaultEditorKit1.png) * 参考リンク [#q0a22893] * 参考リンク [#reference] - [[JTextFieldでコピー、貼り付けなどを禁止>Swing/ActionMap]] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/DefaultEditorKit.html DefaultEditorKit (Java Platform SE 8)] * コメント [#wef3f011] - 「今後この警告を表示しない」をやめて、セキュリティの警告を表示したいけど、やり方が分からないorz。 -- [[aterai]] &new{2008-02-06 (水) 13:00:48}; * コメント [#comment] #comment - 「今後この警告を表示しない」をやめて、セキュリティの警告を表示したいが方法が不明。 -- &user(aterai); &new{2008-02-06 (水) 13:00:48}; #comment