2017-02-02 13 views
-2

얻기 오류 구현 "이 라인 에서 여러 마커 - 토큰에 구문 오류, 이러한 토큰을 삭제 - 구문 오류 블록을 완료, 삽입 '}'"의 actionPerformed & 된 ActionListener 및 HandlerClass 말 ActionListener를 구현 라인에

내가 뭘 잘못 알아 냈어?

import java.awt.FlowLayout; 
import java.awt.Font; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JCheckBox; 
import javax.swing.JFrame; 
import javax.swing.JButton; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 

public class Gui extends JFrame { 

private JTextField tf; 
private JCheckBox boldbox; 
private JCheckBox italicbox; 

public Gui() { 
    super("Hakuna Matata"); 
    setLayout(new FlowLayout()); 
    tf = new JTextField("This is a sentence"); 
    tf.setFont(new Font("Serif", Font.PLAIN, 14)); 
    add(tf); 

    boldbox = new JCheckBox("bold"); 
    italicbox = new JCheckBox("italicbox"); 
    add(boldbox); 
    add(italicbox); 

    HandlerClass handler = new HandlerClass(); 
    boldbox.addActionListener(handler); 
    italicbox.addActionListener(handler); 
} 
private HandlerClass implements ActionListener { 
    public void ActionPerformed(ActionEvent event) { 
     Font font = null; 
     if(boldbox.isSelected() && italicbox.isSelected()) 
      font = new Font("Serif", Font.BOLD + Font.ITALIC, 14); 
     else if(boldbox.isSelected()) 
      font = new Font("Serif", Font.BOLD, 14); 
     else if(italicbox.isSelected()) 
      font = new Font("Serif", Font.ITALIC, 14); 
     else 
      font = new Font("Serif", Font.PLAIN, 14); 

     tf.setFont(font); 

    } 
} 

답변

0

당신은 가까이 있었지만 ActionListener을 구현, 당신은 재정의해야 올바른 방법 서명은 떨어져 :

public void actionPerformed(ActionEvent event); 

메소드 이름의 시작에 소문자 a 유의 하시길 바랍니다에 따라 소문자에서 시작하는 모든 메소드 이름에 대한 Java 규약.

편집 또한

가 선언되어야한다, 그래서 당신의 HandlerClass는, 내부 class해야한다 :

private class HandlerClass implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent event) { 
     //your logic here 
    } 
} 

내가 HandlerClass 이름 앞에 class 키워드를 추가 있습니다. 또한 HandlerClass 대신 Handler과 같이 더 적절한 클래스 이름으로 이름을 바꾸는 것이 좋습니다.

+0

헤더를 세미콜론으로 닫는 이유는 무엇입니까? 그 후에 시체가 있습니다. –

+1

그는 메소드 본문을 선언하지 않는'ActionListener' 인터페이스를 참조하고 있습니다. 헤더 만 있습니다. –

+0

네, 맞습니다. 구현시 몸이 있습니다. 구현이없는 인터페이스에 어떻게 지정했기 때문에 닫았습니다. – JChrist

0

두 가지 실수가 있습니다. 첫 번째는 JChrist가 설명하는 것입니다. 이를 방지하려면 메서드 앞에

@Override
이 있어야합니다.

하지만 실제 실수는 끝에 닫는 중괄호가 누락 된 것입니다. Gui 클래스는 절대로 닫을 수 없습니다.

+0

거기에 괄호가 있습니다. 여기에 질문을 게시하기 전에 나는 세미콜론이 누락되지 않았 음을 확인했습니다. 신인 실수에 시간을 낭비하고 싶지 않았지만 세미콜론을 제거했습니다. '내가 왜 그랬는지 확신 할 수 없었음에도 불구하고 그렇게 했으므로 오류를 털어 내라는 오류가 발생했습니다. –