2012-08-07 4 views
0

안녕하세요, 내 프로그램에서 mouselistener 액션을 수행하고 있습니다. 사용자가 패널을 클릭하여 색상을 변경했지만 코드 줄이 클래스 e를 만드는 것처럼 색상 jpanel을 만들고 있습니다. 코드지만 e는 이미 이벤트 클래스 plz의 인스턴스로 선언되어 있습니다. 아래 코드는 내 코드입니다. 오류는 "panel.addMouseListener (e);"입니다.mouselistener를 수행하는 자바 코드에서 오류가 발생했습니다.

'import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class randomcolor extends JFrame{ 
    JPanel panel; 
    public randomcolor(){ 
     panel=new JPanel(); 
     panel.setBackground(rancolor()); 
     add(panel); 
    } 

    event e =new event(); 
    panel.addMouseListener(e); 

    public Color rancolor(){ 
     int r= (int) (Math.random()*256); 
     int g= (int) (Math.random()*256); 
     int b= (int) (Math.random()*256); 
     return (new Color(r,g,b)); 
    } 

    public class event implements MouseListener{ 
     public void mouseClicked(MouseEvent e) { 
      panel.setBackground(rancolor()); 
     } 
     public void mousePressed(MouseEvent e) { 
     } 
     public void mouseReleased(MouseEvent e) { 
     } 
     public void mouseEntered(MouseEvent e) { 
     } 
     public void mouseExited(MouseEvent e) { 
     } 
    } 

    public static void main (String args[]){ 
     randomcolor gui=new randomcolor(); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gui.setVisible(true); 
     gui.setSize(300, 300); 
     gui.setTitle("color panel"); 
    } 
} 

답변

2

event e = new event()에서 이벤트를 대문자로. 아마 Event e = new Event()이어야합니다. 코드의 형식이 이상하게 보입니다. 다른 서식 오류도 숨길 수 있습니다..

이제 코드의 형식이 올바르게 지정되었으므로 다른 문제가 발생할 수 있습니다. 당신은 아마 바로 중괄호 후

Event e = new Event(); 
panel.addMouseListener(e); 
생성자 내부

, 대신 을 가지고 의미했다.

0

panel.addMouseListener(e);을 생성자 randomcolor()으로 옮깁니다. 이렇게하면 문제가 해결됩니다.

관련 문제