0

我有那个代码

import javax.swing.JFrame;
import javax.swing.JLabel;

    public class ChatClient extends JFrame {
        public static void main(String[] args) throws InterruptedException {
            JFrame frame=new JFrame("chat");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400,400);
            frame.setVisible(true);
            frame.setLayout(null);
            JLabel label=new JLabel();
            label.setText("HOR");
            label.setBounds(100,100,100,100);
            frame.add(label);
            Thread.sleep(1000);
            JLabel label1=new JLabel();
            label1.setText("SE");
            label1.setBounds(100,200,100,100);
            frame.add(label1);
        }
    }

我想在框架中写入多个字符串,但在不同的时间。问题是“hor”打印正确,但“se”只有在我更改窗口大小或最小化它时才会打印。我认为在更新框架之前不会打印“se”。我知道我可以用frame.repaint()after解决Thread.sleep(),但更合适的方法是什么?

4

1 回答 1

0

在睡眠前完全设置框架,然后在睡眠后更改文本

private static void drawFrame() {
    JFrame frame=new JFrame("chat");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setLayout(null);
    JLabel label=new JLabel();
    label.setBounds(100,100,100,100);
    frame.add(label);
    JLabel label1=new JLabel();
    label1.setBounds(100,200,100,100);
    frame.add(label1);
    label.setText("HOR" + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
    // frame elemets setup
    
    sleep();
    label1.setText("HOR" + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
}
于 2020-07-01T05:37:35.497 回答