2009-11-12 26 views
0

我想用java代碼一個非常簡單的表單,但由於swing擺放組件的方式,我遇到了比我想象的更多的麻煩,我嘗試了各種不同的佈局管理器,仍然無法佈局形式我想要的方式。使用Java和它的SWING庫

這裏是我怎麼想的形式看:link text

有誰有關於如何去了解這一點,因爲即時通訊難倒任何想法?

謝謝。

回答

0

這樣的表格應該很容易設計和手工編碼。只要繼續閱讀文檔並玩遊戲。

另一種選擇是使用GUI生成器,Netbeans在去年看過它時給我留下了深刻的印象。我不再用Java工作,所以我不能提供更多的細節。

Netbeans GUI Builder (Formerly Matisse)

0

我會推薦您使用NetBeans。 它更容易,因爲它包含佈局管理器生成代碼,所以你不必擔心它。這對初學者很有好處。

1

最簡單的就是GridLayout。正如Aaron所說,如果您不想學習佈局管理器,Netbeans擁有一個出色的GUI構建器。

0

我會做一個帶有BorderLayout的主面板。

南方地區將舉行一個面板,其中的按鈕。

中心區域可容納一個網格佈局,網格佈局或某種盒子佈局的面板,這些佈局會將您的標籤和文本框放在外面。

1

使用gridbaglayout的缺點是,它可以通過borderlayout,gridlayout和flowlayout來實現。首先將表單拆分爲大視覺片段,然後在頂層視圖下進行子佈局。

例如,在這種情況下我這樣做:

  1. 鴻溝在兩個垂直件由GridLayout的(或的borderlayout)的形式;標籤和文本框的頂部(或中心)部分,按鈕的底部(或南部)。
  2. 在頂部,使用中心對齊或另一個網格佈局來佈置標籤和文本字段。
  3. 在底部,使用帶有中心對齊按鈕的flowlayout。

我已經和Java swing一起工作了4年,開始設計佈局是個障礙,但實踐越多越容易。

+0

似乎需要4個flowlayouts,但這似乎是對我來說顯而易見的方法。 – 2009-11-12 20:47:20

1

看一看Table Layout。它比幾乎所有的默認佈局管理器都更容易使用。用你的表單構建起來非常簡單。

+0

因爲它看起來像一個類似於表格的佈局,所以表格佈局會更容易使用,但是Noel說這個網格佈局非常靈活,如果您可以通過學習使用它,那麼這是一個很棒的佈局管理器。 – ChadNC 2009-11-12 21:49:17

1

GridBagLayout起初可能令人生畏,但它非常靈活,值得去了解。

JButton button = ...; 

JLabel[] labels = new JLabel[] { 
    new JLabel("Label 1"), 
    ... 
}; 

JTextField[] fields = new JTextField[] { 
    new JTextField(15), 
    ... 
}; 

JPanel[] rows = new JPanel[] { 
    new JPanel(), 
    ... 
} 

Container container = getContentPane(); 
container.setLayout(new GridBagLayout()); 
GridBagConstraints cons = new GridBagConstraints(); 

// Layout each row's contents(label + text field) 
cons.fill = GridBagConstraints.BOTH; 
cons.insets = new Insets(2, 8, 2, 8); 
for (int i = 0; i < rows.length; ++i) { 
    rows[i].setLayout(new GridBagLayout()); 
    // Labels get 30% of the row's extra horizontal space. 
    cons.weightx = 0.3; 
    rows[i].add(labels[i], cons); 

    // Text fields gets 70% of the row's extra horizontal space. 
    cons.weightx = 0.7; 
    rows[i].add(fields[i], cons); 

    // Add each row to the panel, top to bottom 
    // Each row takes up all of the horizontal space. 
    cons.gridx = 0; 
    cons.weightx = 1; 
    container.add(rows[i], cons); 
    cons.gridx = GridBagConstraints.RELATIVE; 
} 

// Add the button at the bottom. 
// Dont let button get any extra horizontal space (so it won't stretch) 
cons.gridx = 0; 
cons.weightx = 0; 
cons.fill = GridBagConstraints.NONE; 
container.add(button, cons); 
1

目前最簡單的使用我試過佈局管理器,至少在做類似的東西,是DesignGridLayout。就這樣,該代碼會看起來像:

layout.row().grid(new JLabel("JLabel1")).add(new JTextField()); 
layout.row().grid(new JLabel("JLabel2")).add(new JTextField()); 
... 
layout.row().grid(new JLabel("JLabel5")).add(new JTextField()); 
layout.row().center().add(new JButton("JButton")); 
0

我真的很喜歡JGoodies Forms工具,佈局簡單(複雜)的形式。這很容易,並有很好的例子。如果你想要一些非常好看的東西,你可以使用他們的外觀和感覺之一。