【问题标题】:Issues with GridLayout not workingGridLayout 无法正常工作的问题
【发布时间】:2012-06-04 00:11:53
【问题描述】:

我正在尝试为我正在开发的会员计​​划创建一个包含 4 个按钮的 2x2 网格。我遇到的问题是,无论我做什么,它都只是显示为 1x4 网格。代码如下。

    private void buildStartupPanel()
{
    startup = new JPanel();
    startup.setLayout(new GridLayout(2,2));
    addMember = new JButton ("Add a new member");
    removeMember = new JButton ("remove Member");
    reviewMember = new JButton ("Review a Member");
    reviewAll = new JButton ("Review All Members");
    startup.add(addMember);
    startup.add(removeMember);
    startup.add(reviewMember);
    startup.add(reviewAll);
    addMember.addActionListener(this);
    removeMember.addActionListener(this);
    reviewMember.addActionListener(this);
    reviewAll.addActionListener(this);
}

当我输出结果时,它显示以下内容

添加新成员

删除成员

评价会员

查看所有成员

代替

添加新成员删除成员

审查一个成员审查所有成员

另外,如果有人可以帮我在每个按钮之间留一个空格,那就太好了!

【问题讨论】:

标签: java swing awt layout-manager grid-layout


【解决方案1】:

使用第 3 和第 4 int 到构造函数的间距。否则,似乎在这里工作得很好:

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

public class StartupPanel {

    private JComponent getStartupPanel()
    {
        JPanel startup = new JPanel();
        startup.setLayout(new GridLayout(2,2,50,5));
        JButton addMember = new JButton("Add a new member");
        JButton removeMember = new JButton("remove Member");
        JButton reviewMember = new JButton("Review a Member");
        JButton reviewAll = new JButton("Review All Members");
        startup.add(addMember);
        startup.add(removeMember);
        startup.add(reviewMember);
        startup.add(reviewAll);

        return startup;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                StartupPanel sp = new StartupPanel();
                JOptionPane.showMessageDialog(null, sp.getStartupPanel());
            }
        });
    }
}

【讨论】:

  • +1:一个关键的区别:JOptionPane 调用pack(); OP的代码可能不会。
  • @trashgod 1) 在我们看到 SSCCE 之前,我们无法确定 OP 的代码做了什么 - 它可能会在添加构造面板后立即调用 pack()。 2)我在一个固定尺寸但没有包装的框架中快速尝试了它。相同的 2x2 效果。 -- 话虽如此,我一生都无法理解为什么 OP 会看到单列 4 个按钮。
  • SSCCE 是对的;我推测明显的“1x4 网格”可能反映了JPanel 的(默认)FlowLayout
【解决方案2】:

感谢您的回复!来发现这是我添加到代码中的第二个面板拼写错误(哇塞)并且把所有东西都扔掉了。猜猜这就是发布完整的 SSCCE 的重要性。至少我学会了如何做间距!谢谢大家!

【讨论】:

  • 很抱歉没有接受安德鲁之前的答案。我是应用程序开发领域的新手,甚至是 StackOverflow 的新手。我已经接受了你的回答。谢谢你的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2020-08-09
相关资源
最近更新 更多