MouseListener - не работает с JTextArea

У меня есть Gui-класс, расширяющий JFrame. Вверху находится JMenuBar, а остальная часть состоит из большого JTextField.

Я реализовал mouseListener для этого класса, и проблема в том, что он, кажется, слушает только при нажатии на JMenuBar, а не на JTextArea. Итак, мой вопрос в том, как заставить mouseListener реагировать на щелчок мышью по JTextArea.

вот снимок Gui-класса (конструктор)

 public class Gui extends JFrame implements ActionListener, MouseListener {

private JMenu fileMenu;
private JTextArea textArea;
private JFileChooser chooser;

public static void main(String[] args) {

    new Gui().setVisible(true);

}

public Gui() {

    setSize(600, 600);
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

    createFileMenu();

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);
    menuBar.add(fileMenu);

    textArea = new JTextArea();

    JScrollPane scroll = new JScrollPane (textArea, 
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

    Container contentPane = getContentPane();
    contentPane.add(scroll);

    chooser = new JFileChooser();

     addMouseListener(this);

    setDefaultCloseOperation(EXIT_ON_CLOSE);

}

Снимок экрана


person java    schedule 15.04.2015    source источник
comment
Почему MouseListener должен реагировать на что-либо другое, кроме событий мыши, которые происходят с JFrame (где вы его зарегистрировали)? Может помочь Как написать прослушиватель мыши   -  person MadProgrammer    schedule 15.04.2015
comment
Есть как минимум два возможных решения вашей проблемы, но то, что вы хотите использовать, будет зависеть от того, чего вы пытаетесь достичь.   -  person MadProgrammer    schedule 15.04.2015
comment
@MadProgrammer - ой, да, вы правы. Как я мог это пропустить?   -  person java    schedule 15.04.2015


Ответы (1)


Добавьте прослушиватель мыши в текстовое поле вместо окна.

 textArea = new JTextArea();
 textArea.addMouseListener(this);
person mayank    schedule 15.04.2015