while loop在接收选项时没有响应java

时间:2013-08-26 15:10:34

标签: java loops

我正在尝试从Java中的自定义JFrame接收所选选项。在netbeans中以调试模式运行时(当循环内有断点时),代码可以正常工作,但不是实时的。

boolean keepgoing = true;
while (keepgoing) {
    if (ioFrame.getOption() == 0) {
        ioFrame.setVisible(false);
        keepgoing = false;
        //more code
    }
    else if (ioFrame.getOption() == 1) {
        ioFrame.setVisible(false);
        keepgoing = false; 
        //more code
    }         
}

ioFrame.getOption()返回-1直到在JFrame上单击按钮,然后根据单击的按钮,它是0或1。

ioFrame动作听众:

JButton loadButton = new JButton("Load Inventory");
class ChoiceListener implements ActionListener
{  
    @Override
    public void actionPerformed(ActionEvent event)
    {  
        initialOption = 0;
    }
}
loadButton.addActionListener(new ChoiceListener());

JButton updateButton = new JButton("Update Inventory");
class ChoiceListener2 implements ActionListener
{  
    @Override
    public void actionPerformed(ActionEvent event)
    {  
        initialOption = 1;
    }
}
updateButton.addActionListener(new ChoiceListener2());

2 个答案:

答案 0 :(得分:0)

每当某些东西返回-1时,通常意味着该对象不存在或者不存在。你确定你没有忘记初始化你需要的对象/变量吗?在调试模式下,Netbeans为您做了很多工作(甚至初始化某些东西),这在没有IDE的情况下编译和执行代码时没有完成。

答案 1 :(得分:0)

正如其他人所说,我认为问题来自于你的循环应该几乎需要你所有的计算机资源。它永远不会停止循环!

问题是您没有提供有关ioframe的任何代码。

如果它是可编辑的,则选项值由JCheckbox给出(我们在这里调用chk)。 您可以添加一个监听器(ItemListenerActionlistener ...)。

以下是在ioFrame中实现的示例:

chk.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        this.setVisible(chk.isSelected());
    }
});

另一种方法可能是在ioFrame中创建方法,允许向其组件添加列表器。

public void addVisibleChkActionListener(ActionListener ac){
    chk.addActionListener(ac);
}