package org.yi.happy.mouse; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.SwingUtilities; /** * Track mouse events over a panel and log in a text area. */ public class MouseTrackMain implements Runnable { private final JTextArea textArea; { textArea = new JTextArea(10, 80); textArea.setEditable(false); } private void log(String event) { textArea.append(event + "\n"); } private void log(String event, MouseEvent e) { log(event + ": " + e); } private MouseListener mouse = new MouseListener() { @Override public void mouseClicked(MouseEvent e) { log("click", e); } @Override public void mousePressed(MouseEvent e) { log("pressed", e); } @Override public void mouseReleased(MouseEvent e) { log("released", e); } @Override public void mouseEntered(MouseEvent e) { log("entered", e); } @Override public void mouseExited(MouseEvent e) { log("exited", e); } }; private MouseMotionListener mouseMotion = new MouseMotionListener() { @Override public void mouseMoved(MouseEvent e) { log("moved", e); } @Override public void mouseDragged(MouseEvent e) { log("dragged", e); } }; @Override public void run() { JPanel blankPanel = new JPanel(); blankPanel.setPreferredSize(new Dimension(400, 300)); blankPanel.setBackground(new Color(0x7f, 0x7f, 0xff)); JScrollPane scroll = new JScrollPane(textArea); JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT); split.add(blankPanel); split.add(scroll); JFrame window = new JFrame("Mouse Track"); Container panel = window.getContentPane(); panel.setLayout(new BorderLayout()); panel.add(split); blankPanel.addMouseListener(mouse); blankPanel.addMouseMotionListener(mouseMotion); window.pack(); window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); window.setLocationByPlatform(true); window.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new MouseTrackMain()); } }
This program is laid out so that there are no forward references.
No comments:
Post a Comment