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行文本顯示
不要使用線程睡眠(...)。這可以防止框架自行重新繪制。
相反,您需要:
將操作偵聽器中的代碼移動到單獨的線程。這可以通過使用 Swing Worker 來完成,如上面鏈接的 Swing 教程 o 中所示。
Concurrency
使用 Swing 計時器計劃對文本區域的更新。對于這種方法,您可以將文本添加到數組列表中。然后啟動計時器。當計時器觸發時,您可以刪除位置 0 處的文本,并將其顯示在文本區域中。當數組列表為空時,停止計時器。這將允許您在文本區域中輕松顯示多行文本。
添加回答
舉報
0/150
提交
取消