gpt4 book ai didi

Java Swing JFrame 在运行时遮盖其他 Jframe

转载 作者:行者123 更新时间:2023-12-02 03:26:15 24 4
gpt4 key购买 nike

所以我是 Swing 乐新手,正在研究刽子手游戏。因此,它的工作方式应该是提示用户欢迎消息,该消息将持续 3 秒,消失,然后将用户发送到下一帧。一切都工作正常,除了当我运行它时,第一帧仍然可见并且在阴影中运行,即使它转到下一帧。我尝试使用 dispose 方法,但它只是关闭框架而不进入下一个框架。这是我到目前为止所做的事情

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.Timer;

public class PA1test extends JFrame{

public static void main(String[] args) {

// opens the first page
JFrame gui = new JFrame("Hangman");
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.add(new First_PageImage());
gui.pack();
gui.setVisible(true);


// action to open the second page
ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
JFrame secpage = new JFrame("Hangman");
secpage.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
secpage.add(new SecondPage());
secpage.pack();
secpage.setVisible(true);
}
};

// set timer to perform action after 3 seconds
Timer timer = new Timer(3000 ,taskPerformer);
timer.setRepeats(false);
timer.start();

}

}

最佳答案

几点:

  1. 将处置操作设置为 JFrame.EXIT_ON_CLOSE 将退出整个应用程序。考虑使用 JFrame.DISPOSE_ON_CLOSE
  2. 听起来您希望创建一个启动屏幕 - 考虑阅读 Oracle 的 tutorial on using the SplashScreen class
  3. 如果您的意图是启动屏幕,并且希望使用 JFrameJDialog 而不是 (2) 中的 SplashScreen 中的 java 构建,请考虑将其设计为如下所示通过删除装饰 (setUndecorated(true)) 和居中 (setLocationRelativeTo(null);) 来显示初始屏幕
  4. 为了处理/隐藏初始 JFrame/splash,您需要在计时器触发后执行此操作,这可以在计时器的 ActionListener 实现中完成 - 以便访问启动画面如果来自匿名类中的 screen 实例,则必须将其标记为 Final。

伪代码:

final JFrame splashScreen = new JFrame("Hangman");//mark as final for visibility's sake
splashScreen.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
//logic to create the main UI frame here
splashScreen.dispose();
}
};

// set timer to perform action after 3 seconds
Timer timer = new Timer(3000 ,taskPerformer);
timer.setRepeats(false);
timer.start();

关于Java Swing JFrame 在运行时遮盖其他 Jframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38835763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com