1

FlowLayoutを使用して2つのJPanelが挿入されたJFrameを作成しようとしています。フレームを別のファイルで初期化していますが、これが私が呼んでいるものです

public class FlowInFlow extends JFrame
{
public FlowInFlow() {

    setLayout(new FlowLayout());

    JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
    panel1.setBackground(Color.RED);

    JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    panel2.setBackground(Color.BLUE);   

}
}

編集:これを実行すると、2つのボックスを並べて表示する必要があるときに、空白のボックスが表示されます

4

2 に答える 2

5

すでに述べたように、aのデフォルトの推奨サイズJPanelは0x0です...

つまり、のようなレイアウトに追加すると、FlowLayoutは希望のサイズを使用し、表示されます...まあ...表示されません

ここに画像の説明を入力してください

public class TestFlowLayout {

    public static void main(String[] args) {
        new TestFlowLayout();
    }

    public TestFlowLayout() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JPanel master = new JPanel(new FlowLayout(FlowLayout.LEFT));
                JPanel left = new JPanel();
                left.setBackground(Color.RED);
                left.add(new JLabel("Lefty"));

                JPanel right = new JPanel();
                right.setBackground(Color.BLUE);
                right.add(new JLabel("Righty"));

                master.add(left);
                master.add(right);

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(master);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
于 2012-11-01T03:43:52.483 に答える
4

外側のレイアウトを変更するためのアドバイスに加えて、これらのコンポーネントは何にも追加されていませんでした(したがって、表示されることはありません)。

グリッド内の赤/青のフロー

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

public class FlowInGrid extends JFrame  {

    public FlowInGrid() {

        setLayout(new GridLayout(1,0));

        JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel1.setBackground(Color.RED);
        // ADD Them to something!
        add(panel1);

        JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        panel2.setBackground(Color.BLUE);   
        // ADD Them to something!
        add(panel2);
    }

    public static void main(String[] args) throws Exception {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                JFrame f = new FlowInGrid();
                f.setSize(300,100);
                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
于 2012-11-01T03:41:51.283 に答える