0

次のコードがありますが、JPanelが表示されません。理由がわかりません。理由がわかりますか?私が見るのは黒い背景のJFrameだけです

public class ShapeFrame extends JFrame 
{
    private JPanel outlinePanel;

    public ShapeFrame(LinkedList<Coordinate> list)
    {
        super("Outline / Abstract Image");
        setSize(950, 500);
        setLayout(null);
        setBackground(Color.BLACK);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel outlinePanel = new JPanel();
        outlinePanel.setBackground(Color.WHITE);
        outlinePanel.setBorder(null);
        outlinePanel.setBounds(50, 50, 400, 400);
        add(outlinePanel);


//      abstractPanel = new JPanel();
//      abstractPanel.setBackground(Color.WHITE);
//      abstractPanel.setBounds(500, 50, 400, 400);
//      add(abstractPanel);
    }
4

1 に答える 1

2

私が得るのは、白い四角が入ったフレームだけです...

getContentPane().setBackground()フレームの背景を設定するために使用する必要があります

フレームはレイヤーで構成されています。通常、表示されるコンテンツは、フレームを覆うコンテンツペインに(ほとんどの場合自動的に)追加されます。

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

(Java Trailsから借用した写真)

したがって、フレームの背景を設定しても効果がないように「表示」されます。

コードを使用しています...

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

使用するgetContent().setBackground(...)

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

これは私があなたのコードをテストするために使用したコードです...

public class BadLayout01 {

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

    public BadLayout01() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                ShapeFrame shapeFrame = new ShapeFrame();
                shapeFrame.setSize(525, 525);
                shapeFrame.setVisible(true);

            }
        });
    }

    public class ShapeFrame extends JFrame {

        private JPanel outlinePanel;

        public ShapeFrame() {
            super("Outline / Abstract Image");
            setSize(950, 500);
            setLayout(null);
            getContentPane().setBackground(Color.BLACK);
//            setBackground(Color.BLACK);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JPanel outlinePanel = new JPanel();
            outlinePanel.setBackground(Color.WHITE);
            outlinePanel.setBorder(null);
            outlinePanel.setBounds(50, 50, 400, 400);
            add(outlinePanel);


//      abstractPanel = new JPanel();
//      abstractPanel.setBackground(Color.WHITE);
//      abstractPanel.setBounds(500, 50, 400, 400);
//      add(abstractPanel);
        }
    }
}
于 2012-11-06T03:24:20.947 に答える