Java 使GUI中的错误消息消失
我有一个简单的GUI,它要求输入一个字符串,然后将其写入一个文本文件,但如果没有输入,JLabel会显示一条错误消息,我希望该错误消息保持5秒钟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
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()中