如何通过将BoxLayout更改为不同的LayoutManager来改进GUI?

时间:2012-11-19 13:15:48

标签: java swing awt layout-manager boxlayout

我在Java中使用Swing存在一个大问题,我使用了BoxLayout,但它仍然看起来很糟糕。 有关我使用布局的任何建议,或者如何将其更改为假设? (here are assumptions

Container main = new Container();
    Container left = new Container();// here goin buttons
    Container right = new Container(); // here goin tabs +  more buttons, textfields and other stuff

    BoxLayout lewyL = new BoxLayout(left, BoxLayout.Y_AXIS);
    left.setLayout(lewyL);
    left.add(rastrowa); //radiobutton
    left.add(wektorowa);//radiobutton
    left.add(apDwuliniowa);//checkbox
    left.add(wczytaj);//button
    left.add(zapisz);//obutton
    left.add(wyczysc);//button
    BoxLayout prawyL = new BoxLayout(right, BoxLayout.Y_AXIS);
    right.setLayout(prawyL);
    right.add(zakladki);// tabs (mostly i use BoxLayout but for last one i need something more "complicated")
编辑:我几乎解决了这个问题,我需要将所有元素移到左边(how it look like),但我不知道如何; /这是这个类的构造函数。

            JLabel label = new JLabel("O wektor");
    JLabel labelA = new JLabel("a:");
    JLabel labelB = new JLabel("b:");
    JButton wykonaj = new JButton("Wykonaj");
    JTextField a = new JTextField(5);
    JTextField b = new JTextField(5);
    add(label);
    add(labelA);
    add(a);
    add(labelB);
    add(b);
    add(wykonaj);   

1 个答案:

答案 0 :(得分:1)

它的外观(在我看来)没有任何问题,但是如果你希望它看起来好一点,为什么不把左面板(6x1)转换为3x2面板,带有复选框/左侧的radiobuttons和右侧的按钮?听起来像是GridLayout的工作 - 我最喜欢的课程之一......

JPanel leftPanel = new JPanel(new GridLayout(3,2));
leftPanel.add(rastrowa);     //radiobutton
leftPanel.add(wczytaj);      //button
leftPanel.add(wektorowa);    //radiobutton
leftPanel.add(zapisz);       //obutton
leftPanel.add(apDwuliniowa); //checkbox
leftPanel.add(wyczysc);      //button

请注意,3,2定义行数,列数。添加面板时,它们会从左到右,从上到下添加到网格中。 GridLayout也会自动调整组件的大小,因此所有按钮等都具有相同的宽度和高度,使其看起来更加一致。

GridLayout documentation可能很有用,Visual Guide to Layout Managers是查看其他布局管理器的好地方,这些布局管理器可能更适合您的不同情况。我个人认为BorderLayoutGridLayout是最有用的,并且覆盖了我用于GUI的95%的情况。