0

正方形の色を変更するために mouseEntered テストを実行しようとしていますが、MouseListener mouseEntered は実行されません。マウスは反応しますが、クリック、押して離すだけです。だから私は何が起こっているのか分かりません。私の問題を指摘するのを手伝ってくれることを願っています。

//Class
class RectangleClass extends JPanel{
    private int height;
    private int width;
    private boolean MouseEntered= false;
    private boolean MouseExit= false;
    private JPanel myPanel = new JPanel();
//Inner class with mouse Event
    class RectangleAdapter extends MouseAdapter{

        public void MouseEntered(MouseEvent e){
            System.out.println("MouseEntered"); 
            MouseEntered = true;
            repaint();
        }

        public void MouseExited(MouseEvent e){
            System.out.println("MouseExited");  
            MouseExit = true;
            repaint();
        }

    }
//constructor
    public RectangleClass(int height,int width){

        myPanel = this;
        this.height=height;
        this.width=width;
        this.addMouseListener(new RectangleAdapter());
    }
//paint graphic
    public void paint(Graphics g){
        super.paint(g);
        g.clearRect(0, 0, width, height);
        g.drawRect(0, 0, width, height);
        g.setColor(Color.YELLOW);

        if (MouseEntered){
            g.setColor(Color.CYAN);
            MouseEntered= false;
        }
        if (MouseExit){
            g.setColor(Color.orange);
            MouseExit= false;
        }
        g.fillRect(0, 0, width, height);
    }
}

public class RectangleContainer extends JFrame{

    public RectangleContainer(){
        setLayout(null);
        JPanel myPanel = new RectangleClass(100,100);
        myPanel.setBounds(50, 50, 200, 200);
        setSize(200,200);
        add(myPanel);
        setVisible(true);
    }

    public static void main(String args[]){
        new RectangleContainer();
    }
}
4

2 に答える 2

3

実際には のmouseEnteredメソッドをオーバーライドしていません。MouseAdapter必要です

@Override
public void mouseEntered(MouseEvent e) {

追加@Overrideすると、コンパイラは正しいメソッドをオーバーライドしていることを確認できます。同じことがmouseExited BTWにも当てはまります。


補足:

于 2013-03-17T03:23:48.950 に答える
1

mouseEnteredコード内でメソッドを大文字の M で開始しました。小文字の m に変更します。

于 2013-03-17T03:26:33.017 に答える