2013-06-21 3 views
0

Хорошо, я пытаюсь использовать MouseListener в первый раз, но мне не очень повезло. Моя программа компилируется отлично, но события 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 не делать.

Любая помощь в том, как заставить его работать, было бы здорово, спасибо.

p.s. Я - нуб, будь добр.

+0

Я не вижу где-нибудь, что вы зарегистрировать слушателя мыши? Попробуйте что-то вроде heloo.addMouseListener (new yo()); – MadProgrammer

+0

Я только что заработал, не волнуйся. Я просто добавил frame.addMouseListener (это); –

ответ

0

поставил

frame.addMouseListener(this); 

в конструкторе

+1

Это не сработает. Класс, реализующий MouseListener, не является компонентом. – camickr

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); 


} 

Edit:

Я также предлагаю вам изменить тестовый текст в каждом методе 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."); 
} 
Смежные вопросы