コード public class Part01 extends JApplet{ public void init(){ setSize(1000, 800); //アプレットサイズ設定 BasePanel bp = new BasePanel(); getContentPane().add(bp); //BasePanel追加 } }
コード public class BasePanel extends JPanel{ Panel1 p1; Panel2 p2; public BasePanel(){ setBackground(Color.BLACK); //背景色設定 setLayout(null); /*Panel1の設定*/ p1 = new Panel1(); p1.setBackground(Color.WHITE); //背景色設定 p1.setOpaque(false); //透明化 p1.setSize(1000, 800); //パネルサイズ設定 add(p1); /*Panel2の設定*/ p2 = new Panel2(); p2.setBackground(Color.WHITE); //背景色設定 p2.setOpaque(false); //透明化 p2.setSize(1000, 800); //パネルサイズ設定 add(p2); } }
コード public class Panel1 extends JPanel{ /** * キー入力処理 */ @Override protected void processKeyEvent(KeyEvent ke){ if(ke.getID() == KeyEvent.KEY_PRESSED){ if(ke.getKeyCode() == KeyEvent.VK_RIGHT){ System.out.println("1111"); } } } /** * 描画処理 */ @Override protected void paintComponent(Graphics g){ super.paintComponent(g); requestFocusInWindow(); //キー入力有効化 } }
コード public class Panel2 extends JPanel{ /** * キー入力処理 */ @Override protected void processKeyEvent(KeyEvent ke){ if(ke.getID() == KeyEvent.KEY_PRESSED){ if(ke.getKeyCode() == KeyEvent.VK_ENTER){ System.out.println("2222"); } } } /** * 描画処理 */ @Override protected void paintComponent(Graphics g){ super.paintComponent(g); requestFocusInWindow(); } }
上のプログラムは
基盤となるパネルを作って、そこにPanel1,Panel2をつけ加えています。
Panel1とPanel2それぞれキー入力処理を行っていて、Panel1において右矢印キーを押せば"1111"が出力され、Panel2においてEnterキーを押せば"2222"が出力されるようにしています。
ですが実行すると、右矢印を押して"1111"は出力されるのですが、Enterキーを押しても何も反応しませんでした。
なぜそうなるのでしょうか?
2つのパネル同時にキー入力処理はできないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/21 02:38
2016/07/21 03:42 編集
2016/07/21 04:15
2016/07/21 04:43
2016/07/25 05:44