Стараясь не смешивать 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