我正在用Java制作游戏。我找到了这个教程: http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418
它显示了如何进行主动渲染。他们使用Canvas进行绘画。到目前为止,我一直在使用JPanel。但是,我想切换到这种方法。现在,我有几个JPanel和一些JButtons添加到JPanels。我想知道是否应该切换到java.awt.Button和java.awt.Panel,以便我不混合使用Swing和AWT组件。
另一方面,在教程中,Canvas在JFrame中,所以不是已经混合了Swing和AWT吗?那可以吗?
感谢。
答案 0 :(得分:3)
您应该只使用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
都很常见,例如事件处理和布局mgmt在两者之间也很常见
答案 1 :(得分:3)
您可以使用JComponent
(尚未实施LayoutManager
)或JPanel
(已实施FlowLayout
)而不会出现任何问题(与{{1相比)使用Canvas
必须将方法Java6/7
更改为paint(AWT Component)
,更多信息在Graphics(2D)
在paintComponent(Swing JComponent)
中使用Canvas
是有原因的,例如需要访问来自21th century
的资源的高性能或硬图形代码,例如Native OS
,CAD / CAM
的图片和基于3D
的图片,OpenGL/CL
使用Swing Timer代替普通multimedia players