为了账号安全,请及时绑定邮箱和手机立即绑定

J文本区域在运行时单击 JButton 时在一段时间内未清晰显示

J文本区域在运行时单击 JButton 时在一段时间内未清晰显示

一只斗牛犬 2022-09-28 15:51:03
J文本区域在特定时期内没有清晰显示。我创建了一个JFrame,里面添加了一个J按钮,同时单击JButton,JFrame将被展开,它将显示一个JTextArea,它将添加2行文本,间隔2秒。问题是在单击 JButton 时,JFrame 已展开,但 J 文本区域未清晰显示(J文本区域以黑色显示),如下所示:2秒后,它将以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 时,应将 JTextArea 清晰显示为空,然后用户应该能够逐个查看输入的 2 行。任何人都可以帮上忙吗?
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

2秒后,它将以2行文本显示

不要使用线程睡眠(...)。这可以防止框架自行重新绘制。

相反,您需要:

  1. 将操作侦听器中的代码移动到单独的线程。这可以通过使用 Swing Worker 来完成,如上面链接的 Swing 教程 o 中所示。Concurrency

  2. 使用 Swing 计时器计划对文本区域的更新。对于这种方法,您可以将文本添加到数组列表中。然后启动计时器。当计时器触发时,您可以删除位置 0 处的文本,并将其显示在文本区域中。当数组列表为空时,停止计时器。这将允许您在文本区域中轻松显示多行文本。


查看完整回答
反对 回复 2022-09-28
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号