8

こんにちは、みなさん。ボタンとラベルが付いたswing GUIを作ろうとしています。私はボーダーレイアウトを使用しており、ラベル(北のフィールド)はうまく表示されますが、ボタンはフレームの残りの部分を占めています(中央のフィールドにあります)。これを修正する方法はありますか?

4

3 に答える 3

13

ボタンを別のパネルに追加してから、そのパネルをフレームに追加する必要があります。

BorderLayout は、コンポーネントが真ん中にあるものを展開することがわかりました

コードは次のようになります。

public static void main( String [] args ) {
    JLabel label = new JLabel("Some info");
    JButton button = new JButton("Ok");

    JFrame frame = ... 

    frame.add( label, BorderLayout.NORTH );
    frame.add( button , BorderLayout.CENTER );
    ....

}

次のように変更します。

public static void main( String [] args ) {
    JLabel label = new JLabel("Some info");
    JButton button = new JButton("Ok");
    JPanel panel = new JPanel();
     panel.add( button );

    JFrame frame = ... 

    frame.add( label, BorderLayout.NORTH );
    frame.add( panel , BorderLayout.CENTER);
    ....

}

ビフォアーアフター

前 http://img372.imageshack.us/img372/2860/beforedl1.png 後 http://img508.imageshack.us/img508/341/aftergq7.png

于 2008-11-22T23:05:57.590 に答える
3

または、絶対レイアウトを使用してください。レイアウト パレットにあります。

または、次のように有効にします。

frame = new JFrame();
... //your code here

// to set absolute layout.
frame.getContentPane().setLayout(null);

このように、コントロールを好きな場所に自由に配置できます。

于 2013-03-12T21:37:31.927 に答える
0

また :)


    import javax.swing.*;

    public class TestFrame extends JFrame {
        public TestFrame() {
            JLabel label = new JLabel("Some info");
            JButton button = new JButton("Ok");
            Box b = new Box(BoxLayout.Y_AXIS);
            b.add(label);
            b.add(button);
            getContentPane().add(b);

        }
        public static void main(String[] args) {
            JFrame f = new TestFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);

        }
    }
于 2008-11-25T15:16:31.607 に答える