3

是否可以在 Gridlayout 中垂直添加组件?我的意思是上一个之上的下一个?

谢谢

4

3 回答 3

3

不,没有布局可以让你从下往上垂直堆叠,至少我知道。如果您想要垂直堆叠,您可以使用GridLayout带有单列的 a 或BoxLayout带有垂直轴的 a。通过嵌套面板和组合布局,您应该可以轻松获得所需的内容,例如,具有垂直布局的面板都布置在水平容器中。

于 2012-01-16T04:49:38.887 回答
3

BoxLayout 和 GridLayout 等布局在您使用时会从上到下显示组件:

panel.add( someComponent );

但你总是可以使用:

panel.add(someComponent, 0);

在顶部插入组件。

于 2012-01-16T05:13:54.523 回答
1

虽然这个答案与网格布局无关,但我强烈建议使用 JGoodies 表单布局。其高度灵活。http://www.jgoodies.com/freeware/forms/index.html

                          /* 1                    2      3       4    5                   6     7      8       9*/      
            String col1 = "left:max(20dlu;pref), 3dlu, 70dlu, 15dlu,left:max(10dlu;pref),10dlu, 70dlu, 70dlu, 70dlu";
                          /* 1   2     3   4  5   6    7   8    */
            String row1 = "  p, 5dlu, p, 3dlu, p, 5dlu, p, 9dlu, ";
            FormLayout layout = new FormLayout( col1, row1 + row2 + row3 + row4 + row5 + row6);

            JPanel panel = new JPanel(layout); 
             panel.setBorder(Borders.DIALOG_BORDER);

            // Fill the table with labels and components.
            CellConstraints cc = new CellConstraints();
            panel.add(createSeparator("Registration Information"), cc.xyw(1, 1, 7));
            panel.add(new JLabel("Patient ID"), cc.xy(1, 3));
            panel.add(pid, cc.xyw(3, 3, 1));
            panel.add(new JLabel("Date and Time"), cc.xy(5, 3));

您可以编写代码以在设计的已定义布局中的任何位置绘制每个组件,即 wrt 到 col 和 rows。甚至垂直排列。 阅读白皮书:http ://www.jgoodies.com/articles/forms.pdf

于 2012-01-16T05:02:08.323 回答