【问题标题】:How to have two JPanels which always take up half the screen each, split horizontally?如何让两个始终占据屏幕一半的 JPanel 水平拆分?
【发布时间】:2012-07-22 07:43:54
【问题描述】:

如标题中所述。我有两个 JPanel,一个在另一个之上,使用 BorderLayout()

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

public class myForm(){
    public static void main(String[] args) {       
        JFrame myFrame = new JFrame("SingSong");
        myFrame.setLocation(100,100);
        myFrame.setSize(new Dimension(1024,800));
        myFrame.setLayout(new BorderLayout());
        JPanel jp = new JPanel();
        jp.setBackground(new Color(0x00FF00FF));
        JPanel jp2 = new JPanel(new BorderLayout());
        jp2.setBackground(new Color(0x00000000));

        jp.setPreferredSize(new Dimension(100,400));
        jp2.setPreferredSize(new Dimension(100,400));
        jp2.setLocation(0, 512);

        myFrame.add(jp2, BorderLayout.SOUTH);
        myFrame.add(jp, BorderLayout.NORTH);
    }
}        

它们各占一半,但我怎样才能设置它,使它们总是占 JFrame 的一半,即使在调整大小时也是如此? (P.S. 我通常使用更好的变量名,我只是将其作为 SSCCE 进行)

【问题讨论】:

  • 使用单列GridLayout
  • 如果你把 sn-p 塞进一个 main 方法,它就可以工作。为了将来参考,我需要包含主要方法和类声明吗?
  • SSCCE 上做得很好。 :) +1
  • @AndrewThompson 现在我知道了。我已经把它修好了,希望这能让你的一天变得愉快,先生:D xo

标签: java swing jpanel


【解决方案1】:

试试GridLayout

JFrame myFrame = new JFrame("SingSong");
myFrame.setLocation(100, 100);
myFrame.setSize(new Dimension(1024, 800));

GridLayout layout = new GridLayout(2, 1);
myFrame.setLayout(layout);

JPanel jp = new JPanel();
jp.setBackground(new Color(0x00FF00FF));

JPanel jp2 = new JPanel(new BorderLayout());
jp2.setBackground(new Color(0x00000000));

myFrame.add(jp);
myFrame.add(jp2);

myFrame.setVisible(true);

【讨论】:

  • 我领先你 5 秒。 ;) 但是 +1。
  • 嗯?你在我的评论和你的答案之间的 5 秒内输入了整个答案?
  • 是的,在键盘上而不是在 ipad 上:P 实际上,复制和粘贴
【解决方案2】:

当您设置PreferredSize 时,布局管理器将使两个面板的高度始终为400 像素。如果您希望面板始终为框架高度的一半,则不要设置首选尺寸。如果这不起作用,那么您总是可以尝试将面板的高度设置为(myFrame.getSize().height) / 2,这将是框架高度的一半。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多