2013-01-03 2 views
1

Java에서 매우 간단한 클릭 카운터를 만들고 싶습니다. 작동하지만 Click Me 버튼을 클릭 할 때마다 클릭 수가 재설정됩니다. 클릭 수라는 정적 변수를 사용하여이 문제를 해결하려고했습니다. 나는 이것이 바보 같은 질문처럼 들리 겠지만 어떻게 실제로 변수가 자신을 다시 설정하는 것을 막는 지 알아 본다.클릭을 중지 할 때마다 자바 클릭 카운터가 재설정됩니다.

여기에 제가 작성한 코드가 있습니다.

package clickcounter; 

import java.awt.BorderLayout; 
import java.awt.event.FocusEvent; 
import java.awt.event.FocusListener; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 


public class ClickCounter extends JFrame implements MouseListener{ 
    private JButton b1 = new JButton("Click me"); 
    private static int clicks; 
    private JLabel info = new JLabel(); 

    public ClickCounter() 
    { 
     super("Click counter"); 
     setSize(250, 150); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     b1.addMouseListener(this); 
     BorderLayout bor = new BorderLayout(); 
     setLayout(bor); 
     info.setEnabled(false); 
     add(BorderLayout.NORTH, b1); 
     add(BorderLayout.CENTER, info); 
     setVisible(true); 
    } 


    public static void main(String[] args) { 
     ClickCounter cc = new ClickCounter(); 
    } 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     clicks = e.getClickCount(); 
     info.setText("Number of clicks " + clicks); 
     info.repaint(); 
    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     // ignore 
    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     //ignore 
    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     // ignore 
    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     // ignore 
    } 

} 

답변

6

e.getClickCount()은 '클릭'에 대한 세부 정보를 제공하는 데 사용됩니다. 응용 프로그램이 두 번, 트립 된 et.c 클릭에 응답하는 데 도움이됩니다. 따라서 사용자가 클릭을 멈 추면 다시 재설정됩니다.

// *Add* the number of clicks that occurred to the click variable 
clicks += e.getClickCount(); 

clicks = e.getClickCount(); 

바꾸기 및 카운터는 더 이상 재설정되지 않습니다.

참고 :이 상황에서는 clicks을 정적으로 설정하지 않아도됩니다.

+0

브릴리언트. 고마워. – mutantkeyboard

2

clicks이 증가하지 않습니다. 클릭 수를 계산하려면이 작업을 수행해야합니다. (또는 합산)

4

당신은

private static int clicks = 0; 

그게 모두와 함께

clicks += e.getClickCount(); 

대신

clicks = e.getClickCount(); 

및 초기화 클릭으로 작성해야합니다.

관련 문제