Как использовать мышь движение событий в Swing

События происходят движения мыши, когда мышь перемещается над компонентом. Любой компонент может генерировать эти события, и класс должен реализовать MouseMotionListener интерфейс для их поддержки.

В следующем примере показано, как использовать движение мышью события в Свинг:


import javax.swing.*;



import java.awt.Color;

import java.awt.Dimension;

import java.awt.Insets;

import java.awt.GridBagLayout;

import java.awt.GridBagConstraints;



import java.awt.event.MouseMotionListener;

import java.awt.event.MouseEvent;



public class MouseMotionEventDemo extends JPanel 

                                  implements MouseMotionListener {

    BlankArea blankArea;

    JTextArea textArea;

    static final String newline = "\n";



    public MouseMotionEventDemo() {

        super(new GridBagLayout());

        GridBagLayout gridbag = (GridBagLayout)getLayout();

        GridBagConstraints c = new GridBagConstraints();



        c.fill = GridBagConstraints.BOTH;

        c.gridwidth = GridBagConstraints.REMAINDER;

        c.weightx = 1.0;

        c.weighty = 1.0;



        c.insets = new Insets(1111);

        blankArea = new BlankArea(new Color(0.98f0.97f0.85f));

        gridbag.setConstraints(blankArea, c);

        add(blankArea);



        c.insets = new Insets(0000);

        textArea = new JTextArea();

        textArea.setEditable(false);

        JScrollPane scrollPane = new JScrollPane(textArea,

                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        scrollPane.setPreferredSize(new Dimension(20075));

        gridbag.setConstraints(scrollPane, c);

        add(scrollPane);



        //Register for mouse events on blankArea and panel.

        blankArea.addMouseMotionListener(this);

        addMouseMotionListener(this);



        setPreferredSize(new Dimension(450450));

        setBorder(BorderFactory.createEmptyBorder(20,20,20,20));

    }



    public void mouseMoved(MouseEvent e) {

       saySomething("Mouse moved", e);

    }



    public void mouseDragged(MouseEvent e) {

       saySomething("Mouse dragged", e);

    }



    void saySomething(String eventDescription, MouseEvent e) {

        textArea.append(eventDescription 

                        " (" + e.getX() "," + e.getY() ")"

                        " detected on "

                        + e.getComponent().getClass().getName()

                        + newline);

        textArea.setCaretPosition(textArea.getDocument().getLength());

    }



    /**

     * Create the GUI and show it.  For thread safety,

     * this method should be invoked from the

     * event-dispatching thread.

     */

    private static void createAndShowGUI() {

        //Make sure we have nice window decorations.

        JFrame.setDefaultLookAndFeelDecorated(true);



        //Create and set up the window.

        JFrame frame = new JFrame("MouseMotionEventDemo");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



        //Create and set up the content pane.

        JComponent newContentPane = new MouseMotionEventDemo();

        newContentPane.setOpaque(true)//content panes must be opaque

        frame.setContentPane(newContentPane);



        //Display the window.

        frame.pack();

        frame.setVisible(true);

    }



    public static void main(String[] args) {

        //Schedule a job for the event-dispatching thread:

        //creating and showing this application's GUI.

        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                createAndShowGUI();

            }

        });

    }

}





import javax.swing.*;

import java.awt.Dimension;

import java.awt.Color;

import java.awt.Graphics;



public class BlankArea extends JLabel {

    Dimension minSize = new Dimension(100100);



    public BlankArea(Color color) {

        setBackground(color);

        setOpaque(true);

        setBorder(BorderFactory.createLineBorder(Color.black));

    }



    public Dimension getMinimumSize() {

        return minSize;

    }



    public Dimension getPreferredSize() {

        return minSize;

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>