2012-08-08 40 views
0

我正在用Java进行游戏。我发现这个教程: http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418试图不要混合Swing和AWT

它显示了如何做主动渲染。他们使用画布来绘画。直到现在,我一直在使用JPanel。不过,我想切换到这种方法。现在,我有几个JPanel和一些JButton添加到JPanels。我想知道是否应该切换到java.awt.Button和java.awt.Panel,以便我不混合Swing和AWT组件。

另一方面,在教程中,Canvas是在JFrame中的,所以不是已经混合了Swing和AWT?可以吗?

谢谢。

回答

3

您应该只使用Swing组件。例如。您应该从ButtonJButton以及所有替换控件。

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 

但有些方面是共同的AWTSwing如事件处理和布局MGMT是常见之间的两个以及

3
  • 你可以使用JComponent(还没有实现LayoutManager)或JPanel (实施FlowLayout)与Java6/7

  • 编号的绘画没有任何问题(与Canvas比较)

    必须改变方法paint(AWT Component)paintComponent(Swing JComponent),更在路径Graphics(2D)

  • 有原因在21th century使用Canvas,例如用于该要求,从Native OS附带的资源的访问的高性能比较或硬图形代码,例如图形CAD/CAM3D和图形基于OpenGL/CLmultimedia players

  • Swing Timer使用而不是纯Thread

  • 使用KeyBindings代替KeyListener