Java GUI:我似乎无法添加JLabel而不会弄乱我的GridLayout?

时间:2014-06-28 08:03:06

标签: java user-interface grid-layout

我尝试使用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
    }
}

所以你们给予的任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

GridLayout对于你想要空间的东西来说是出了名的坏事。你最好的选择是GridBagLayout(但这对于像这样的简单东西来说过于复杂),或者将你的视图嵌套在其他框架中。您可以将所有这些按钮放在一个框架(称为frameA)上,使用GridLayout,就像现在一样,然后将frameA添加到frameB(父框架)。您可以将JLabel添加到frameB,并保证不会弄乱按钮。您可以使用简单的BorderLayout作为frameB或网格,或任何其他布局,具体取决于您的需要。就个人而言,我认为将内容嵌入更多帧中要容易得多,因为它使布局变得更加简单。希望有所帮助!