0

Javaでゲームを作っています。このチュートリアルを見つけました: http://www.gamedev.net/page/resources/_/technical/general-programming/java-games-active-rendering-r2418

アクティブ レンダリングを行う方法を示します。Canvas を使用してペイントします。この時点まで JPanel を使用してきました。ただし、この方法に切り替えたいと思います。これで、いくつかの JPanel と、いくつかの JButton が JPanels に追加されました。Swing コンポーネントと AWT コンポーネントを混在させないように、代わりに java.awt.Button と java.awt.Panel に切り替える必要があるかどうかを知りたいです。

一方、チュートリアルでは Canvas は JFrame の中にあるので、すでに Swing と AWT が混在しているのではないでしょうか? それは大丈夫ですか?

ありがとう。

4

2 に答える 2

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  

ただし、いくつかの側面は両方に共通でありAWTSwingたとえば、イベント処理とレイアウト管理は2つにも共通です。

于 2012-08-08T19:50:22.887 に答える
3
  • でコンパイルされたコードでペイントするために、(実装さJComponentれていないLayoutManager) またはJPanel(実装されているFlowLayout) を (と比較して) 問題なく使用できます。CanvasJava6/7

  • paint(AWT Component)メソッドをに変更する必要がありpaintComponent(Swing JComponent)ます。詳細については、Graphics(2D)を参照してください。

  • Canvasで を使用する理由があり21th centuryますNative OS。たとえば、 のグラフィックCAD / CAM3DOpenGL/CLmultimedia players

  • プレーンの代わりにスイングタイマーを使用するThread

  • KeyListenerの代わりにKeyBindingsを使用する

于 2012-08-08T20:52:45.873 に答える