前提・実現したいこと
JavaでAWTを使い、っトランプゲームを作っています。
その中で、タイトル画面からメニュー画面に遷移するボタンがあるのですが押すと遷移するものの、タイトル画面に表示されていたボタンが消えず、本来メニュー画面に表示されるべきものにプラスしてタイトル画面で出ていたボタンが表示されたままになってしまいます。
removeAll()を追加するなど試しましたが変わりませんでした。
発生している問題・エラーメッセージ
画面遷移後、前の画面で表示していたボタンが消えず、遷移後の画面にも表示されてしまいます。
該当のソースコード
※まだプロトタイプ実装途中のため、addActionListenerが一部thisのままになっています。
java
1package test; 2 3import java.awt.Font; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7import javax.swing.BoxLayout; 8import javax.swing.JButton; 9import javax.swing.JFrame; 10import javax.swing.JLabel; 11import javax.swing.JPanel; 12import javax.swing.JTextField; 13 14public class Title extends JFrame implements ActionListener { 15 public static void main(String args[]) { 16 new Title(); 17 } 18 19 public Title() { 20 setTitle("トランプコレクション"); 21 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 22 23 setSize(1280, 720); 24 setLocationRelativeTo(null); 25 26 getContentPane().add(getDefPanel()); 27 setVisible(true); 28 } 29 30 private JPanel getDefPanel() { 31 32 JPanel panel = new JPanel(); 33 34 String msg0 = "トランプコレクション"; 35 JLabel label = new JLabel(msg0); 36 label.setFont(new Font("MS ゴシック", Font.PLAIN, 60)); 37 label.setBounds(350, 100, 1600, 100); 38 label.setLayout(new BoxLayout(label, BoxLayout.PAGE_AXIS)); 39 this.add(label); 40 JButton stert = new JButton("Start"); 41 stert.setFont(new Font("Century", Font.ITALIC, 30)); 42 stert.setSize(200, 50); 43 stert.setLocation(400, 500); 44 45 stert.addActionListener(new MenuListener(this)); 46 this.add(stert); 47 JButton end = new JButton("End"); 48 end.setFont(new Font("Century", Font.ITALIC, 30)); 49 end.setSize(200, 50); 50 end.setLocation(700, 500); 51 end.addActionListener(new ExitListener()); 52 this.add(end); 53 54 return panel; 55 } 56 57 58 59 @Override 60 public void actionPerformed(ActionEvent e) { 61 // TODO 自動生成されたメソッド・スタブ 62 63 } 64 65 66} 67
java
1package test; 2 3import java.awt.Font; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7import javax.swing.BoxLayout; 8import javax.swing.JButton; 9import javax.swing.JFrame; 10import javax.swing.JLabel; 11import javax.swing.JPanel; 12import javax.swing.JTextField; 13 14class MenuListener implements ActionListener { 15 private JFrame f; 16 public MenuListener(JFrame f) { 17 this.f=f; 18 } 19 public void actionPerformed(ActionEvent e) { 20 // TODO 自動生成されたメソッド・スタブ 21 22 f.setTitle("トランプコレクション"); 23 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 24 25 f.setSize(1280, 720); 26 f.setLocationRelativeTo(null); 27 28 f.getContentPane().add(getPanel()); 29 f.setVisible(true); 30 } 31 private JPanel getPanel() { 32 33 JLabel title = new JLabel("トランプコレクション"); 34 JPanel panel=new JPanel(); 35 JButton button=new JButton(); 36 title.setLayout(new BoxLayout(title, BoxLayout.PAGE_AXIS)); 37 title.setFont(new Font("MS ゴシック", Font.PLAIN, 60)); 38 title.setBounds(350, 100, 1600, 100); 39 panel.add(title); 40 // panel.add(new JLabel("トランプコレクション")); 41 42 button = new JButton("神経衰弱"); 43 button.setSize(120, 50); 44 button.setLocation(300, 300); 45 button.setActionCommand("3"); 46 button.addActionListener(this); 47 JButton button2 = new JButton("ポーカー"); 48 button2.setSize(120, 50); 49 button2.setLocation(300, 400); 50 button2.setActionCommand("3"); 51 button2.addActionListener(this); 52 JButton button3 = new JButton("ソリティア"); 53 button3.setSize(120, 50); 54 button3.setLocation(300, 500); 55 button3.setActionCommand("3"); 56 button3.addActionListener(this); 57 JButton button4 = new JButton("タイトルに戻る"); 58 button4.setSize(150, 50); 59 button4.setLocation(550, 600); 60 button4.addActionListener(this); 61 JTextField txt = new JTextField("基本自分の記憶力が勝負を左右するゲームです。"); 62 txt.setSize(600, 50); 63 txt.setLocation(500, 300); 64 txt.setEditable(false); 65 JTextField ptxt = new JTextField("5枚の手札の組み合わせで、カードの強さをきそうトランプゲームです。"); 66 ptxt.setSize(600, 50); 67 ptxt.setLocation(500, 400); 68 ptxt.setEditable(false); 69 JTextField stxt = new JTextField("並べられたカードを数字の順番で列を移動させながら、同じマークのAからKの順番に並べかえるゲームです。"); 70 stxt.setSize(600, 50); 71 stxt.setLocation(500, 500); 72 stxt.setEditable(false); 73 JTextField sp = new JTextField(" "); 74 sp.setEditable(false); 75 // txt.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 76 panel.removeAll(); 77 panel.add(title); 78 panel.add(button); 79 panel.add(button2); 80 panel.add(button3); 81 panel.add(button4); 82 panel.add(txt); 83 panel.add(ptxt); 84 panel.add(stxt); 85 panel.add(sp); 86 87 return panel; 88 89 } 90} 91
java
1 2package test; 3 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7class ExitListener implements ActionListener { 8 @Override 9 public void actionPerformed(ActionEvent e) { 10 System.exit(0); 11 } 12} 13
試したこと
removeAll()を追加するなど試しましたが変わりませんでした。
補足情報(FW/ツールのバージョンなど)
java 1.8.0
回答1件
あなたの回答
tips
プレビュー