JTextArea在特定时期内显示不清晰。
我创建了一个JFrame,在其中添加了JButton,在单击JButton时,JFrame将被展开并显示JTextArea,并且将以2秒的间隔添加两行文本。问题是单击JButton时,取消扩展了JFrame,但是JTextArea不能清晰显示(JTextArea以黑色显示),如下所示:
2秒后将显示两行文本,如下所示:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class ExpandJFrame {
public static JFrame frame;
public static JButton btn;
public static JTextArea textArea;
public static void main(String[] args) {
frame = new JFrame("JFrame Expand");
frame.setSize(400, 200);
btn = new JButton("Expand");
btn.setBounds(10, 10, 80, 25);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
try {
frame.setSize(400, 400);
textArea = new JTextArea();
textArea.setBounds(5, 210, 370, 150);
textArea.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
frame.add(textArea);
Thread.sleep(1000);
textArea.append("FirstLine\n");
Thread.sleep(1000);
textArea.append("SecondLine\n");
} catch (Exception e) {
}
}
});
frame.add(btn);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
预期的情况:单击JButton时,atonce JTextArea应该清楚地显示为空,然后用户应该能够查看输入的两行。
有人可以帮忙吗?
答案 0 :(得分:3)
2秒后将显示两行文字
不要使用Thread.sleep(...)。这样可以防止框架重新粉刷自身。
相反,您需要:
Concurrency
所示。