簡體   English   中英

在Java swing布局上需要幫助

[英]need help on java swing layout

下面是我添加標簽和文本字段的代碼。 我想添加它,使其2列中的[label] [textfield]

我知道我可以通過使用gridlayout來做到這一點,但是行數需要固定,因此有另一種方法可以添加它,無論我添加多少[label] [textfield],它都是2列

該圖顯示了預期的視圖

但目前是[label] [textfield] [label2] [textfield2] [label3] [textfield3]

  public WizardPage page1() {
           WizardPage page1 = new WizardPage("1", "Page 1") {
               {
                   JTextField txt1 = new JTextField();
                   JTextField txt2 = new JTextField();
                   JTextField txt3 = new JTextField();
                   JTextField txt4 = new JTextField();

                   txt1.setName("text1");
                   txt2.setName("text2");
                   txt3.setName("text3");
                   txt4.setName("text4");

                   txt1.setPreferredSize(new Dimension(50, 20));
                   txt2.setPreferredSize(new Dimension(50, 20));
                   txt3.setPreferredSize(new Dimension(50, 20));
                   txt4.setPreferredSize(new Dimension(50, 20));

                   add(new JLabel("text1"));
                   add(txt1);
                   add(new JLabel("text2"));
                   add(txt2);
                   add(new JLabel("text3"));
                   add(txt3);
                   add(new JLabel("text4"));
                   add(txt4);
               }
           };
           return page1;
       }



>    public WizardPage(String title, String description){
>        
>        PropertyConfigurator.configure("config/log4j.properties");
>        log = Logger.getLogger(WizardPage.class);
>       
>       _title = title;
>       _description = description;
>       
> 
>     setLayout(new FlowLayout()); );


      addContainerListener(new WPContainerListener());
      this.setDoubleBuffered(true);
   }

在此處輸入圖片說明

在網格中具有未指定行數的最簡單方法是使用GridLayout的行數為0:

setLayout(new GridLayout(0, 2));

這將導致2列,並根據需要添加行。 GridLayout的缺點是標簽和文本字段的寬度相同,這可能不是您想要的寬度。

另一個簡單的方法是嵌套布局:您可以將每個標簽+文本字段組合放置到JPanel中,然后根據需要繼續將這些面板添加到垂直BoxLayout中。 這兩者都不是完美無缺的,並且可以導致如下布局:

label | text
-----------------
long label | text

如果您需要一個可以使列和行的寬度不同的網格,請研究其他基於網格的布局: GridBagLayout隨標准庫一起提供,並且能夠使用這種網格,但是使用起來有點復雜。 如果您發現自己做了很多這樣的布局,請考慮使用第三方布局管理器,例如MiGLayout

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM