2013-02-21 1 views
0

GUI를 사용하여 버튼을 클릭 한 횟수를 계산하고 싶습니다. 카운트 버튼 클릭

이 코드했다 :

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    int clicked = 0; 
    clicked++; 
    System.out.println(clicked); 
}  

를하지만 출력 "1", I 버튼을 클릭 할 때마다 보여주는.

숫자를 표시하기 위해 버튼을 클릭 할 때마다 원합니다.

예 : 버튼을 두 번 클릭하면 "2"라는 결과가 나타납니다.

답변

6

작업 메서드 내에서 변수를 정의했기 때문에 클릭 할 때마다 카운터가 재설정됩니다. 그렇게하지 마십시오.

int clicked = 0; // move this outside 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    // int clicked = 0; -- this resets it to 0 each time 
    clicked++; 
    System.out.println(clicked); 
} 
2

변경

int clicked = 0; 

는 클래스의 구성원이어야합니다. 이렇게하면 버튼을 누를 때마다 0으로 설정되지 않습니다.

2
는 아무것도 할 수 없다 당신은 0에 초기화, 로컬 변수로 clicked을 선언 한

하지만 1

확인 clicked 대신 클래스 수준 변수 ...

private int clicked = 0; 

//... 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    clicked++; 
    System.out.println(clicked); 
} 
3

코드 아래에보십시오

int clicked = 0; 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           

    clicked++; 
    System.out.println(clicked); 
} 
1

countActionListener. 블록 밖에서 선언하십시오.

int clicked = 0; //make it as your class member. 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           

    clicked++; 
    System.out.println(clicked); 
}  
1

는이 클래스를 인스턴스화하는 방법에 따라 필드 레벨 또는 클래스 변수 수준 중 하나에서 clicked 변수를 선언해야합니다. 현재 clicked 변수의 범위는 메서드에 로컬입니다.

옵션 1

int clicked = 0; 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    clicked++; 
    System.out.println(clicked); 
} 

옵션 2

static int clicked = 0; 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    clicked++; 
    System.out.println(clicked); 
} 

당신이 인스턴스에 따라 달라집니다 사용하는 옵션을 선택합니다. 가능한 경우 두 번째 옵션은 피해야합니다.

1

마다 jButton1ActionPerformed 화재, 클릭 한 변수 당신은 그 방법

//Somewhere in your class 
private intClicked = 0; 
//More methods here. 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    clicked++; 
    System.out.println(clicked); 
} 
0
import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.JTextField; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 


public class Threading extends JFrame { 

    private JPanel contentPane; 
    private JTextField DisplayOne; 
    private JTextField DisplayTwo; 

    int count; 
    int count1; 
    int count2; 


    /** 
    * Launch the application. 
    */ 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() 
      { 
        try { 
        Threading frame = new Threading(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 


    public Threading() 
    { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     contentPane.setLayout(new BorderLayout(0, 0)); 
     setContentPane(contentPane); 

     JPanel panel = new JPanel(); 
     contentPane.add(panel, BorderLayout.CENTER); 

     DisplayOne = new JTextField(); 
     panel.add(DisplayOne); 
     DisplayOne.setColumns(10); 

     DisplayTwo = new JTextField(); 
     panel.add(DisplayTwo); 
     DisplayTwo.setColumns(10); 

     JButton btnCountOne = new JButton("Count 1"); 
     count1=0; 
     btnCountOne.addActionListener(new ActionListener() {     
       public void actionPerformed(ActionEvent arg0) 
       { 
        DisplayOne.setText(Integer.toString(count1++)); 
       } 
     }); 
     panel.add(btnCountOne); 

     JButton btnCountTwo = new JButton("Count 2"); 
     count2=0; 
     btnCountTwo.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) 
      { 
       DisplayTwo.setText(Integer.toString(count2++)); 
      } 
     }); 
     panel.add(btnCountTwo); 

     JButton btnCountBoth = new JButton("Count Both"); 
     count=0; 
     btnCountBoth.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) 
      { 
       while (count < 10) 
       { 
       DisplayOne.setText(Integer.toString(++count)); 
       DisplayTwo.setText(Integer.toString(count)); 
       } 
      } 
     }); 
     panel.add(btnCountBoth); 
    } 

} 
clicked 변수 외부 이동해야 다시는 항상 당신에게 1의 값을주고있다 왜 0으로 인스턴스화됩니다