几乎完成了......一个错误JPaneOption框的问题

时间:2011-02-13 22:31:53

标签: java

我几乎完成了我的任务。 Yayy!但是......我的处理程序中有两个问题。首先,我有一个公共的void itemStateChanged(ItemEvent e)方法,该方法应该将注册人名称打印到文本字段,加上他的注册类型(学生,商业,免费)。我有这个工作,只有它打印两次到文本区域。我不明白。此外,还有一个“计算费用”按钮,用于......好吧,计算费用。单击该按钮时,应检查操作事件以确保组合框(在名为regPanel的类中)没有“请选择注册类型”,这是对象数组中的元素0。我现在拥有它的方式,如果我不从组合框中选择一些东西(将它留在元素0上),我会得到错误信息,但是程序仍会打印到文本字段。它不应该。它只应打印错误框,然后允许用户进行正确的选择。任何意见,将不胜感激。这是班级:

public class ConferenceHandler implements ActionListener, FocusListener, ItemListener
{
    protected final static String ERROR_TEXT = "Please enter a name";
    protected ConferenceGUI gui;  //reference the ConferenceGUI panel
    /**Constructor*/
    public ConferenceHandler(ConferenceGUI gui) {this.gui = gui;}     


            if (gui.regPanel.getRegType() == "Please select a type")
                JOptionPane.showMessageDialog(null, "Please select a registration type",
                    "Type Error",JOptionPane.ERROR_MESSAGE);
            //prints to textarea if registrant will be attending keynote or not
            else if (gui.regPanel.regCheckBox.isSelected())
                gui.textArea.append("\nKeynote address will be attended");
            else

稍微进行了一次谷歌搜索,并找出了itemStateChanged事件双重触发的问题。修剪了所有额外的代码,因为我非常确定我需要的是一个循环,在这里。当我放置一段时间或者执行循环时,所有发生的事情都是JOptionPane出现并且不会消失。我需要验证用户是否输入了相应的复选框选项。

1 个答案:

答案 0 :(得分:2)

  

我有这个工作,只有它打印两次到文本区域。

你还没有发布一个SSCCE来证明这个问题就像你在previoius问题中被问到的那样。

从真实问题中复制并粘贴几行代码并不能帮助您解决问题。

作为初学者,您需要学习如何简化问题。简化问题后,更容易找到并解决问题。

在这种情况下,工作的SSCCE将是大约20行代码。创建GUI的几行,添加一些组件以及创建ItemListener的更多内容。

发布您的SSCCE,我会发布您的问题的答案。使用ItemListener时,这是一个常见错误。我可以在没有看到您的SSCCE的情况下给您答案,但是当您遇到更复杂的问题时,您需要学习如何创建SSCCE。所以这个问题是一个很好的起点。

也许查看How to Write an Item Listener上的Swing教程中的部分将有助于您了解正在发生的事情。