2009-11-12 40 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工具,布局简单(复杂)的形式。这很容易,并有很好的例子。如果你想要一些非常好看的东西,你可以使用他们的外观和感觉之一。