如标题中所述。我使用BorderLayout()
将两个JPanel一个放在另一个上面。
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掀起)
答案 0 :(得分:11)
尝试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);
答案 1 :(得分:2)
当你设置setPreferredSize时,布局管理器将使它们两个面板总是高400像素。如果您希望面板始终是框架高度的一半,则不要设置首选尺寸。如果这不起作用,那么您可以尝试将面板的高度设置为(myFrame.getSize().height) / 2
,这将是框架高度的一半。