0

I am trying to receive the selected option from a custom JFrame in Java. The code works fine as expected when running in debug mode in netbeans (when there is a breakpoint inside the loop) but not in real time.

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() returns -1 until a button is clicked on the JFrame, then depending on the button clicked it is either 0 or 1.

ioFrame Action Listeners:

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());
4

2 回答 2

0

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

于 2013-08-26T15:16:21.973 回答
0

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

问题是您没有提供任何有关ioframe.

如果它是可编辑的并且选项值由 a 给出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);
}
于 2013-08-27T10:44:13.167 回答