Стараясь не смешивать Swing и AWT

Я делаю игру на Java. Я нашел этот учебник: http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418

Это показывает, как сделать активный рендеринг. Они используют холст для рисования. Я использовал JPanel до этого момента; Однако я хотел бы перейти на этот метод. Теперь у меня есть несколько JPanels и несколько JButtons, добавленных в JPanels. Я хотел бы знать, должен ли я переключиться на java.awt.Button и java.awt.Panel, чтобы я не смешивал компоненты Swing и AWT.

С другой стороны, в этом уроке Canvas находится внутри JFrame, разве это уже не смешивает Swing и AWT? Все хорошо?

Благодарю.

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 например, обработка событий и расположение mgmt одинаковы для двух

  • Вы можете использовать JComponent (не реализовано LayoutManager) или же JPanel (реализованный FlowLayout) без каких-либо проблем (по сравнению с Canvas) для рисования с кодом, скомпилированным в Java6/7

  • должен изменить метод paint(AWT Component) к paintComponent(Swing JComponent) Графика (2D)

  • Есть причины для использования Canvas в 21th centuryНапример, для высокопроизводительного или жесткого графического кода, который требует доступа к ресурсам, полученным из Native OSнапример, графика для CAD / CAM, 3D и графика на основе OpenGL/CL, multimedia players

  • используйте Swing Timer вместо простого Thread

  • использовать KeyBindings вместо KeyListener

Другие вопросы по тегам