2013-08-26 2 views
-2

포함하는 클래스에 addActionListener에 수없는 것. 하지만 클래스의 jbutton addActionListener 수 싶습니다. 그러나 나는 이것이 작동하도록 할 수없는 것 같습니다. 클래스 밖에서 추가하려고하면 오류가 발생하지만 아무것도하지 않는 것 같습니다. Ive는 JFrame을 통과하는 것 같은 모든 종류의 물건을 시험해 보았습니다 ...자바 그래서이 클래스가하는 JButton

더 많은 문맥을 위해, 이것은 지뢰 찾기 게임을위한 것입니다.

public Button(int x,int y, int size, JLayeredPane pane) 
{ 
    //The whole premise of have a constructor that declares a JButton inside 
    //a JButton doesn't really make any sense, but: 
    super(); 

    JButton b = new JButton(); 
    pane.add(b, new Integer(0)); 
    b.setBounds(x,y,size,size); 

    b.addActionListener(new ActionListener(){ 

    public void actionPerformed(ActionEvent e){ 
     System.out.println("Button Clicked"); 
    } 
    } 
} 

이 그냥 버튼 생성자에서 새로운 JButton를 선언한다 : 또한 JFrame의는의 layeredPane

+0

이 특정 문제를 명확히 또는 정확하게 당신이 필요 강조하기 위해 추가 정보를 추가하세요 수행하는 방법을 설명 할 두 가지 예를됩니다. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. (플래그 대화 상자에서 복사) – gparyani

+0

어떻게'addActionListener()'를 호출합니까? – gparyani

+2

귀하의 질문이 매우 불분명하다고 동의하십시오. 그것이 정확히 작동하지 않는 방법에 대해 더 많이 알려 주시기 바랍니다. 내가 말할 수있는 한 가지는이 클래스가 JButton을 확장해서는 안된다는 것입니다. –

답변

1

생성자를 사용합니다.

당신이 작성한 코드가 어떻게 작동하는지 이해하지 못하는 것 같습니다. JButton을 확장하면 상속을 통해 모든 메서드를 얻게됩니다. public Button()Button 클래스의 생성자이며, JButton 내부에 JButton을 선언 할 필요가 없습니다. Button은 이미 JButton입니다. 당신이해야 할 일은 다른 클래스에서 Button b = new Button();과 같은 것을하고 버튼에 actionlistener를 선언하는 것입니다. 자세한 내용은 다음 리소스 밖으로

확인 :

JButton api

How to use buttons

+0

참고 Grammin is Grammin is JButton을 확장하지 마십시오! –

+0

참고 Grammin은 생성자를 제공하고 있습니다. 생성자는 아무 것도 확장하지 않습니다. 즉, 그의 생성자는 아마도 '슈퍼'라고 불러야한다고 말했다. – dimo414

+0

빠른 답장을 보내 주셔서 감사합니다. 예, 저는 꽤 많은 일을 시도했고, 혼란 스러울 때 수업을 불필요하게 확장하기 시작했습니다. b.addActionListener (새로운 ActionListener ... 정확히 내가 무엇을 찾고 있었는지. 덕분에 많이. 일반적으로 버튼을 추가 할 때 : addActionListener (this) JFrame 하위 클래스에 있기 때문에 ... 그렇지 않으면 어떻게 해야할지 절대 모릅니다 – Makoto