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