前提・実現したいこと
Javaを使って画面遷移を行うプログラムを作っている初心者です。
パネル1からパネル2へと移動するボタンを、パネル3からパネル2へと移動するボタンとして使い回すことはできないだろうか?と思ったのですが、不具合が発生します。大人しくもう一つ同じようなボタンを作るしかないのでしょうか?
おそらく基本的なことの理解が足りていないのだろうと思ったのですが、どこのどういった理解が足りていないのかがわからないといった状況です。
###不具合の内容
エラーは発生しません。そのかわり、実行するとgoPanel2ボタンはパネル1には表示されず、パネル3のみに表示されるようになります。
java
1import java.awt.BorderLayout; 2import java.awt.CardLayout; 3import java.awt.event.ActionEvent; 4import java.awt.event.ActionListener; 5 6import javax.swing.JButton; 7import javax.swing.JFrame; 8import javax.swing.JPanel; 9 10public class Sample extends JFrame implements ActionListener{ 11 CardLayout cLayout = new CardLayout(); 12 13 JPanel mainCP; 14 15 public static void main(String args[]) { 16 Sample frame = new Sample("画面遷移テスト"); 17 frame.setVisible(true); 18 } 19 20 public Sample(String title) { 21 22 setTitle(title); 23 setSize(1200, 800); 24 setLocationRelativeTo(null); 25 setDefaultCloseOperation(EXIT_ON_CLOSE); 26 27 mainCP = new JPanel(); 28 getContentPane().add(mainCP, BorderLayout.CENTER); 29 mainCP.setLayout(cLayout); 30 add(mainCP); 31 32 JPanel panel1 = new JPanel(); 33 34 JButton goPanel2 = new JButton("Panel2へ"); 35 goPanel2.addActionListener(this); 36 goPanel2.setActionCommand("GoToPanel2"); 37 panel1.add(goPanel2); 38 39 JPanel panel2 = new JPanel(); 40 JButton goPanel1 = new JButton("Panel1へ"); 41 goPanel1.addActionListener(this); 42 goPanel1.setActionCommand("GoToPanel1"); 43 panel2.add(goPanel1); 44 45 JButton goPanel3 = new JButton("Panel3へ"); 46 goPanel3.addActionListener(this); 47 goPanel3.setActionCommand("GoToPanel3"); 48 panel2.add(goPanel3); 49 50 JPanel panel3 = new JPanel(); 51 52 //panel3.add(goPanel2); //問題の部分 53 54 mainCP.add(panel1, "panel1"); 55 mainCP.add(panel2, "panel2"); 56 mainCP.add(panel3, "panel3"); 57 } 58 59 public void actionPerformed(ActionEvent e) { 60 String cmd = e.getActionCommand(); 61 62 switch (cmd) { 63 case "GoToPanel1": 64 cLayout.show(mainCP, "panel1"); 65 break; 66 67 case "GoToPanel2": 68 cLayout.show(mainCP, "panel2"); 69 break; 70 71 case "GoToPanel3": 72 cLayout.show(mainCP, "panel3"); 73 break; 74 } 75 } 76 77}
回答1件
あなたの回答
tips
プレビュー