Swingコンポーネントのイベントを他コンポーネントにスルーさせる
各コンポーネントの
processXXXXEvent
メソッドを呼び出す。KeyEventなどを特定せずに全てのイベントを渡す場合は
processEvent
を呼び出す。
サンプル
1 |
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class test { public static void main(String[] args){ JFrame frame = new JFrame(); Container c = frame.getContentPane(); c.setLayout(new GridLayout(2,1)); JTextField tf = new JTextField(); final TestTextField tf2 = new TestTextField(); tf.addKeyListener(new KeyListener(){ @Override public void keyPressed(KeyEvent e){ tf2.processKeyEvent(cloneEvent(e)); } @Override public void keyReleased(KeyEvent e){ tf2.processKeyEvent(cloneEvent(e)); } @Override public void keyTyped(KeyEvent e){ tf2.processKeyEvent(cloneEvent(e)); } private KeyEvent cloneEvent(KeyEvent e){ return new KeyEvent( (Component)e.getSource(), e.getID(), e.getWhen(), e.getModifiers(), e.getKeyCode(), e.getKeyChar(), e.getKeyLocation() ); } }); c.add(tf); c.add(tf2); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.pack(); frame.setVisible(true); } } class TestTextField extends JTextField { @Override public void processKeyEvent(KeyEvent e){ super.processKeyEvent(e); } } |
[カテゴリ: プログラミング言語 > Java]
[通知用URL]
Tweet
最終更新時間:2014年01月23日 21時43分28秒