MouseListener

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;

public class TestMouse extends JFrame implements MouseInputListener {
static JFrame frame;
JLabel lbText;
JPanel jpanel;
JPanel jContentPane;
int x1 = 0, y1 = 0;
int startX, startY, endX, endY;
int flag = 0;
boolean shiftPress = false; // shift键是否按下
KeyEventTest keyListener;
/**
* 默认的构造函数
*/
public TestMouse() {
super( "模式对话框 ");
setContentPane(getContentpane()); // 添加包容器
setJMenuBar(createMenuBar()); // 添加菜单工具栏
setSize(500, 400); // size
setLocation(100, 100); // start location
jContentPane.addKeyListener(keyListener);
}
/**
* 带一个参数的构造函数
*/
public TestMouse(String frameName) {
setTitle(frameName);
setContentPane(getContentpane()); // 添加包容器
setJMenuBar(createMenuBar()); // 添加菜单工具栏
setSize(500, 400); // size
setLocation(100, 100); // start location
jContentPane.addKeyListener(keyListener);
}

/**
* @return contentPane_根容器
*/
private JPanel getContentpane() {
if (jContentPane == null) {
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.addMouseListener(this);
jContentPane.addMouseMotionListener(this);
jContentPane.add(getpanel(), java.awt.BorderLayout.CENTER);
}
return jContentPane;

}

private JPanel getpanel() {
if (jpanel == null) {
jpanel = new JPanel();
jpanel.setLayout(null);
jpanel.add(getLable());
}
return jpanel;
}
private Component getLable() {
lbText = new JLabel();
lbText.setBounds(10, 10, 150, 30);
return lbText;
}

/**
* @return bar_菜单工具栏
*/
private JMenuBar createMenuBar() {
JMenuBar bar = new JMenuBar();
JMenu fileMenu = new JMenu( "文件 ");
bar.add(fileMenu);
return bar;
}
public static void main(String[] args) {
frame = new TestMouse();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void mouseClicked(MouseEvent e) {
if (e.getModifiers() == Event.META_MASK) {
PopupMenu popupMenu = new PopupMenu(); // 弹出式主菜单
MenuItem rightItem = new MenuItem();
rightItem.setLabel( "显示右键 ");
rightItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
lbText.setText( "显示右键 ");
}
});

frame.add(popupMenu);
popupMenu.add(rightItem);
popupMenu.show(frame.getContentPane(), e.getX(), e.getY());
}
}
public void mousePressed(MouseEvent arg0) {
startX = arg0.getX();
startY = arg0.getY();

}
public void mouseReleased(MouseEvent arg0) {
this.lbText.setText( " ");
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mouseDragged(MouseEvent e) {
flag = 2;
endX = e.getX();
endY = e.getY();
repaint();
}
public void update(Graphics g) {
g.setColor(this.getBackground());
g.fillRect(0, 0, this.getWidth(), this.getHeight());
paint(g);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLUE);
if (flag == 1) {
} else if (flag == 2) {
g2.drawString( "鼠标坐标:( " + x1 + ", " + y1 + ") ", 10, 50);
if (this.shiftPress == true) {
g2.drawLine(startX, startY, endX, startY);
} else {
g2.drawLine(startX, startY, endX, endY);
}
}
}
public void mouseMoved(MouseEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值