如何创建一个带有两个按钮的窗口,这些按钮将打开一个新窗口。

7

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

  1. 按钮
  2. 按钮2

当我点击按钮时,它必须打开一个新的JFrame窗口,并具有新的选项,而如果我点击按钮2则打开另一个窗口。

在这两个新窗口中,我必须添加像下一个和上一个这样的按钮。

我的问题是,当我打开按钮1时,然后打开2个窗口并且主JFrame仍然可见。

这是我swing的第一个程序:

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);
  }
}   
}

4
“我不知道如何做到,但我真的很需要它。” 提供拼写检查和大小写转换功能。 - Andrew Thompson
1个回答

7
您将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方法,在正确的线程上执行您的Swing操作。

3
我发布的代码是从你那里复制粘贴过来的,我只添加了一个2。你应该可以自己做到这一点。而且,invokeLater调用几乎可以直接从我提供的链接中复制。 - Robin
我同意@Robin的观点,在你声明第二行的button2时,应该是button.add...而不是button2 - Adnan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接