Java 我应该如何在JLabel下面添加JButtons的GridLayout?

Java 我应该如何在JLabel下面添加JButtons的GridLayout?,java,swing,jlabel,layout-manager,grid-layout,Java,Swing,Jlabel,Layout Manager,Grid Layout,所以,我正在为我的Java类做一个项目。目标是创建一个基本的GUI程序,将Hello World显示为字符串,并提供四个按钮来操作字符串。大概是这样的: 我甚至还没有接触到程序的操作部分,因为无论我怎么做,我似乎都无法正确设置窗口的格式 我能够让我的四个按钮显示出来,但是我为了让JLabel在按钮上方显示Hello World而抛出的所有东西都让我彻底失败了 这似乎很简单,所以我恐怕有一些明显的东西我遗漏了。我在网上搜索了一周,从理论上找到了很多关于如何做到这一点的信息,所以从我的理解来看,这

所以,我正在为我的Java类做一个项目。目标是创建一个基本的GUI程序,将Hello World显示为字符串,并提供四个按钮来操作字符串。大概是这样的:

我甚至还没有接触到程序的操作部分,因为无论我怎么做,我似乎都无法正确设置窗口的格式

我能够让我的四个按钮显示出来,但是我为了让JLabel在按钮上方显示Hello World而抛出的所有东西都让我彻底失败了

这似乎很简单,所以我恐怕有一些明显的东西我遗漏了。我在网上搜索了一周,从理论上找到了很多关于如何做到这一点的信息,所以从我的理解来看,这一定是我的语法有问题

到目前为止,我还没有找到一个实现可以按照我需要做的做任何事情。这快把我逼疯了,不管怎样,我都要过我的预产期。我只需要有一个答案!非常感谢所有能为我指出正确方向的人

这是我的代码的当前形式。我觉得我已经接近这个目标了,但它在运行时会向控制台返回一个异常。再次感谢所有的帮助

import java.awt.*;
import javax.swing.*;

public class HelloWorld
{   
    private JButton uppercaseButton;
    private JButton lowercaseButton;
    private JButton phraseButton;
    private JButton resetButton;

    private JPanel grid;

    public JPanel ButtonGrid()
    {

        JPanel grid = new JPanel();

        grid.setLayout(new GridLayout(2, 2));
        uppercaseButton = new JButton("Uppercase");
        lowercaseButton = new JButton("Lowercase");
        phraseButton = new JButton("New Phrase");
        resetButton = new JButton("Reset");     

        grid.add(uppercaseButton);
        grid.add(lowercaseButton);
        grid.add(phraseButton);
        grid.add(resetButton);

        return grid;
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("THIS IS MY TITLE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel lbl = new JLabel("HELLO WORLD");
        lbl.setPreferredSize(new Dimension(175, 100));
        frame.getContentPane().add(lbl, BorderLayout.PAGE_START);

        ButtonGrid b = new ButtonGrid();
        b.setVisible( true );
        b.setSize( 300, 200 );
        frame.getContentPane().add(b, BorderLayout.CENTER);

        frame.pack();
        frame.setVisible(true);
    }

    public static void main( String[] args ){

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });

    }

}
ButtonGrid不是一个类,它是HelloWorld类的一个方法,返回
JPanel
的实例

因此,您需要创建
HelloWorld
类的实例,以便调用该方法:

HelloWord hw = new HelloWorld()
JPanel b = hw.ButtonGrid();
由于“buttonGrid”是一种方法,因此不应以大写字符开头,因此需要重命名该方法,然后使用:

//ButtonGrid b = new ButtonGrid();
HelloWord hw = new HelloWorld()
JPanel b = hw.buttonGrid();
ButtonGrid不是一个类,它是HelloWorld类的一个方法,返回
JPanel
的实例

因此,您需要创建
HelloWorld
类的实例,以便调用该方法:

HelloWord hw = new HelloWorld()
JPanel b = hw.ButtonGrid();
由于“buttonGrid”是一种方法,因此不应以大写字符开头,因此需要重命名该方法,然后使用:

//ButtonGrid b = new ButtonGrid();
HelloWord hw = new HelloWorld()
JPanel b = hw.buttonGrid();

感谢这两个建议为我指明了正确的方向

最终起作用的基本上是redxef首先提出的建议。Camickr进一步帮助了我,因为我认为我的方法是错误的。通过将这两个JPanel组合到第一个方法中并将其重命名为HelloWorld,我还能够解决一些其他问题


我很高兴地报告,结果,这个项目完成了,并在大约一个小时的空闲时间内交了上来。再一次,非常感谢

感谢这两条建议为我指明了正确的方向

最终起作用的基本上是redxef首先提出的建议。Camickr进一步帮助了我,因为我认为我的方法是错误的。通过将这两个JPanel组合到第一个方法中并将其重命名为HelloWorld,我还能够解决一些其他问题


我很高兴地报告,结果,这个项目完成了,并在大约一个小时的空闲时间内交了上来。再一次,非常感谢

使用一个GridLayout,它有1列和2行,然后添加JLabel。之后,添加另一个JPanel并将其布局管理器设置为另一个2x2的GridLayout。现在您只需要将4个按钮添加到JPanelHow about using a GridLayout(有1列和2行)中,然后添加JLabel。之后,添加另一个JPanel并将其布局管理器设置为另一个2x2的GridLayout。现在,您只需要将4个按钮添加到JPanelGlad中,这些建议会有所帮助。不要忘记通过点击复选标记来“接受”答案,这样人们就知道问题已经解决了。很高兴这些建议有所帮助。不要忘记点击复选标记“接受”答案,这样人们就知道问题已经解决了。