我编写了一个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中所有JComponentssetEnabled(true / false)JPanel的类似示例

10-08 11:13