我的问题与此有关SwingUtilities.invokeLater.我应该什么时候使用它?每次需要更新GUI组件时是否必须使用?它到底是做什么的?是否有替代品,因为它听起来不直观,并添加看似不必要的代码?
经过多年的Java编程,我总是习惯于创建main()这样的方法:
public static void main(String[] args)
{
runProgram();
}
Run Code Online (Sandbox Code Playgroud)
但是最近我从Web上学习了一些代码并且有时看到这个代码而不是main()上面的常规用法:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
runProgram();
}
});
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道:
main()方式?当我试一试时,我看不出有任何区别.感谢您阅读我和您的答案.
我从这里得到了一些有趣的想法和批评,这篇和这篇文章(参见上一篇关于GUI代码的帖子).尽管如此,我仍然对某些事情感到困惑.主要是,显示用户引入图形的最便宜的方式是什么?
更具体而言,我使用了paintComponent()从方法JPanel通过使这个类的一个对象中的类MouseDragged()与方法一起paintComponent(getGraphics())方法(AuxClass2和AuxClass1相应地).
显然,使用getGraphics()而paintComponent()不是repaint()坏主意,我怀疑与内存使用有关.AuxClass2每次用户拖动鼠标时调用也是一个坏主意.
JPanel vs Canvas(即swing vs awt)也有点令人困惑.使用什么以及何时使用?
我一直试图找到一个解决方法,但没有找到一个,特别是对于getGraphics()方法:如何将图形添加到面板?