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

Luk*_*007 6 java swing jbutton actionlistener

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

  1. 按键
  2. BUTTON2

当我单击按钮时,它必须打开带有新选项的新JFrame窗口,而如果我单击button2然后打开另一个窗口.

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

我有一个问题,当我打开按钮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);
  }
}   
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*bin 6

你添加ActionListener两次button.因此,纠正你的代码button2,以

  JButton button2 = new JButton("hello agin2");
  panel.add(button2);
  button2.addActionListener (new Action2());//note the button2 here instead of button
Run Code Online (Sandbox Code Playgroud)

此外,使用正确的线程执行Swing操作EventQueue.invokeLater

  • 我发布的代码是从你的代码中复制粘贴的,我只添加了一个`2`.你应该能够自己做到这一点.`invokeLater`调用几乎可以直接从我提供的链接中复制 (3认同)