0

わかりました、初めて MouseListener を使用しようとしていますが、うまくいきません。私のプログラムは正常にコンパイルされますが、MouseListener イベントは何もしていないようです。これが私のコードです:

import java.awt.color.*;
import java.awt.font.*;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class yo implements MouseListener {

Image image;
JFrame frame = new JFrame();
JLabel heloo = new JLabel("yo");
JPanel panel = new JPanel()
{
    @Override
    public void paintComponent(Graphics g)
    {
        //super.paintComponent(g);
        //ImageIcon i = new ImageIcon("hi.jpg");
        //image = i.getImage();
        //g.drawImage(image,150,150,null);
        //g.drawString("Hello",100,100);
        //g.drawString("Hi",50,50);
    }
};


public yo()
{
    frame.add(panel);
    frame.setTitle("Hello");
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    panel.add(heloo);
}

public void mouseClicked (MouseEvent Event)
{
    heloo.setText("Hi");
    System.out.println("Hi");
}
public void mouseEntered (MouseEvent Event)
{System.out.println("Hi");}
public void mouseExited (MouseEvent Event)
{}
public void mousePressed (MouseEvent Event)
{}
public void mouseReleased (MouseEvent Event)
{}

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

何もしないということは、システムがテキストをコマンドラインに出力したり、JLabel を変更したりしないことを意味します。

それを機能させる方法についての助けは素晴らしいでしょう、ありがとう。

ps 私は初心者なので、よろしくお願いします。

4

3 に答える 3

0

を作成しましyoMouseListenerが、何にも追加していません。

.addMouseListener(this);聴きたい各コンポーネントで使用する必要があります。

例えば

frame.addMouseListener(this)、または静的メソッドの場合frame.addMouseListener(myInstanceOfYo);

試す

public yo()
{
    frame.add(panel);
    frame.setTitle("Hello");
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    panel.add(heloo);


    frame.addMouseListener(this);


}

編集:

また、各 MouseListener メソッドのテスト テキストを一意に変更することをお勧めします。これにより、どのメソッドがいつ呼び出されたかを簡単に確認できます。また、パラメーター名は小文字で始めます (イベントはイベントになります)。これは良い習慣です。

すなわち

public void mouseClicked (MouseEvent event)
{
    heloo.setText("Hi");
    System.out.println("Clicked.");
}
public void mouseEntered (MouseEvent event)
{
    System.out.println("Entered.");
}
public void mouseExited (MouseEvent event)
{
    System.out.println("Exited.");
}
public void mousePressed (MouseEvent event)
{
    System.out.println("Pressed.");
}
public void mouseReleased (MouseEvent event)
{
    System.out.println("Released.");
}
于 2013-06-22T00:23:52.257 に答える
0

置く

frame.addMouseListener(this);

コンストラクターで

于 2013-06-21T23:57:02.503 に答える