【问题标题】:Trying not to mix Swing and AWT尽量不要混合 Swing 和 AWT
【发布时间】:2012-08-06 00:11:28
【问题描述】:
【问题讨论】:
标签:
java
swing
jframe
awt
mixing
【解决方案1】:
您可以使用JComponent(尚未实现LayoutManager)或JPanel(已实现FlowLayout)没有任何问题(与Canvas相比)使用@编译的代码进行绘画987654330@
必须将方法paint(AWT Component) 更改为paintComponent(Swing JComponent),更多在跟踪Graphics(2D)
在21th century 中使用Canvas 是有原因的,例如需要访问来自Native OS 的资源的高性能或硬图形代码,例如CAD / CAM、3D 的图形和基于 OpenGL/CL、multimedia players 的图形
使用Swing Timer 而不是普通的Thread
使用KeyBindings 而不是KeyListener
【解决方案2】:
您应该只使用 Swing 组件。例如。您应该从 Button 转到 JButton 以及所有替换控件。
AWT Component (Closest) Swing Replacement
Button JButton
Canvas JPanel
Checkbox JCheckBox
Checkbox in CheckboxGroup JRadioButton in ButtonGroup
Choice JComboBox
Component JComponent
Container JPanel
Label JLabel
List JList
Menu JMenu
MenuBar JMenuBar
MenuItem JMenuItem
Panel JPanel
PopupMenu JPopupMenu
Scrollbar JScrollBar
ScrollPane JScrollPane
TextArea JTextArea
TextField JTextField
但 AWT 和 Swing 的某些方面是共同的,例如事件处理和布局管理在两者之间也是共同的