我正在尝试从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());
答案 0 :(得分:0)
每当某些东西返回-1时,通常意味着该对象不存在或者不存在。你确定你没有忘记初始化你需要的对象/变量吗?在调试模式下,Netbeans为您做了很多工作(甚至初始化某些东西),这在没有IDE的情况下编译和执行代码时没有完成。
答案 1 :(得分:0)
正如其他人所说,我认为问题来自于你的循环应该几乎需要你所有的计算机资源。它永远不会停止循环!
问题是您没有提供有关ioframe
的任何代码。
如果它是可编辑的,则选项值由JCheckbox
给出(我们在这里调用chk
)。
您可以添加一个监听器(ItemListener
,Actionlistener
...)。
以下是在ioFrame中实现的示例:
chk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
this.setVisible(chk.isSelected());
}
});
另一种方法可能是在ioFrame中创建方法,允许向其组件添加列表器。
public void addVisibleChkActionListener(ActionListener ac){
chk.addActionListener(ac);
}