###やりたいこと
javaのswingのJPanelにkey入力をしてそれを取得したいです
2つのJPanelでできていて
1つの時にはうまくいったのですが2つ目を増やすと(startclassがなければ取得できます)うまくいきません
どのようにすれば取得できるでしょうか?
コンパイルは通ります
よろしくお願いします
###ソースコード
Java
1public class Main{ 2 static MyFrame mf; 3 public static void main(String[]args){ 4 System.out.println("start"); 5 mf=new MyFrame(); 6 mf.setVisible(true); 7 } 8 void set(int n){ 9 mf.addpanel(n); 10 } 11} 12 13public class MyFrame extends JFrame{ 14 Start s; 15 MyPanel p; 16 MyFrame(){ 17 setBackground(Color.WHITE); 18 setForeground(Color.BLUE); 19 setDefaultCloseOperation(EXIT_ON_CLOSE); 20 addpanel(0); 21 setSize(480,270); 22 setLocationRelativeTo(null); 23 repaint(); 24 } 25 void addpanel(int n){ 26 switch(n){ 27 case 0: 28 s=new Start(); 29 add(s); 30 break; 31 case 1: 32 remove(s); 33 p=new MyPanel(); 34 add(p); 35 validate(); 36 break; 37 } 38 } 39} 40 41 42public class MyPanel extends JPanel implements KeyListener{ 43 JLabel l,l2; 44 MyPanel(){ 45 setFocusable(true); //パネルでキーを受付ける 46 addKeyListener(this); 47 l=new JLabel(); 48 l2=new JLabel(); 49 l.setText("start"); 50 add(l); 51 add(l2); 52 } 53 public void keyTyped(KeyEvent e) { 54 char key = e.getKeyChar(); 55 l.setText(String.valueOf(key)); 56 repaint(); 57 } 58 public void keyPressed(KeyEvent e) { 59 } 60 61 public void keyReleased(KeyEvent e) { 62 int keycode=e.getKeyCode(); 63 l2.setText(String.valueOf(keycode)); 64 repaint(); 65 } 66} 67 68 69public class Start extends JPanel implements ActionListener{ 70 Start(){ 71 System.out.println("startwindow"); 72 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 73 JPanel p=new JPanel(); 74 add(p); 75 JButton sb=new JButton("start"); 76 p.add(sb); 77 sb.addActionListener(this); 78 sb.setActionCommand("sb"); 79 } 80 81 @Override 82 public void actionPerformed(ActionEvent e) { 83 Main m=new Main(); 84 if(e.getActionCommand()=="sb"){ 85 removeAll(); 86 m.set(1); 87 } 88 } 89}
###追記
最小化して開くと取得できますが最大化では無理でした・・・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。