0

panelFirst の境界が機能しないのはなぜですか? すべてを上部に表示するだけで、設定した順序で境界が表示されませんか? ラジオボタンは上下に表示され、次のボタンは右端に表示されるはずですが、機能していませんか?

    public MyWizard() {
        panelContainer.setLayout(c1);
        panelFirst.add(btNext);
        panelSecond.add(btNextTwo);
        panelFirst.setBackground(Color.BLUE);
        panelSecond.setBackground(Color.RED);
        panelThird.setBackground(Color.GREEN);
        panelContainer.add(panelFirst, "1");
        panelContainer.add(panelSecond,"2");
        panelContainer.add(panelThird,"3");
        c1.show(panelContainer, "1");           
        btNext.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                c1.show(panelContainer,"2");                    
            }               
        });

        btNextTwo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                c1.show(panelContainer,"3");                    
            }               
        });
        RadioButtons();
        Button();
        frame.add(panelContainer);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.pack();
        frame.setSize(600,360);
        frame.setVisible(true);
    }

    public void RadioButtons() {
        btLdap = new JRadioButton ("Ldap");
        btLdap.setBounds(60,85,100,20);
        panelFirst.add(btLdap);         
        btKerbegos = new JRadioButton ("Kerbegos");
        btKerbegos.setBounds(60,115,100,20);
        panelFirst.add(btKerbegos);         
        btSpnego =new JRadioButton("Spnego");
        btSpnego.setBounds(60,145,100,20);
        panelFirst.add(btSpnego);
                    btSaml2 = new JRadioButton("Saml2");
        btSaml2.setBounds(60,175,100,20);
        panelFirst.add(btSaml2);
    }

    public void Button() {
        btNext.setBounds(400,260,100,20);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MyWizard();
            }
        });
    }    
}
4

2 に答える 2

2

panelFirstが のようなものである (または から拡張されている)と仮定するとJPanel、レイアウト マネージャー (この場合はFlowLayout) の制御下に置かれます。

を避けsetBounds、代わりにレイアウト マネージャーに頼ることを強くお勧めします。setLocationsetSize

グラフィカル インターフェイスは、それぞれが独自のレンダリング プロパティを持つさまざまなプラットフォームで実行する必要があります。この問題を解決するために、Java/Swing/AWT の開発者はLayoutManagerAPI を設計しました。これにより、複数の異なるプラットフォームで動作する洗練されたユーザー インターフェイスの開発が容易になります。

Using Layout ManagersA Visual Guide to Layout Managers をご覧ください。

于 2013-08-07T00:10:39.603 に答える