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)   {}

你可能感兴趣的:(java,swing)