【发布时间】:2013-02-11 20:20:14
【问题描述】:
当我单击按钮时,我想向面板添加一个按钮,我做到了,但我的程序不像以前那样工作。这是我之前的程序:
带有粉红色按钮的南面板是卡片布局面板。当我点击东边的灰色按钮时,卡片面板发生了变化。当我点击粉色按钮时,发生了这种情况:
一个粉色按钮 setText 到一个标签。在我向卡片面板“TOPLI NAPICI”添加一个按钮后,发生了这种情况:
如您所见,一个按钮“moka”添加到面板中,这是我想要的,但是当我单击一个按钮时,它 setText 两次,只有新按钮(在本例中为“MOKA”)setText 一次。卡片面板中的其他面板也发生了这种情况:
这是我单击按钮添加新按钮时代码的一部分
if (enter == JOptionPane.OK_OPTION) {
try{
Double price1=Double.parseDouble(priceField.getText());
String name1= productField.getText();
Product name = new Product(name1, price1);
Application .manu.add(name);
if (field.getSelectedItem().equals("TOPLI NAPICI")){
for(Controller c:Controller) {
c.tnp.add(new JButton(name1));//c is panel , holds all panels
c.tn.revalidate();//c.tn is panel which is changed( adding one button), cardpanel
c.removeAll();
c.panels();//create all panels which is removed
c.revalidate();
System.out.print( c.tnp.size());//tnp is a list with buttons, shows that add one more button, that is correct
}
喜欢它复制面板,或者当我click button 它点击了两次。可能吗?虽然我只更改了卡片布局中的一个面板(“TOPLI NAPICI”),但它在卡片布局中的所有面板中都发生了变化(“SOKOVI”和“ALKOHOL”)
怎么了?
感谢您的帮助。
【问题讨论】:
-
您所针对的事件是什么?如果确实与您注册点击的次数有关,那么我建议使用 mouseUp 事件。
-
我认为您的 GUI 应该完全重新设计。而不是这个会导致很多问题的 GUI,您可以:使用带有 3 个选项卡的
JTabbedPane(在 SOUTH 上设置)并在每个选项卡中设置JTable(针对每种类型的饮料)。每个JTable将包含文章列表。然后您可以添加一些按钮,以便您可以将文章添加到您的帐单中。此外,一个JTable可以替换所有JLabels 和JComboBoxes。顺便说一句,如何打印报告? -
你是对的。当我从这个开始时,我有想法,但没有经验。我可以将表格设置为空并通过单击按钮来填充它。我的程序可以用表格而不是标签、组合框看起来一样吗?
标签: java swing jpanel duplicate-removal cardlayout