我尝试使用gridlayout格式化我的Java GUI,但我不知道从哪里开始格式化它。我没有足够的声誉提供图片,但我希望我的GUI在左边显示一个8x8网格,在右边显示一些JLabel。我该怎么做呢?
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import javax.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.imageio.*;
public class ButtonGrid {
JFrame frame=new JFrame(); //creates frame
JButton[][] grid; //names the grid of buttons
JLabel message;
public ButtonGrid(int width, int length){
frame.setLayout(new GridLayout(width,length)); //set layout
grid=new JButton[width][length]; //size of grid
int square =0;
for(int y=0; y<length; y++){
for(int x=0; x<width; x++){
String squareString = String.valueOf(square);
grid[x][y]=new JButton(squareString); //makes newbutton
frame.add(grid[x][y]); //adds button to grid
square++;
}
}
message = new JLabel("program is messing up");
frame.add(message);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack(); //sets appropriate size for frame
frame.setVisible(true); //makes frame visible
}
public static void main(String[] args) {
new ButtonGrid(8,8);//makes new ButtonGrid with 2 parameters
}
}
所以你们给予的任何帮助都会非常感激。
答案 0 :(得分:1)
GridLayout
对于你想要空间的东西来说是出了名的坏事。你最好的选择是GridBagLayout
(但这对于像这样的简单东西来说过于复杂),或者将你的视图嵌套在其他框架中。您可以将所有这些按钮放在一个框架(称为frameA
)上,使用GridLayout
,就像现在一样,然后将frameA
添加到frameB
(父框架)。您可以将JLabel
添加到frameB
,并保证不会弄乱按钮。您可以使用简单的BorderLayout
作为frameB
或网格,或任何其他布局,具体取决于您的需要。就个人而言,我认为将内容嵌入更多帧中要容易得多,因为它使布局变得更加简单。希望有所帮助!