我编写了一个Java应用程序,它使用Netbeans 7.0.1及其在gui builder中的构建完成了一些不同的工作。我遇到的问题是,屏幕上有一些文本字段供用户输入。最初有一组字段和一个按钮(最多可添加10个)。我还有一个remove按钮可以删除一个字段。
因此,基本上,按钮会将jTextField和jLabel添加到面板或从面板删除。
当我单击按钮时似乎有些滞后,所以我添加了一些System.out.prints并发现有时会按下该按钮,系统会打印出应有的内容,但只是忽略了组件的添加/删除。
这是一个已知问题吗?(尽管我不确定100%知道如何在搜索结果中措辞,但我还找不到任何东西)还是我做错了什么?
代码示例:
注意:当前组件是每个组件及其值的映射
private void addButtonMouseClicked(java.awt.event.MouseEvent evt) {
if(hiddenValue != 81) {
currentComponents.get(hiddenValue).setVisible(true);
currentComponents.get(hiddenValue + 1).setVisible(true);
currentComponents.get(hiddenValue + 2).setVisible(true);
currentComponents.get(hiddenValue + 3).setVisible(true);
currentComponents.get(hiddenValue + 4).setVisible(true);
currentComponents.get(hiddenValue + 5).setVisible(true);
currentComponents.get(hiddenValue + 6).setVisible(true);
currentComponents.get(hiddenValue + 7).setVisible(true);
currentComponents.get(hiddenValue + 8).setVisible(true);
hiddenValue = hiddenValue + 10;
numEntries++;
removeButton.setVisible(true);
removeButton.setEnabled(true);
System.out.println(hiddenValue);
}
else {
currentComponents.get(hiddenValue).setVisible(true);
currentComponents.get(hiddenValue + 1).setVisible(true);
currentComponents.get(hiddenValue + 2).setVisible(true);
currentComponents.get(hiddenValue + 3).setVisible(true);
currentComponents.get(hiddenValue + 4).setVisible(true);
currentComponents.get(hiddenValue + 5).setVisible(true);
currentComponents.get(hiddenValue + 6).setVisible(true);
currentComponents.get(hiddenValue + 7).setVisible(true);
currentComponents.get(hiddenValue + 8).setVisible(true);
hiddenValue = hiddenValue + 10;
numEntries++;
addButton.setVisible(false);
addButton.setEnabled(false);
System.out.println(hiddenValue);
}
}
最佳答案
用他们的JComponents
来呼叫index
真的不是一个好主意,也不是为什么要重新发明轮子,请使用(也要避免使用XxxExceptions
中的任何一个)
for (Component c : currentComponents.getComponents()) {
//if (c instanceof JButton) {
c.setVisible(true);
//}
}
关于
JButtons ActionPerfomed
中所有JComponents
和setEnabled(true / false)的JPanel
的类似示例