【问题标题】:How do I position two JButtons at PAGE_END with BorderLayout without them overlapping?如何使用 BorderLayout 在 PAGE_END 处放置两个 JButton 而不会重叠?
【发布时间】:2013-08-04 04:52:54
【问题描述】:

所以我希望按钮 Select 位于按钮 Back 上方,并且我不希望它们相互重叠。但是当我将它们都设置为PAGE_END 时,它们会重叠。我该如何解决这个问题?

这是问题的代码:

public void methodName() {
    JPanel controls = new JPanel(new BorderLayout(5,5));
    final CardLayout cl = new CardLayout();
    final JPanel panel = new JPanel(cl);
    controls.add(panel);
    this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEADING));        
    list = new JList<Object>(objectName);
        list.setVisibleRowCount(7);
        select = new JButton("Select");
        back = new JButton("Back");
        select.addActionListener(this);
        controls.add(new JScrollPane(list));
        controls.add(select, BorderLayout.PAGE_END);
        controls.add(back, BorderLayout.PAGE_END);
        controls.setBorder(new EmptyBorder(25,25,0,0));
        add(controls);
        refreshFrame();
}

下面是当它们都被添加但重叠时的样子:

这就是我想要的样子:

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: java swing positioning jbutton border-layout


    【解决方案1】:

    像这样使用 GridLayout 将 2 JButtons 放在新的 JPanel

    JPanel basePanel = new JPanel(new GridLayout(0, 1, 0, 3));
    basePanel.add(select);
    basePanel.add(back);
    controls.add(basePanel, BorderLayout.PAGE_END);
    

    GridLayout 可以在其constructor 中的按钮之间提供垂直间隙,如您的问题所示

    【讨论】:

    • 用这个代替BorderLayout?
    【解决方案2】:

    使用 gridLayout(2,1) 创建一个新的 jpanel,然后将两个按钮添加到 jpanel,然后将 Jpanel 添加到 Jframe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2012-12-13
      • 2021-01-21
      • 2014-09-06
      • 2011-05-15
      • 1970-01-01
      • 2015-10-15
      • 2015-05-17
      相关资源
      最近更新 更多