我想用java代碼一個非常簡單的表單,但由於swing擺放組件的方式,我遇到了比我想象的更多的麻煩,我嘗試了各種不同的佈局管理器,仍然無法佈局形式我想要的方式。使用Java和它的SWING庫
這裏是我怎麼想的形式看:link text
有誰有關於如何去了解這一點,因爲即時通訊難倒任何想法?
謝謝。
我想用java代碼一個非常簡單的表單,但由於swing擺放組件的方式,我遇到了比我想象的更多的麻煩,我嘗試了各種不同的佈局管理器,仍然無法佈局形式我想要的方式。使用Java和它的SWING庫
這裏是我怎麼想的形式看:link text
有誰有關於如何去了解這一點,因爲即時通訊難倒任何想法?
謝謝。
這樣的表格應該很容易設計和手工編碼。只要繼續閱讀文檔並玩遊戲。
另一種選擇是使用GUI生成器,Netbeans在去年看過它時給我留下了深刻的印象。我不再用Java工作,所以我不能提供更多的細節。
我會推薦您使用NetBeans。 它更容易,因爲它包含佈局管理器生成代碼,所以你不必擔心它。這對初學者很有好處。
最簡單的就是GridLayout。正如Aaron所說,如果您不想學習佈局管理器,Netbeans擁有一個出色的GUI構建器。
我會做一個帶有BorderLayout的主面板。
南方地區將舉行一個面板,其中的按鈕。
中心區域可容納一個網格佈局,網格佈局或某種盒子佈局的面板,這些佈局會將您的標籤和文本框放在外面。
使用gridbaglayout的缺點是,它可以通過borderlayout,gridlayout和flowlayout來實現。首先將表單拆分爲大視覺片段,然後在頂層視圖下進行子佈局。
例如,在這種情況下我這樣做:
我已經和Java swing一起工作了4年,開始設計佈局是個障礙,但實踐越多越容易。
看一看Table Layout。它比幾乎所有的默認佈局管理器都更容易使用。用你的表單構建起來非常簡單。
因爲它看起來像一個類似於表格的佈局,所以表格佈局會更容易使用,但是Noel說這個網格佈局非常靈活,如果您可以通過學習使用它,那麼這是一個很棒的佈局管理器。 – ChadNC 2009-11-12 21:49:17
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);
目前最簡單的使用我試過佈局管理器,至少在做類似的東西,是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"));
我真的很喜歡JGoodies Forms工具,佈局簡單(複雜)的形式。這很容易,並有很好的例子。如果你想要一些非常好看的東西,你可以使用他們的外觀和感覺之一。
似乎需要4個flowlayouts,但這似乎是對我來說顯而易見的方法。 – 2009-11-12 20:47:20