我想用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