用awt做了一個label對象,現在想讓它在鼠標右擊時,響應某個方法, 請問監聽器應該怎麼寫?
对于Lablel效果一样的
只要把PANEL改成LABEL就行了
[code="java"]/**
/**
import java.awt.*;
import java.awt.event.*;
public class CallByMouse {
/**
* @author Linyq.
*/
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
MyFrame frm = new MyFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyFrame extends JFrame{
public MyFrame(){
this.setTitle("MouseEvent 测试");
this.setSize(600,300);
this.setBackground(Color.DARK_GRAY);
this.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));
final JLabel label = new JLabel("鼠标没有任何动作");
this.getContentPane().add(label);
// 此文本标签用来记录鼠标动作
final JLabel xy = new JLabel("鼠标不在panel容器范围中");
this.getContentPane().add(xy);
// 此文本标签用来显示当前鼠标坐标
final JLabel wheel = new JLabel("滚轮等待动作..");
this.getContentPane().add(wheel);
// 此文本标签用来显示滚轮状态
// panel
Label __label = new Label("gggggggggggggggggg\ngggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg");
//Label _l = new Label("dasfasdfsdf");
//
//__label.setLayout(null);
__label.setSize(500,200);
__label.setBackground(Color.white);
this.getContentPane().add(__label);
// 鼠标事件(按下、释放、单击、进入或离开)的侦听器接口
__label.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
// 鼠标按键在组件上单击(按下并释放)时调用
label.setText("鼠标在panel容器上单击(按下并释放)");
}
public void mouseEntered(MouseEvent e) {
// 鼠标进入到组件上时调用
label.setText("鼠标进入panel容器");
}
public void mouseExited(MouseEvent e) {
// 鼠标离开组件时调用
label.setText("鼠标离开panel容器");
}
public void mousePressed(MouseEvent e) {
// 鼠标按键在组件上按下时调用
if(e.getClickCount()==2){
JOptionPane.showMessageDialog(null,"鼠标在panel容器上双击!");
}
if(e.getButton()==e.BUTTON3){
label.setText("鼠标右键在panel容器上按下");
}
if(e.getButton()==e.BUTTON1){
label.setText("鼠标左键在panel容器上按下");
}
if(e.getButton()==e.BUTTON2){
label.setText("鼠标中键在panel容器上按下");
}
}
public void mouseReleased(MouseEvent e) {
// 鼠标按钮在组件上释放时调用
label.setText("鼠标在panel容器上释放");
}
});
// 鼠标移动事件的侦听器接口
__label.addMouseMotionListener(new MouseMotionListener(){
@Override
public void mouseDragged(MouseEvent e) {
// 鼠标按键在组件上按下并拖动时调用
label.setText("鼠标在panel上按下并拖动");
}
@Override
public void mouseMoved(MouseEvent e) {
// 鼠标光标移动到组件上但无按键按下时调用
xy.setText("当前位置 (x:" + e.getX() + ",y:" + e.getY() + ") ");
}
});
// 鼠标滚轮事件的侦听器接口
__label.addMouseWheelListener(new MouseWheelListener(){
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// 鼠标滚轮旋转时调用
wheel.setText("滚轮向" + (e.getWheelRotation()>0?"下":"上") + "滚动");
}
});
this.setVisible(true);
}
}[/code]
可以参考这个
public void mousePressed(MouseEvent e) {
// 鼠标按键在组件上按下时调用
if(e.getClickCount()==2){
JOptionPane.showMessageDialog(null,"鼠标在panel容器上双击!");
}
if(e.getButton()==e.BUTTON3){
label.setText("鼠标右键在panel容器上按下");
}
[code="java"]/**
/**
import java.awt.*;
import java.awt.event.*;
public class CallByMouse {
/**
* @author Linyq.
*/
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
MyFrame frm = new MyFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyFrame extends JFrame{
public MyFrame(){
this.setTitle("MouseEvent 测试");
this.setSize(600,300);
this.setBackground(Color.DARK_GRAY);
this.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));
final JLabel label = new JLabel("鼠标没有任何动作");
this.getContentPane().add(label);
// 此文本标签用来记录鼠标动作
final JLabel xy = new JLabel("鼠标不在panel容器范围中");
this.getContentPane().add(xy);
// 此文本标签用来显示当前鼠标坐标
final JLabel wheel = new JLabel("滚轮等待动作..");
this.getContentPane().add(wheel);
// 此文本标签用来显示滚轮状态
// panel
Panel panel = new Panel();
panel.setLayout(null);
panel.setSize(500,200);
panel.setBackground(Color.black);
this.getContentPane().add(panel);
// 鼠标事件(按下、释放、单击、进入或离开)的侦听器接口
panel.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
// 鼠标按键在组件上单击(按下并释放)时调用
label.setText("鼠标在panel容器上单击(按下并释放)");
}
public void mouseEntered(MouseEvent e) {
// 鼠标进入到组件上时调用
label.setText("鼠标进入panel容器");
}
public void mouseExited(MouseEvent e) {
// 鼠标离开组件时调用
label.setText("鼠标离开panel容器");
}
public void mousePressed(MouseEvent e) {
// 鼠标按键在组件上按下时调用
if(e.getClickCount()==2){
JOptionPane.showMessageDialog(null,"鼠标在panel容器上双击!");
}
if(e.getButton()==e.BUTTON3){
label.setText("鼠标右键在panel容器上按下");
}
if(e.getButton()==e.BUTTON1){
label.setText("鼠标左键在panel容器上按下");
}
if(e.getButton()==e.BUTTON2){
label.setText("鼠标中键在panel容器上按下");
}
}
public void mouseReleased(MouseEvent e) {
// 鼠标按钮在组件上释放时调用
label.setText("鼠标在panel容器上释放");
}
});
// 鼠标移动事件的侦听器接口
panel.addMouseMotionListener(new MouseMotionListener(){
@Override
public void mouseDragged(MouseEvent e) {
// 鼠标按键在组件上按下并拖动时调用
label.setText("鼠标在panel上按下并拖动");
}
@Override
public void mouseMoved(MouseEvent e) {
// 鼠标光标移动到组件上但无按键按下时调用
xy.setText("当前位置 (x:" + e.getX() + ",y:" + e.getY() + ") ");
}
});
// 鼠标滚轮事件的侦听器接口
panel.addMouseWheelListener(new MouseWheelListener(){
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// 鼠标滚轮旋转时调用
wheel.setText("滚轮向" + (e.getWheelRotation()>0?"下":"上") + "滚动");
}
});
this.setVisible(true);
}
}[/code]