以java / swing形式添加动态字段

时间:2011-01-03 19:57:36

标签: java swing dynamic runtime field

我对java很新,并使用netbeans设计UI。

我想做的是......

在表格中。有一个jComboBox和一个JTextField,用户可以输入他选择的服务和观察。到现在为止还挺好。 JComboBox是从数据库条目填充的。

问题是,用户可以一次输入N个不同的服务(有太多的复选框)。我正在考虑添加一个“[+]”按钮(以及“[ - ]”以便删除)。因此,用户点击[+],另一个带有jcombobox + jtextfield的新行显示在前一行的正下方。

我被困在这一点上。在[+]按钮上ActionPerformed我无法克隆并添加以前的节点。关于如何继续的任何想法。

我的背景是webdev。使用javascript执行此操作非常快。好吧,我想你已经知道我要做什么了。等待一些光。 THX。

2 个答案:

答案 0 :(得分:8)

你走在正确的轨道上。这是一些source code to give you some ideas alt text alt text

基本思想是EntryList负责跟踪要显示的行;每行都有一个加号/减号按钮,然后将实际的添加/删除委托给此EntryList。它还公开了禁用减号/加号按钮的方法,以便列表视图可以确保您不删除单个条目(这样您就不会显示空白)

这不完美;您会注意到需要调整框架大小以使新行正确显示。但这应该足以让你开始。

答案 1 :(得分:1)

创建主面板以使用水平显示组件的布局管理器。 Box类很容易使用。然后,您只需创建一个包含要显示的组件的新面板,并将此面板添加到主面板。类似的东西:

JComboBox checkBox = new JComboBox(...);
JTextField textField = new JTextField(...);
JPanel row = new JPanel();
row.add( comboBox );
row.add( textfield );
mainPanel.add( row );
mainPanel.revalidate();