2014-07-10 6 views
0

저는 Java로 계산기를 만들려고합니다. ActionListeners에 대해 알게 된 후, 버튼에 ActionListener를 추가하려고 시도했지만,이 작업을 수행하고 파일을 컴파일하려고 시도한 후에 오류가 발생했습니다. 내 코드는 다음과 같습니다.왜 오류가 발생 했습니까?

Window.java:33 :

import javax.swing.*;//import the packages needed for gui 
import java.awt.*; 
public class Window { 
public static void main(String[] args) { 
    JFrame Window = new JFrame("Window");//makes a JFrame 
    Window.setSize(300,350); 
    Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JPanel Panel = new JPanel (new FlowLayout());//makes the panel, textfield and buttons 
    JTextField TextField = new JTextField(20); 
    JButton openbracket = new JButton("("); 
    JButton closebracket = new JButton(")"); 
    JButton clearbutton = new JButton("C"); 
    JButton arcsin = new JButton("arcsin"); 
    JButton arccos = new JButton("arccos"); 
    JButton arctan = new JButton("arctan"); 
    JButton sin = new JButton("sin"); 
    JButton cos = new JButton("cos"); 
    JButton tan = new JButton("tan"); 
    JButton log = new JButton("log"); 
    JButton seven = new JButton("7"); 
    JButton eight = new JButton("8"); 
    JButton nine = new JButton("9"); 
    JButton four = new JButton("4"); 
    JButton five = new JButton("5"); 
    JButton six = new JButton("6"); 
    JButton one = new JButton("1"); 
    JButton two = new JButton("2"); 
    JButton three = new JButton("3"); 
    JButton zero = new JButton("0"); 
    JButton radixpoint = new JButton("."); 
    JButton equal = new JButton("="); 
    String values = null; 
    public class Listener implements ActionListener { 
    public void actionPerformed(ActionEvent e) {   
     values = values+"3"; 
     TextField.setText(values); 
    } 
    Panel.add(TextField);//adding all the things 
    Window.add(Panel); 
    Panel.add(openbracket); 
    Panel.add(closebracket); 
    Panel.add(clearbutton); 
    Panel.add(arcsin); 
    Panel.add(arccos); 
    Panel.add(arctan); 
    Panel.add(sin); 
    Panel.add(cos); 
    Panel.add(tan); 
    Panel.add(log); 
    Panel.add(nine); 
    Panel.add(eight); 
    Panel.add(seven); 
    Panel.add(six); 
    Panel.add(five); 
    Panel.add(four); 
    three.addActionListener(Listener); 
    Panel.add(three); 
    Panel.add(two); 
    Panel.add(one); 
    Panel.add(zero); 
    Panel.add(radixpoint); 
    Panel.add(equal); 
    Window.setVisible(true); 
} 
} 

오류는 I이었다 얻었다 예상 Panel.add (텍스트 필드 : 표현 공용 클래스 리스너의 불법 시작이 된 ActionListener { ^ Window.java:38를 구현 // 모든 것을 추가^ Window.java:39, Panel.add (TextField를 예상) :) // 모든 것을 ^ Window.java:38 추가 예상 Window.add (패널); ^ Window.java:39 : expected Window.add (Panel); ^ Window.java:40 : expected Panel.add (openbracket); ^ Window.java:40 : expected Panel.add (openbracket); ^ Window.java:41 : expected Panel.add (closebracket); ^ Window.java:41 : expected Panel.add (closebracket); ^ Window.java:42 : expected Panel.add (clearbutton); ^ Window.java:42 : expected Panel.add (clearbutton); ^ Window.java:43 : expected Panel.add (arcsin); ^ Window.java:43 : expected Panel.add (arcsin); ^ Window.java:44 : expected Panel.add (arccos); ^ Window.java:44 : expected Panel.add (arccos); ^ Window.java:45 : expected Panel.add (arctan); ^ Window.java:45 : expected Panel.add (arctan); ^ Window.java:46 : expected Panel.add (sin); ^ Window.java:46 : expected Panel.add (sin); ^ Window.java:47 : expected Panel.add (cos); ^ Window.java:47 : expected Panel.add (cos); ^ Window.java:48 : expected Panel.add (tan); ^ Window.java:48 : expected Panel.add (tan); ^ Window.java:49 : expected Panel.add (log); ^ Window.java:49 : expected Panel.add (log); ^ Window.java:50 : expected Panel.add (nine); ^ Window.java:50 : expected Panel.add (nine); ^ Window.java:51 : expected Panel.add (eight); ^ Window.java:51 : expected 패널.추가 (8 개); ^ Window.java:52 : expected Panel.add (seven); ^ Window.java:52 : expected Panel.add (seven); ^ Window.java:53 : expected Panel.add (six); ^ Window.java:53 : expected Panel.add (six); ^ Window.java:54 : expected Panel.add (5); ^ Window.java:54 : expected Panel.add (5); ^ Window.java:55 : expected Panel.add (4); ^ Window.java:55 : expected Panel.add (4); ^ Window.java:56 : expected three.addActionListener (리스너); ^ Window.java:56 : expected three.addActionListener (리스너); ^ Window.java:57 : expected Panel.add (three); ^ Window.java:57 : expected Panel.add (three); ^ Window.java:58 : expected Panel.add (two); ^ Window.java:58 : expected Panel.add (two); ^ Window.java:59 : expected Panel.add (one); ^ Window.java:59 : expected Panel.add (one); ^ Window.java:60 : expected Panel.add (제로); ^ Window.java:60 : expected Panel.add (제로); ^ Window.java:61 : expected Panel.add (radixpoint); ^ Window.java:61 : expected Panel.add (radixpoint); ^ Window.java:62 : expected Panel.add (동일); ^ Window.java:62 : expected Panel.add (동일); ^ Window.java:63 : expected Window.setVisible (true); ^ Window.java:63 : 형식이 잘못되었습니다. Window.setVisible (true); ^ Window.java:65 : 파싱하는 동안 파일 끝에 도달했습니다. } ^ 왜 이러한 오류가 발생 했습니까? 이유를 설명하십시오.

+1

클래스와 Jframe 변수의 이름이 같아야합니다. 그건 아마 물건을 어기는거야. 또한 클래스 자체가 아닌 Listener 클래스의 인스턴스를 버튼에 추가해야합니다. – resueman

+0

GUI를 반드시 설치하고 기본 사항을 먼저 알아야합니다. 간단한 콘솔 프로그램으로 시작하십시오. [처음부터 여기에서 시작할 수 있습니다.] (http://docs.oracle.com/javase/tutorial/reallybigindex.html) –

답변

3

Java 파일에 둘 이상의 공용 클래스를 선언 할 수 없습니다.

내 프로그램 인 경우 개인 내부 클래스 또는 익명 내부 클래스를 사용하여 인스턴스를 만들고 버튼에 추가합니다. 여기에 당신의 미래 질문

예를 들어

,

ActionListener numberButtonListener = new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    // TODO: put some code here 
    } 
}; 

// assuming a List<AbstractButton> of the number buttons 
for (AbstractButton numberButton : numberButtonList) { 
    numberButton.addActionListener(numberButtonListener); 
} 

, 당신은 더 쉽게 읽고 이해할 수 있도록 코드 들여 쓰기를 향상시키고 자하는 것입니다.


또한 주석 사항에 따라

,이 코드 :

public class Window { 
public static void main(String[] args) { 
    JFrame Window = new JFrame("Window");//makes a JFrame 

클래스 이름과 변수 이름은 동일합니다. 이것은 좋지 않으며 당신과 아마도 컴파일러를 혼란스럽게 할 수 있습니다. 변수 이름은 소문자로 시작해야합니다. 또한, 여러분은 그 코드의 대부분을 정적 메인 메소드와 그것이 속한 객체 지향 영역으로 가져 가고 싶어 할 것입니다. 당신은 OOP와 Java book에 대해 "Thinking in Java"와 같은 훌륭한 소개를하고 싶을 것이다. 것들의 순서는 다음과 같아야합니다 : 1) 기본적인 자바를 먼저 배우고, 2) 스윙이나 데이터베이스와 같이 자바에서 하위 전문 주제를 배우거나 ...

관련 문제