【问题标题】:Gui program increments but does not decrementGui 程序递增但不递减
【发布时间】:2014-04-23 12:40:15
【问题描述】:

此代码应该根据按下的按钮来增加或减少,但是,只有增加才有效。这是代码的花絮,因为我不允许发布整个代码:

作者哈里斯·伊尔沙德:

   Listener listenNow = new Listener();
    decrement.addActionListener(listenNow);
    increment.addActionListener(listenNow);
    panel.add(decrement);
    panel.add(increment);
    panel.add(label);
    frame.add(panel);
    frame.pack();

}

public static void main(String[] args) {
    new IncrementDecrement();
}

private class Listener implements ActionListener {

    public void actionPerformed(ActionEvent anyEvent) {
        if (anyEvent.getSource() == decrement) {
            info = label.getText();
            dec = Integer.parseInt(info);
            dec = dec - 1;
            info = Integer.toString(dec);
            label.setText(info);
        } else if (anyEvent.getSource() == increment) {
            info = label.getText();
        }
        dec = Integer.parseInt(info);
        dec = dec + 1;
        info = Integer.toString(dec);
        label.setText(info);
    }
}

}

【问题讨论】:

  • 我发现了问题。支架放置不正确。

标签: java user-interface


【解决方案1】:

花点时间看看你的逻辑......

// If decrement action...
if (anyEvent.getSource() == decrement) {
    // Decrement value...
    info = label.getText();
    dec = Integer.parseInt(info);
    dec = dec - 1;
    info = Integer.toString(dec);
    label.setText(info);
// If increment action...
} else if (anyEvent.getSource() == increment) {
    // Get the text...???
    info = label.getText();
}

// And then increment the value when all else is done...
dec = Integer.parseInt(info);
dec = dec + 1;
info = Integer.toString(dec);
label.setText(info);

所以基本上,当您尝试减少值时,实际上确实会减少它,但会立即再次增加它......

尝试将最后一段代码移到else-if 语句中,例如...

if (anyEvent.getSource() == decrement) {
    info = label.getText();
    dec = Integer.parseInt(info);
    dec = dec - 1;
    info = Integer.toString(dec);
    label.setText(info);
} else if (anyEvent.getSource() == increment) {
    info = label.getText();
    dec = Integer.parseInt(info);
    dec = dec + 1;
    info = Integer.toString(dec);
    label.setText(info);
}

【讨论】:

    【解决方案2】:

    尝试关注

                public void actionPerformed(ActionEvent anyEvent) {
            if (anyEvent.getSource() == decrement) {
                info = label.getText();
                dec = Integer.parseInt(info);
                dec = dec - 1;
                info = Integer.toString(dec);
                label.setText(info);
            } else if (anyEvent.getSource() == increment) {
                info = label.getText();
                dec = Integer.parseInt(info);
                dec = dec + 1;
                info = Integer.toString(dec);
                label.setText(info);
    
            }
            // These are causing the issue. These should be part of else if (anyEvent.getSource() == increment) { 
            /*dec = Integer.parseInt(info);
            dec = dec + 1;
            info = Integer.toString(dec);
            label.setText(info);*/
            // Coz of above every time this method is called it will result in increment.
        }
    

    【讨论】:

    • 这是正确的。但我会选择其他答案,因为他以前帮助过我。
    • 没有问题。感谢您的关注。
    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多