Thread.sleep()框架上的白色屏幕

时间:2014-06-24 17:35:04

标签: java swing jdbc actionlistener thread-sleep

我有一个带按钮的JFrame,当我按下它时会显示另一帧,在第二帧上更改一些内容,然后在3秒后关闭它。我试过这个但是当出现第二帧时,它是白色的。

private void smallButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
    try {
        NormalCarEntry entryTicket = new NormalCarEntry();
        entryTicket.setVisible(true);
        java.util.Date date = new java.util.Date();
        SimpleDateFormat formatTime = new SimpleDateFormat("HH:mm:ss");
        String entryTime = formatTime.format(date);
        String query = "SELECT `ticket` FROM `" + DB + "` ORDER BY `ticket` DESC LIMIT 1";
        st = connection.createStatement();
        ResultSet res = st.executeQuery(query);
        while (res.next()) 
            entryTicket.entryTicketLabel.setText(res.getInt("ticket") + "");
        entryTicket.entryDate.setText(formatDate2.format(date));
        entryTicket.entryHour.setText(entryTime);





        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        entryTicket.setVisible(false);


    } catch (SQLException ex) {
        Logger.getLogger(mainView.class.getName()).log(Level.SEVERE, null, ex);
    }        

}     

NormalCarEntry是提到的第二帧。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:1)

永远不要在Swing事件线程上调用Thread.sleep(...)。这会使被调用的线程进入休眠状态,并且由于事件线程负责所有Swing图形和用户交互,因此GUI将进入休眠状态。改为使用Swing Timer。

此外,您将需要处理您的搜索技巧,因为这个问题经常在本网站上提出,一点点搜索将带您找到正确的解决方案,而无需在此处添加另一个相同的问题。

另外,您不希望显示第二个JFrame,因为应用程序通常只有一个JFrame。而是使用CardLayout交换视图或使用JDialog作为依赖对话框窗口。