2012-08-08 81 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