Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中向GUI添加工具栏_Java_User Interface_Jframe_Containers - Fatal编程技术网

在JAVA中向GUI添加工具栏

在JAVA中向GUI添加工具栏,java,user-interface,jframe,containers,Java,User Interface,Jframe,Containers,我正在下国际象棋。我有JFrame,其中有容器,其中包括JLabel字段的2d数组。现在我想在我的窗口中添加一个工具栏,但当我想这样做时,我的棋盘就碎了。这是一张我的棋盘窗口是什么样子的图片。我想在窗口顶部添加工具栏,在那里我可以保存/加载游戏…等等 此外,我想添加到右边的一些面板,我可以看到以前的行动。我想知道如何做到这一点而不破坏我的棋盘。 这是我的密码: public class GUI extends JFrame implements Serializable{ public voi

我正在下国际象棋。我有JFrame,其中有容器,其中包括JLabel字段的2d数组。现在我想在我的窗口中添加一个工具栏,但当我想这样做时,我的棋盘就碎了。这是一张我的棋盘窗口是什么样子的图片。我想在窗口顶部添加工具栏,在那里我可以保存/加载游戏…等等 此外,我想添加到右边的一些面板,我可以看到以前的行动。我想知道如何做到这一点而不破坏我的棋盘。 这是我的密码:

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);
}

您可以使用两个面板,一个用于工具栏,另一个面板作为主游戏面板

因此,在您的GUI类中,将布局设置为BorderLayout,并添加带有NORTH约束的工具栏面板和带有CENTER约束的游戏面板。比如:

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);

您可以在内容窗格中设置一个
BorderLayout
,将工具栏添加到北部,将另一个包含标签的面板添加到中部

    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);
setTitle(“象棋游戏”);
setDefaultCloseOperation(JFrame.DO\u NOTHING\u ON\u CLOSE);
ImageIcon img=新的ImageIcon(“pieceImages/whiteKing.png”);
contentPane=getContentPane();
setLayout(新的BorderLayout());
工具栏=新工具栏();
JPanel labelsPanel=新的JPanel();
GridLayout=新的GridLayout(8,8);
labelsPanel.setLayout(网格布局);
对于(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
labels[i][j]=新的JLabel(game.getBoard()[i][j].getImagePath());
添加(标签[i][j]);
}
}
添加(工具栏,BorderLayout.NORTH);
添加(labelsPanel,BorderLayout.CENTER);
setIconImage(img.getImage());
可设置大小(假);
设置大小(600600);
setLocationRelativeTo(空);
setVisible(真);

还请注意,您可以使用,请参见

是否可以包含完整的SSCCE?您没有显示将工具栏添加到应用程序的代码。
    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);