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.println
在 method1
...methodn
和 public 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代码....
我有以下结构:
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.println
在 method1
...methodn
和 public 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代码....