paintComponent 与之前的方法交错

paintComponent interleaved with previous method

我有以下结构:

method1
method2
...
methodn

methodX

方法 x 包含:

JFrame frame = new JFrame("Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new CanvasBoard(tree));

frame.setSize(1200, 600);
frame.setVisible(true);

我有几个 System.out.printlnmethod1...methodnpublic void paintComponent(Graphics g) of CanvasBoard.

我收到的消息交织在一起,我该如何解决?

将线程信息添加到您的打印输出以查看您的代码中是否有多个线程运行

System.out.println(Thread.currentThread() + ": <your log message here>");

在它自己的线程中摆动 运行s,这与启动程序的线程不同。

这意味着组件是在不同的线程中绘制的,那么您的代码可能是 运行。

即使您的所有代码都在事件调度线程的上下文中 运行ning,paintComponent 也可以随时调用,这意味着消息在每个 运行.

有关详细信息,请参阅 Concurrency in Swing and Initial Threads

确保您从事件调度线程的上下文中启动并运行您的UI代码....