2012-10-12 60 views
1

我是新來的GUIS在Java中,我試圖創建一個像我已附加的圖像,但具有多個JLabels和JTextFields的GUI。我想讓按鈕位於屏幕底部的中央。Java Basic Gui示例

我該如何去做這件事?請忽略黑線,因爲我無法找到更好的圖像。

enter image description here

回答

0

嘗試使用Netbeans。您可以拖放所有這些功能,然後您只需編寫代碼以實現按鈕的功能。這些類也是爲你創建的。

另外,我會從頭開始,學習如何從頭開始構建它,因爲它是一個非常基本的GUI。

http://thenewboston.org/tutorials.php

+1

恕我直言,我認爲向那些沒有至少對佈局經理有基本理解的人員推薦表單設計師是一個非常糟糕的主意。這隻會導致更多的問題,長期來看 – MadProgrammer

+0

我同意你的看法,但是我當時給了他們他們最想要的東西。我也建議學習他們自己,並給他們一個鏈接去做。 –

+0

這只是我個人的意見。我最近因爲無法做基本的事情而拒絕了一些候選人,比如使用佈局管理器或'AbstractTableModel':P - 個人而言,我始終使用表單編輯器,但它們是我可以用來應用的工具我的知識和經驗;) – MadProgrammer

1

如果您想使用Eclipse,有一個叫WindowsBuilder Pro的插件,可以真正地安裝插件權在Eclipse中。 https://developers.google.com/java-dev-tools/wbpro/

+2

恕我直言,我認爲向那些沒有,至少是對佈局經理的基本理解的人建議表單設計師是一個非常糟糕的主意。這隻會導致更多的問題,長期來看 – MadProgrammer

6

有很多方法可以實現這一點。對我來說,最簡單的方法是使用GridBagLayout,它是所有內置佈局管理器中最靈活的,它也是最複雜的一種:P

有很多人被抓住的一件事是,試圖在單個容器上佈置組件。這可以做到,但需要花費很多時間和調整才能正確。

更好的方法(恕我直言)是使用多個子容器。

這使您可以將佈局要求分解爲單獨的需求,並擔心這些容器之間的關係作爲單獨的問題。

例如,在你的問題中,你需要將單詞和文本字段放在一起,但是它們被錨定在容器的北部位置,並且按鈕應該位於南部,但是位於標籤和領域。

擔心如何第一個佈局標籤和字段,然後擔心這些按鈕和領域/標籤第二之間的關係......

enter image description here

public class TestLayout08 { 

    public static void main(String[] args) { 
     new TestLayout08(); 
    } 

    public TestLayout08() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame(); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new LayoutPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 

     }); 
    } 

    protected class LayoutPane extends JPanel { 

     public LayoutPane() { 
      JButton button = new JButton("Find Word"); 
      JLabel label = new JLabel("Word:"); 
      JTextField field = new JTextField(12); 

      setLayout(new GridBagLayout()); 

      JPanel fieldPane = new JPanel(new GridBagLayout()); 

      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridx = 0; 
      gbc.gridy = 0; 
      gbc.insets = new Insets(2, 2, 2, 2); 

      fieldPane.add(label, gbc); 
      gbc.gridx++; 
      fieldPane.add(field, gbc); 

      gbc.gridx = 0; 
      gbc.gridy = 0; 
      gbc.anchor = GridBagConstraints.NORTH; 
      gbc.weighty = 1; 
      add(fieldPane, gbc); 

      gbc.gridx = 0; 
      gbc.gridy++; 
      gbc.weighty = 0; 
      gbc.anchor = GridBagConstraints.CENTER; 

      add(button, gbc);  
     }   
    } 
} 

看看;

+1

+1雖然GridBagLayout並不是最容易開始的,因爲它有很多可能性。此外,但只是爲了專家的使用,通常最好不要將絕對值設置爲gridx和gridy,而是使用RELATIVE和REMAINDER,這允許更容易的進一步更新,但這只是挑剔。我同意,有時候......這樣做很簡單。 ;) –

+0

我同意,'GridBagLayout'是一個巨大的飛躍,但符合要求。通常情況下,我會從此處播種gridx/gridy值並偏移相關元素,而gridwidth和height值將取決於要求。如果需要在此佈局中添加更多組件,RELATIVE或REMAINDER可能不適合,但這只是剔指;) - 好建議 – MadProgrammer

2

您至少有兩種選擇;

  • 使用GUI Builder中,從你喜歡的IDE,如NetBeans和Eclipse
  • 瞭解如何使用Swing API。特別是,您需要了解如何使用LayoutManagers。在這個特定的例子中,您可能想要使用BorderLayout,GridLayout或GridBagLayout和FlowLayout的組合。