2012-10-02 4 views
1

두 개의 버튼과 표시된 변수 (num)로 간단한 Java GUI 프로그램을 작성하고 있습니다. 버튼의 이름은 'increment'와 'decrement'이며, 해당 함수는 처음에 50으로 설정된 표시된 변수 num을 증가 또는 감소시킵니다.(Homework) Java GUI : 버튼이 1 대신 2 씩 증가/감소합니다.

프로그램이 컴파일되지만 증가 및 감소 버튼이 증가/감소합니다 num의 값은 1 대신에 2가됩니다. 코드 'num ++'를 'num = num + 1'로 변경하는 등의 작업을 시도했지만 여전히 버튼이 2 씩 증가합니다. 난 당신이 제공 할 수있는 모든 도움을 주셔서 감사합니다

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Assignment_4 extends JFrame { 
    private int num = 50; 
    private JButton increment; 
    private JButton decrement; 
    private JLabel label; 
    private JPanel buttonPanel; 
    private JPanel displayPanel; 

    public Assignment_4() { 
     increment = new JButton ("Increment"); 
     decrement = new JButton ("Decrement"); 
     increment.addActionListener (new incListener()); 
     decrement.addActionListener (new decListener()); 
     increment.addActionListener (new incListener()); 
     decrement.addActionListener (new decListener()); 

     num = 50; 
     label = new JLabel ("" + num); 

     buttonPanel = new JPanel(); 
     displayPanel = new JPanel(); 

     buttonPanel.add(increment); 
     buttonPanel.add(decrement); 
     displayPanel.add(label); 

     setLayout(new BorderLayout()); 
     add(buttonPanel, BorderLayout.CENTER); 
     add(displayPanel, BorderLayout.NORTH); 
    } 

    private class incListener implements ActionListener { 
     public void actionPerformed(ActionEvent event) { 
      num++; 
      label.setText("" + num); 
     } 
    } 

    private class decListener implements ActionListener { 
     public void actionPerformed (ActionEvent event) { 
      num--; 
      label.setText("" + num); 
     } 
    } 

    public static void main(String[] args) { 
     Assignment_4 win = new Assignment_4(); 
     win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     win.pack(); 
     win.setVisible(true); 
    } 
} 

:

여기 내 코드입니다.

답변

3

두 가지 모두에 대해 두 개의 동작 수신기 인스턴스를 연결 했으므로 각각 하나씩 필요합니다.

increment.addActionListener (new incListener()); 
decrement.addActionListener (new decListener()); 
//Remove the extra ones 
//increment.addActionListener (new incListener()); 
//decrement.addActionListener (new decListener()); 
+0

나는 그것을 놓쳤다 고 생각할 수 없다. 고맙습니다. – user1699107

+0

@ user1699107 : 환영합니다 :) –

3

각 버튼에 증가 및 감소 수신기를 두 번 추가했습니다.

관련 문제