如何使用两个按钮创建一个窗口,打开一个新窗口

时间:2012-01-07 16:43:21

标签: java swing jbutton actionlistener

我需要程序 - 主JFrame有2个按钮

  1. 按钮
  2. BUTTON2
  3. 当我点击按钮时,它必须打开带有新选项的新JFrame窗口,而如果我单击 button2 ,则打开另一个窗口。

    在这2个新窗口中,我必须添加next和previous之类的按钮。

    我有一个问题,当我打开按钮1,然后打开2个窗口,主JFrame仍然可见。

    我的第一个挥杆计划:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class example {
    
    public static void main (String[] args){    
      JFrame frame = new JFrame("Test");
      frame.setVisible(true);
      frame.setSize(500,200);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
      JPanel panel = new JPanel();
      frame.add(panel);
      JButton button = new JButton("hello agin1");
      panel.add(button);
      button.addActionListener (new Action1());
    
      JButton button2 = new JButton("hello agin2");
      panel.add(button2);
      button.addActionListener (new Action2()); 
    }
    static class Action1 implements ActionListener {        
      public void actionPerformed (ActionEvent e) {     
        JFrame frame2 = new JFrame("Clicked");
        frame2.setVisible(true);
        frame2.setSize(200,200);
        JLabel label = new JLabel("you clicked me");
        JPanel panel = new JPanel();
        frame2.add(panel);
        panel.add(label);       
      }
    }   
    static class Action2 implements ActionListener {        
      public void actionPerformed (ActionEvent e) {     
        JFrame frame3 = new JFrame("OKNO 3");
        frame3.setVisible(true);
        frame3.setSize(200,200);
    
        JLabel label = new JLabel("kliknales");
        JPanel panel = new JPanel();
        frame3.add(panel);
        panel.add(label);
      }
    }   
    }
    

1 个答案:

答案 0 :(得分:6)

您将ActionListener两次添加到button。因此,请更正button2

的代码
  JButton button2 = new JButton("hello agin2");
  panel.add(button2);
  button2.addActionListener (new Action2());//note the button2 here instead of button

此外,使用EventQueue.invokeLater

correct thread上执行您的Swing操作