bt1と同じようにpもメンバ変数にしておけばいいですね。
Java
1public class Beginer_test extends JFrame implements ActionListener {
2 private JButton bt1 = new JButton("OFF");
3 private JButton bt2 = new JButton("ON");
4 private JPanel p = new JPanel();
5
6 public Beginer_test() {
7 setBounds(550, 100, 770, 800);
8 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
9
10 p.add(bt1);
11 add(p);
12 bt1.addActionListener(this);
13 bt2.addActionListener(this);
14
15 // 3秒後にONボタン
16 new java.util.Timer().schedule(new TimerTask() {
17 @Override
18 public void run() {
19 SwingUtilities.invokeLater(new Runnable() {
20 public void run() {
21 p.remove(bt1);
22 p.add(bt2);
23 p.revalidate();
24 p.repaint();
25 }
26 });
27 }
28 }, 3000);
29
30 setVisible(true);
31 }
32
33 public void actionPerformed(ActionEvent e) {
34 if (e.getSource() == bt1) {
35 p.remove(bt1);
36 p.add(bt2);
37 } else if (e.getSource() == bt2) {
38 p.remove(bt2);
39 p.add(bt1);
40 }
41 p.revalidate();
42 p.repaint();
43 }
44
45 public static void main(String[] args) {
46 new Beginer_test();
47 }
48}
私だったらbt1 bt2 両方追加しておいてbt1.setVisible(false)
等で切り替えますかね。
Java
1public class Beginer_test extends JFrame implements ActionListener {
2 private JButton bt1 = new JButton("OFF");
3 private JButton bt2 = new JButton("ON");
4
5 public Beginer_test() {
6 setBounds(550, 100, 770, 800);
7 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
8
9 JPanel p = new JPanel();
10 p.add(bt1);
11 p.add(bt2);
12 add(p);
13 bt1.addActionListener(this);
14 bt2.addActionListener(this);
15 bt2.setVisible(false);
16
17 setVisible(true);
18 }
19
20 public void actionPerformed(ActionEvent e) {
21 if (e.getSource() == bt1) {
22 bt1.setVisible(false);
23 bt2.setVisible(true);
24 } else if (e.getSource() == bt2) {
25 bt1.setVisible(true);
26 bt2.setVisible(false);
27 }
28 }
29
30 public static void main(String[] args) {
31 new Beginer_test();
32 }
33}
actionPerformed
内でifで判定するんだったら、ボタンは1個で表示を変えればいいだけかもしれません。
Java
1public class Beginer_test extends JFrame implements ActionListener {
2 private JButton bt1 = new JButton("OFF");
3
4 public Beginer_test() {
5 setBounds(550, 100, 770, 800);
6 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7
8 JPanel p = new JPanel();
9 p.add(bt1);
10 add(p);
11 bt1.addActionListener(this);
12
13 setVisible(true);
14 }
15
16 public void actionPerformed(ActionEvent e) {
17 if (e.getSource() == bt1) {
18 if (bt1.getText().equals("OFF")) {
19 bt1.setText("ON");
20 } else if (bt1.getText().equals("ON")) {
21 bt1.setText("OFF");
22 }
23 }
24 }
25
26 public static void main(String[] args) {
27 new Beginer_test();
28 }
29}