我应该如何在 JLabel 下面添加 JButtons 的 GridLayout?
How should I be adding a GridLayout of JButtons below a JLabel?
所以,我正在为我的 Java class 做一个项目。 objective 是创建一个基本的 GUI 程序,将 Hello World 显示为字符串,并提供四个用于操作字符串的按钮。像这样:example
我什至还没有接触到程序的操作部分,因为无论我尝试什么,我似乎都无法正确格式化我的 window。
我能够让我的四个按钮显示出来,但是我为了让 JLabel 在按钮上方显示 Hello World 所做的一切都让我完全失败了。
这看起来非常简单,所以恐怕我遗漏了一些明显的东西。我在网上搜索了一个星期,发现了很多关于如何从理论上做到这一点的信息,所以据我所知,这一定是我的语法问题。
到目前为止,我还没有找到一个可以按照我需要做的事情做任何事情的实现。这让我发疯,无论如何我都会超过我的预产期。我只需要一个答案!非常感谢任何能为我指明正确方向的人!
这是我当前形式的代码。我觉得我已经接近这个了,但是当 运行 时它 returns 是控制台的一个例外。再次感谢所有帮助!
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 b = new ButtonGrid();
ButtonGrid 不是class,它是HelloWorldclass的一个方法,returns是JPanel
.
的一个实例
因此您需要创建 HelloWorld
class 的实例,以便您可以调用方法:
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,我也能够解决我遇到的其他一些问题。
我很高兴地报告,该项目已完成并在大约一个小时内上交。再次,非常感谢!!
所以,我正在为我的 Java class 做一个项目。 objective 是创建一个基本的 GUI 程序,将 Hello World 显示为字符串,并提供四个用于操作字符串的按钮。像这样:example
我什至还没有接触到程序的操作部分,因为无论我尝试什么,我似乎都无法正确格式化我的 window。
我能够让我的四个按钮显示出来,但是我为了让 JLabel 在按钮上方显示 Hello World 所做的一切都让我完全失败了。
这看起来非常简单,所以恐怕我遗漏了一些明显的东西。我在网上搜索了一个星期,发现了很多关于如何从理论上做到这一点的信息,所以据我所知,这一定是我的语法问题。
到目前为止,我还没有找到一个可以按照我需要做的事情做任何事情的实现。这让我发疯,无论如何我都会超过我的预产期。我只需要一个答案!非常感谢任何能为我指明正确方向的人!
这是我当前形式的代码。我觉得我已经接近这个了,但是当 运行 时它 returns 是控制台的一个例外。再次感谢所有帮助!
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 b = new ButtonGrid();
ButtonGrid 不是class,它是HelloWorldclass的一个方法,returns是JPanel
.
因此您需要创建 HelloWorld
class 的实例,以便您可以调用方法:
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,我也能够解决我遇到的其他一些问题。
我很高兴地报告,该项目已完成并在大约一个小时内上交。再次,非常感谢!!