7

タイトルで説明したとおりです。を使用して、2 つの 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 の半分を占めるように設定するにはどうすればよいでしょうか? (PS私は通常、より良い変数名を使用していますが、それをSSCCEとしてホイップしました)

4

2 に答える 2

12

を試す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);
于 2012-07-24T02:35:58.010 に答える
2

PreferredSize を設定すると、レイアウト マネージャーは、両方のパネルが常に 400 ピクセルの高さになるようにします。パネルを常にフレームの高さの半分にしたい場合は、優先サイズを設定しないでください。それでもうまくいかない場合は、パネルの高さを(myFrame.getSize().height) / 2フレームの半分の高さに設定してみてください。

于 2012-07-24T02:43:27.780 に答える