Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使GUI中的错误消息消失_Java_Swing_File Io_Event Dispatch Thread - Fatal编程技术网

Java 使GUI中的错误消息消失

Java 使GUI中的错误消息消失,java,swing,file-io,event-dispatch-thread,Java,Swing,File Io,Event Dispatch Thread,我有一个简单的GUI,它要求输入一个字符串,然后将其写入一个文本文件,但如果没有输入,JLabel会显示一条错误消息,我希望该错误消息保持5秒钟 import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedWriter; import java.io.File; impor

我有一个简单的GUI,它要求输入一个字符串,然后将其写入一个文本文件,但如果没有输入,JLabel会显示一条错误消息,我希望该错误消息保持5秒钟

    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import javax.swing.*;    
    import javax.swing.JFrame;    
    import net.miginfocom.swing.MigLayout;

    public class Q1 extends JFrame {

    private JLabel lblString, lblMessage;
    private JTextField txtString;
    private JButton btnStore;
    private JPanel thePanel;

    public static void main(String[] args) {    
        new Q1();    
    }// End of main

    public Q1() {

        super("Store your text");
        this.setSize(600, 100);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
        thePanel = new JPanel(new MigLayout());    
        lblString = new JLabel("Enter Your Text :");    
        txtString = new JTextField(50);    
        btnStore = new JButton("Store");
        // Listener for Store Button
        ListenerForButton lForButton = new ListenerForButton();    
        btnStore.addActionListener(lForButton);    
        lblMessage = new JLabel();    
        thePanel.add(lblString);
        thePanel.add(txtString, "wrap");
        thePanel.add(btnStore, "skip,split2");
        thePanel.add(lblMessage, "gapleft 200");    
        this.add(thePanel);    
        this.setResizable(false);
        this.setVisible(true);    
    }// End of constructor

    // Listener implement    
    public class ListenerForButton implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            if (e.getSource() == btnStore) {    
                if (txtString.getText().equals("")) {    
                    lblMessage.setText("ERROR-NO Text is given !");
                    lblMessage.setForeground(Color.red);    
                } else {
                    try {
                        String str = txtString.getText();    
                        File file = new File("appending-Text-File.txt");    
                        // if file doesnt exists, then create it
                        if (!file.exists()) {    
                            file.createNewFile();
                        }    
                        FileWriter fileWritter = new FileWriter(file.getName(),
                                true);    
                        BufferedWriter bufferWritter = new BufferedWriter(
                                fileWritter);    
                        bufferWritter.newLine();// Write a new line
                        bufferWritter.write(str);
                        bufferWritter.close();    
                        lblMessage.setText("String is successfully stored !");    
                        txtString.setText("");    
                    } catch (IOException ex) {    
                        ex.printStackTrace();
                    }
                }
            }
        }// End actionPerfomred
    }    
}// End of Class

尝试将if块更新为:

  if (txtString.getText().equals("")) {    
     lblMessage.setText("ERROR-NO Text is given !");
     lblMessage.setForeground(Color.red);
     Thread.currentThread().sleep(5000);
     lblMessage.setText("");
  }

具体问题是什么?如何完成您在描述中所说的所有内容?我认为您需要使用
定时器类
。请看答案。查看给定的伪代码,或者可以使用JD对话框。如果用户在这5秒钟内没有看到错误怎么办?或者,如果五秒钟对用户来说太长、太烦人怎么办。为什么不让他们按照自己的节奏阅读,理解后点击OK?
MigLayout
无关紧要;请编辑您的问题,使其包含一个关注问题的答案。不,永远,回答不好,方向错误,请说明为什么
Thread.currentThread().sleep(5000)
,不要使用
SwingWorker
,否则
lblMessage.setText(“”)必须包装在
invokeLater()中