130 likes | 318 Views
そこはかとなく JAVA(10) ~ 編集機能の追加 ~. 原田 章. 内容. 編集機能の追加 コピー、切り取り、ペースト アンドゥ(やり直し) ショートカットキーの追加 Ctrl+C: コピー Ctrl+V: ペースト. 編集機能の追加. JEditorPane にははじめから編集機能用の関数あり JEditorPane.copy() JEditorPane.cut() JEditorPane.paste() 追加の方法は前回のファイルメニューと同じ. コピー機能追加. カットとペーストは、 copy を cut,paste に変更.
E N D
内容 • 編集機能の追加 • コピー、切り取り、ペースト • アンドゥ(やり直し) • ショートカットキーの追加 • Ctrl+C:コピー • Ctrl+V:ペースト
編集機能の追加 • JEditorPaneにははじめから編集機能用の関数あり • JEditorPane.copy() • JEditorPane.cut() • JEditorPane.paste() • 追加の方法は前回のファイルメニューと同じ
コピー機能追加 • カットとペーストは、copyをcut,pasteに変更 class Copy extends AbstractAction{ Copy() { super( "Copy" ); } public void actionPerformed( ActionEvent evt ) { if ( editor != null ) editor.copy(); } }
アンドゥ • UndoManagerクラス • アンドゥを管理する • JEditorPaneにこれを追加する • undo()メソッドの利用 import javax.swing.undo.*; UndoManager undo = new UndoManager(); JEditorPane editor = new JEditorPane(); editor.getDocument().addUndoableEditListener( undo );
アンドゥ機能の追加 • Undoできなかったときのエラーをキャッチ class Undo extends AbstractAction { Undo() { super( "Undo" ); } public void actionPerformed( ActionEvent evt ) { try { undo.undo() } catch ( CannotUndoException error ) { // 何もしない } } }
PseudoSAS2.java • PseudoSAS.javaを改良 • importに追加あり • メニュー追加部分を書き換え • 編集機能の追加 • コピー、カット、ペースト • アンドゥ
ショートカットキーの追加 • Keymapクラス • 入力キーとイベントの対応表 • これにキーストロークとイベントの組み合わせを追加 • JEditorPane.getKeymap()で取得 • KeyStroke.getKeyStroke()メソッド • getKeyStroke( KeyEvent.VK_C, KeyEvent.CTRL_MASK ); • JEditorPaneの場合、あらかじめ設定されているようだ
登録済みのショートカット • Ctrl+X:切り取り • Ctrl+C:コピー • Ctrl+V:ペースト • Alt+F4:終了 • ほかにもあるかも….
追加メソッド private void addShortcutKey() { Keymap keymap = editor.getKeymap(); KeyStroke keyundo = KeyStroke.getKeyStroke( KeyEvent.VK_Z, KeyEvent.CTRL_MASK ); KeyStroke keynew = KeyStroke.getKeyStroke( KeyEvent.VK_N, KeyEvent.CTRL_MASK ); KeyStroke keyopen = KeyStroke.getKeyStroke( KeyEvent.VK_O, KeyEvent.CTRL_MASK ); KeyStroke keysave = KeyStroke.getKeyStroke( KeyEvent.VK_S, KeyEvent.CTRL_MASK ); keymap.addActionForKeyStroke( keyundo, new Undo() ); keymap.addActionForKeyStroke( keynew, new New() ); keymap.addActionForKeyStroke( keyopen, new Open() ); keymap.addActionForKeyStroke( keysave, new Save() ); editor.setKeymap( keymap ); }
その他の変更 • Keymapクラスのためにjavax.swing.text.*をimport • コンストラクタに • addShortcutKey()を追加
おまけ • setBounds( int x, int y, int width, int height ) • ウィンドウの場所と大きさを指定 • setSize( int width, int height )の代わりに使用 • クラス構造の整理 • EditorウィンドウとOutputウィンドウはほとんどおなじもの • 共通にできる部分は共通化
PseudoSAS3.java関係 • PseudoSAS3.java • 本体 • PseudoSASFrame.java • ウィンドウの共通部分 • EditorWindow.java • プログラム編集ウィンドウ • OutputWindow.java • 出力ウィンドウ • 前回のReadFile.java, WriteFile.java, SASConnector.javaも必要