2017-12-27 14 views
0

GUI를 처음 접했을 때 공부하려고 할 때 약간의 문제가있었습니다. 여기 내 코드가 있습니다.AbtractButton에 대한 GUI

public class Sample implements ActionListener{ 

public void go() { 
    JButton button = new JButton("Click"); 
    JFrame frame = new JFrame(); 
    frame.getContentPane().add(button); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(100,100); 
    button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e){ 
      button.setText("Hello"); 
     } 
    }); 
} 

그것은 종류의 방법 addActionListener(ActionListener)이 AbstractButton에이 인수 (new ActionListener(){})에 적용 아니라고 말해 유지합니다. 나는 그것을하기 전에 그것을 기억하고 일할 수 있기 때문에 나는 그것을 얻지 않는다. ......

답변

0

오류는 발생하지 않지만 ActionListener 인터페이스의 수행 된 작업 메서드를 재정의해야하므로 작업 수신기가 작동하지 않습니다.

button.addActionListener(new ActionListener() { 
    // add the annotation below 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     button.setText("hello"); 
    } 
}); 

일반적으로 main 메소드에서 JFrame을 빌드합니다. 나중에 그들은 클래스가 JFrame을 확장 할 때 더 많은 객체 지향 방식으로 윈도우를 생성 할 Invoke Later 러너를 추가했습니다.

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

    public App(){ 
     JButton button = new JButton("Click"); 
     getContentPane().add(button); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(100,100); 
     button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent actionEvent) { 
       button.setText("hello"); 
      } 
     }); 
    } 
}