Java 如何使用循环逐个打开多个窗口?
我可以使用循环打开多个窗口。 现在我想一个接一个地打开这些窗口。这意味着当我关闭一个窗口时,下一个窗口将被打开,我的意思是,直到关闭一个窗口,循环将停止 这是密码Java 如何使用循环逐个打开多个窗口?,java,swing,Java,Swing,我可以使用循环打开多个窗口。 现在我想一个接一个地打开这些窗口。这意味着当我关闭一个窗口时,下一个窗口将被打开,我的意思是,直到关闭一个窗口,循环将停止 这是密码 import java.awt.EventQueue; import javax.swing.JFrame; public class WindowOpener { private static final int WINDOW_COUNT = 5; public static void main(String
import java.awt.EventQueue;
import javax.swing.JFrame;
public class WindowOpener {
private static final int WINDOW_COUNT = 5;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < WINDOW_COUNT; i++) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(150, 250);
f.setVisible(true);
}
}
});
}
}
导入java.awt.EventQueue;
导入javax.swing.JFrame;
公共类开窗器{
私有静态最终整数窗口计数=5;
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
对于(int i=0;i
一次显示5个打开的窗口。首先,您必须创建一个WindowListener
WindowListener wl = new WindowListener() {
@Override
public void windowOpened(WindowEvent we) {
}
@Override
public void windowClosing(WindowEvent we) {
}
@Override
public void windowClosed(WindowEvent we) {
//open new window
JFrame f = new JFrame();
f.setSize(150, 250);
f.addWindowListener(this);
f.setVisible(true);
}
@Override
public void windowIconified(WindowEvent we) {
}
@Override
public void windowDeiconified(WindowEvent we) {
}
@Override
public void windowActivated(WindowEvent we) {
}
@Override
public void windowDeactivated(WindowEvent we) {
}
};
在WindowClosed部分,您可以根据需要打开一个新窗口,并确保将WindowListener添加到其中。
现在,要开始这个过程,您必须创建一个窗口,并将这个侦听器添加到其中。你一关上它,它就会变成一个新窗口。
您可以使用侦听器外部的变量限制打开窗口的数量
if(windowsLeft>0){
windowsLeft--;
//open window
}
首先,您必须创建一个WindowListener
WindowListener wl = new WindowListener() {
@Override
public void windowOpened(WindowEvent we) {
}
@Override
public void windowClosing(WindowEvent we) {
}
@Override
public void windowClosed(WindowEvent we) {
//open new window
JFrame f = new JFrame();
f.setSize(150, 250);
f.addWindowListener(this);
f.setVisible(true);
}
@Override
public void windowIconified(WindowEvent we) {
}
@Override
public void windowDeiconified(WindowEvent we) {
}
@Override
public void windowActivated(WindowEvent we) {
}
@Override
public void windowDeactivated(WindowEvent we) {
}
};
在WindowClosed部分,您可以根据需要打开一个新窗口,并确保将WindowListener添加到其中。
现在,要开始这个过程,您必须创建一个窗口,并将这个侦听器添加到其中。你一关上它,它就会变成一个新窗口。
您可以使用侦听器外部的变量限制打开窗口的数量
if(windowsLeft>0){
windowsLeft--;
//open window
}
这很有效。它一次显示一个窗口,最多显示窗口计数次数,并等待打开下一个窗口,直到上一个窗口关闭
private static final int WINDOW_COUNT = 5;
public static void main(String[] args) {
createNewWindow(WINDOW_COUNT);
}
private static void createNewWindow(int count){
if(count > 0) {
JFrame f = new JFrame();
if(count == 1)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //exit the program after last window is closed
else
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //don't exit the program until last window is closed
f.setSize(150, 250);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
createNewWindow(count -1); //call on window closed event.
}
});
}
}
这很有效。它一次显示一个窗口,最多显示窗口计数次数,并等待打开下一个窗口,直到上一个窗口关闭
private static final int WINDOW_COUNT = 5;
public static void main(String[] args) {
createNewWindow(WINDOW_COUNT);
}
private static void createNewWindow(int count){
if(count > 0) {
JFrame f = new JFrame();
if(count == 1)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //exit the program after last window is closed
else
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //don't exit the program until last window is closed
f.setSize(150, 250);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
createNewWindow(count -1); //call on window closed event.
}
});
}
}
为什么?这样做有什么意义?最简单的解决方案是使用模态JDialog。然后循环代码将等待每个对话框关闭。与@camickr问题同时出现的是,这似乎是一个XY问题,可以通过多种不同的方式更好地解决。1) 看2)为什么?这样做有什么意义?最简单的解决方案是使用模态JDialog。然后循环代码将等待每个对话框关闭。与@camickr问题同时出现的是,这似乎是一个XY问题,可以通过多种不同的方式更好地解决。1) 见2)见