如何成功显示" splash"屏幕(JFrame / JPanel)在一定延迟后关闭之前给用户一条消息?

时间:2017-01-05 19:25:50

标签: java swing user-interface timer actionlistener

我已经尝试过thread.sleep,最终落后JLabel的外观,然后立即关闭程序,我尝试实施我已经找到的解决方案"类似&#34 ;涉及计时器的问题。

在此actionPerformed中是否有任何直接的方法可以显示此JFrame几秒钟,然后System.exit(0)

我的伙伴和我(这是一个我们有点失控的学校项目)已经"谷歌搜索"过分而无法理解我们发现的变量上下文解决方案。我们都在使用3周的Java编程经验。

提前感谢您,我对我在应用类似问题的可能解决方案方面缺乏专业知识表示道歉。

private class ExitButton implements ActionListener {
        public void actionPerformed(ActionEvent e) {

        JFrame exitMenu = new JFrame();
        JPanel message = new JPanel();
        JLabel punk = new JLabel("You can keep all that corporate BS");
        punk.setFont(new Font("Comic Sans MS", Font.ITALIC, 16));
        exitMenu.setSize(300, 150);
        exitMenu.setLocationRelativeTo(null);
        message.add(punk);
        message.setVisible(true);
        exitMenu.add(message);
        exitMenu.setVisible(true);

        // some kind of timer/delay for like... 3-5 seconds

        System.exit(0);

    }

我尝试使用:

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimedExit {
Timer timer = new Timer();
TimerTask exitApp = new TimerTask() {
public void run() {
System.exit(0);
}
};

public TimedExit() {
timer.schedule(exitApp, new Date(System.currentTimeMillis()+5*1000));
}

}

...来自另一个问题/答案。但它告诉我在调用TimedExit()之后我需要创建一个方法(这样做?)。

@ Swing Timer,再次,我很难实现我在网上找到的针对一般情况量身定制的内容(并最终使用一些令人困惑的术语,假定用户理解他们所代表的占位符的相关性 - 但是,我不明白)。虽然这可能让我变得懒惰,但我希望有人可以告诉我一些符合我代码特定部分的代码,并且只是允许这个JFrame显示asinine语句然后显示System.exit(0)。

如果真的是太复杂而无法回答或简明扼要,我为提出这件事而道歉,并感谢所有试图帮助我的人。

int delay = 3000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
  System.exit(0);
}
};
new javax.swing.Timer(delay, taskPerformer).start();

Jayfray提交的上述代码解决了我的问题!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

exitMenu.setVisible(true);
致电class SearchProfiles extends Component { static contextTypes = { router: PropTypes.object, }; state = { search: '' }; onSubmit = e => { e.preventDefault(); // maybe do your search here, or inject it directly. this.context.router.push(`/profiles/${this.state.search}`); }; onChange = e => this.setState({ search: e.target.value }); render() { return ( <form onSubmit={this.onSubmit}> <input onChange={this.onChange} value={this.state.search} /> <button type="submit">Search Profiles</button> </form> ) } } 后,