java,gui,如何在多个弹窗的情况下,点击当前弹窗中的一个按钮“click here to go back”,会自动跳转到最初界面,请用代码实现,加注释
时间: 2023-10-01 22:08:20 浏览: 150
可以使用Java Swing库来实现GUI界面,使用JFrame类来创建窗口。可以使用一个堆栈来记录弹窗的历史记录,当点击返回按钮时,从堆栈中取出最近的一个弹窗并显示。
以下是示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Stack;
public class MultiWindowDemo {
private JFrame mainFrame; // 最初的界面
private Stack<JFrame> windowStack; // 弹窗的历史记录
public MultiWindowDemo() {
// 初始化主界面
mainFrame = new JFrame("Main Window");
mainFrame.setSize(300, 200);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建一个按钮,点击后打开弹窗
JButton openButton = new JButton("Open Window");
openButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openNewWindow();
}
});
mainFrame.add(openButton, BorderLayout.CENTER);
// 初始化堆栈
windowStack = new Stack<>();
windowStack.push(mainFrame); // 将主窗口加入堆栈
// 显示主界面
mainFrame.setVisible(true);
}
// 打开新窗口
private void openNewWindow() {
JFrame newFrame = new JFrame("New Window");
newFrame.setSize(200, 150);
newFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// 创建返回按钮
JButton backButton = new JButton("Click here to go back");
backButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 从堆栈中取出最近的一个窗口
JFrame lastFrame = windowStack.pop();
// 关闭当前窗口
newFrame.dispose();
// 显示最近的一个窗口
lastFrame.setVisible(true);
}
});
newFrame.add(backButton, BorderLayout.CENTER);
// 将新窗口加入堆栈
windowStack.push(newFrame);
// 显示新窗口
newFrame.setVisible(true);
}
public static void main(String[] args) {
new MultiWindowDemo();
}
}
```
注释详细解释了代码的实现过程。当点击返回按钮时,从堆栈中取出最近的一个窗口并显示,同时关闭当前窗口。
阅读全文