2016-10-18 2 views
0

사용자가 1 분 안에 버튼을 클릭해야하는 "ClickerGame"을 작성하려고합니다. 이 프로그램의 기능을 개선하는 데 도움을 줄 수 있습니까? 그것은 실제로 작동하지 않습니다. label이 (null) 초기화되지 않습니다으로Java 기능의 clicker 게임

import javax.swing.*; 

import java.awt.FlowLayout; 
import java.awt.event.*; 
import java.awt.*; 
import java.lang.*; 
import java.util.Date; 

public class ClickerGame extends javax.swing.JFrame { 
    int i,j; 
    JPanel panel; 
    JFrame frame; 
    JButton start; 
    JButton stop; 
    JButton click; 
    JTextArea text; 
    JLabel label; 
    public static void main(String[] args){ 
     ClickerGame a = new ClickerGame(); 
     a.go(); 
    } 

    public void go(){ 
     frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel panel = new JPanel(); 

     click = new JButton("Click"); 
     click.addActionListener(new ClickListener()); 

     start=new JButton("Start"); 
     start.addActionListener(new StartListener()); 

     stop=new JButton("Stop"); 
     stop.addActionListener(new StopListener()); 
     panel.add(start); 
     panel.add(click); 
     panel.add(label); 
     frame.getContentPane().add(BorderLayout.CENTER,panel); 

     frame.setSize(500,500); 
     frame.setVisible(true); 
    } 
    class ClickListener implements ActionListener{ 
     public void actionPerformed(ActionEvent event){ 

      click.setText("Number of clicks: "+i); 
      i++; 
     } 

     } 

    Timer timer = new Timer(1000,new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      Date currentTime = new Date(); 
      label= new JLabel(currentTime.toString()); 


     } 
    }); 

    class StartListener implements ActionListener{ 
     public void actionPerformed(ActionEvent event){ 
      timer.start(); 
     } 
    } 
    class StopListener implements ActionListener{ 
     public void actionPerformed(ActionEvent event){ 
      timer.stop(); 
     } 
    } 

} 
+0

오류가 발생하면 Exception을 질문에 추가해야합니다. 편집 : 예외가 발생하지 않으면 오류/문제 –

+0

죄송합니다. 코드에 오류를 추가했습니다. – adir

답변

1

귀하의 오류는 panellabel를 추가하려고에 의해 발생합니다.

제거 : panel.add(label);

나는 게임의 기능이 의도 한대로입니다 확신 아니에요,하지만 별도의 질문입니다.

+0

타이머에 추가했는데, 현재 시간이 표시되도록 설정할 수 있습니까? – adir

+0

과 기능이 내가 알고 싶었던 가장 중요한 것입니다. 어떻게 개선 할 수 있습니까? – adir

0
panel.add(label); 

이 줄에는 .. 레이블이 초기화되지 않았습니다. 이런 식으로 사용하기 전에 초기화하십시오. -

label = new JLabel("ABC"); 
+0

타이머에 추가했는데 현재 시간이 표시 될 수 있도록 넣을 수 있습니까? – adir