使用Java在GUI编程中混合awt和swing

我读到SO,混合awt和swing对于Java中的GUI编程来说并不是一个好方法。 但我不能找到任何在使用swing时不使用某些awt组件的示例。 例如,即使使用swing,我遇到的大部分示例都将使用awt进行布局和事件处理。

话虽这么说,在使用Java的GUI编程中混合使用swing和awt是什么意思? 它是否意味着不要同时借用摇摆和awt等按钮,canvas等图形小部件,或者只是完全使用swing或awt? 或者可以使用摆动和事件处理以及awt布局的图形单元(如按钮,面板)?

大多数情况下,导入至少看起来像这样:

import javax.swing.*; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; 

我可能错了,但我没有看到使用完全摆动而没有awt的例子,或者因为我是Java GUI的新手而以错误的方式看待它。

在使用Swing时,您将使用AWT布局,动作侦听器等 – 这是好的,并且在设计上,Swing框架在这方面构建在AWT上。 这与JavaFX形成对比,JavaFX本身就是一个完整的GUI框架,并包含自己的布局,事件处理程序等。

如果可能的话,你应该避免混合放置在GUI中的实际组件 – 例如在框架内使用JButton(而不是JFrame),或者并排使用Button和JButton。

在某些情况下有必要 – 例如,如果你想使用普通的嵌入式video播放器,在Swing应用程序中使用VLCJ需要一个重量级(AWT)canvas。 但是,如果没有像上面这样的好用例,那就应该避免。