ボタンを押すごとに画面内のTextFieldの内容と個数が切り替わるようにしたいです。
ボタンを1回押したときは正常に動作するのですが、2回目を押した際に何も反応しないです。
原因を教えていただきたいです。
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Test { public static void main(String[] args) { new a().showa(); } } class a extends JFrame implements ActionListener { JPanel p; ArrayList<JTextField> t; JButton b; int flg = 0; public void showa() { this.setTitle("a"); this.setSize(1000, 100); this.setResizable(false); p = new JPanel(); t = new ArrayList<>(); b = new JButton(); if (flg == 0) { for (int i = 0; i < 10; i++) { t.add(new JTextField()); t.get(i).setText("a"); p.add(t.get(i)); } } else { for (int i = 0; i < 5; i++) { t.add(new JTextField()); t.get(i).setText("b"); p.add(t.get(i)); } } b.setText("button"); b.addActionListener(this); this.add(b, BorderLayout.SOUTH); this.add(p); this.show(); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == this.b) { if (flg == 0) { this.flg = 1; } else { flg = 0; } this.p.removeAll(); this.showa(); } } }
コンポーネントを随時増減するような画面は UI としてあまり良いとは思えません。
最初に全て設定しておけば良いのではないでしょうか。
回答2件
あなたの回答
tips
プレビュー