2016-04-19 16 views
1

私はチェスゲームに取り組んでいます。私はJLrameフィールドの2次元配列を含むコンテナを持っているJFrameを持っています。今私はツールバーを私のウィンドウに追加したいと思うが、私がそれをしたいとき、私のチェス盤は崩壊する。これはチェス盤付きの私の窓がどのようにWindowのように見えるかの写真です。私は、ウィンドウの上部にツールバーを追加したいと思います。例えば、ゲームを保存/ロードすることができます。 また、私は以前の動きを見ることができるいくつかのパネルを右側に追加したいと思います。私はチェス盤を破壊することなくそれを行う方法を知りたいです。ここ は私のコードです:JAVAのGUIにツールバーを追加する

public class GUI extends JFrame implements Serializable{ 
public void initGUI() { 
    setTitle("Chess game"); 
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
    ImageIcon img = new ImageIcon("pieceImages/whiteKing.png"); 
    contentPane = getContentPane(); 
    GridLayout gridLayout = new GridLayout(8, 8); 
    contentPane.setLayout(gridLayout); 
    for (int i = 0; i < 8; i++) { 
     for (int j = 0; j < 8; j++) { 
      labels[i][j]=new JLabel(game.getBoard()[i][j].getImagePath()); 
      contentPane.add(labels[i][j]); 
     } 
    } 
    setIconImage(img.getImage()); 
    setResizable(false); 
    setSize(600, 600); 
    setLocationRelativeTo(null); 
    setVisible(true); 
} 

私はそれは次のようになりますどのようにいくつかのJPanelの提案を作成しました:あなたがメインのゲームとして二つのパネル、ツールバー用と他のパネルを使用することができます

public class Toolbar extends JPanel implements Serializable { 
    public Toolbar(){ 
     JButton newGameBtn = new JButton("New game"); 
     JButton regretBtn = new JButton("Regret move"); 
     add(newGameBtn); 
     add(regretBtn); 
    } 
} 
+0

は、あなたが完全SSCCEを含めることができます参照してください、あなたはJToolBarを使用できることに注意してください?アプリケーションにツールバーを追加するコードは表示されませんでした。 – Timmos

答えて

2

は、北にツールバーを追加し、別のパネルが中央に、ラベルを保持しています。

setTitle("Chess game"); 
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
    ImageIcon img = new ImageIcon("pieceImages/whiteKing.png"); 
    contentPane = getContentPane(); 

    contentPane.setLayout(new BorderLayout()); 

    Toolbar toolbar = new Toolbar(); 

    JPanel labelsPanel = new JPanel(); 

    GridLayout gridLayout = new GridLayout(8, 8); 
    labelsPanel.setLayout(gridLayout); 
    for (int i = 0; i < 8; i++) { 
     for (int j = 0; j < 8; j++) { 
      labels[i][j]=new JLabel(game.getBoard()[i][j].getImagePath()); 
      labelsPanel.add(labels[i][j]); 
     } 
    } 

    contentPane.add(toolbar, BorderLayout.NORTH); 
    contentPane.add(labelsPanel, BorderLayout.CENTER); 

    setIconImage(img.getImage()); 
    setResizable(false); 
    setSize(600, 600); 
    setLocationRelativeTo(null); 
    setVisible(true); 

はまたHow to Use Tool Bars

0

パネル。

したがって、GUIクラスでレイアウトをBorderLayoutとして設定し、ツールバーパネルにNORTH制約を追加し、ゲームパネルにCENTER制約を追加します。以下のようなもの:あなたがコンテンツペインにBorderLayoutを設定することができ

JFrame frame = new JFrame(); 
      frame.setTitle("Chess game"); 
      frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
      Container contentPane = frame.getContentPane(); 
      contentPane.setLayout(new BorderLayout()); 
      JPanel toolbar = new JPanel(); // stablish any layout... 
      toolbar.add(new JButton("Save")); 
      // add the rest of the buttons... 

      JPanel game = new JPanel(); // this is your current contentPane 
      GridLayout gridLayout = new GridLayout(8, 8); 
      game.setLayout(gridLayout); 
      game.add(new JButton("Any Component")); 
      game.add(new JButton("Any other Component")); 

      contentPane.add(toolbar, BorderLayout.NORTH); 
      contentPane.add(game, BorderLayout.CENTER); 
関連する問題