java JLabel组事件
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassDemoimplements...
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Demo implements MouseListener{
public Demo(){
JFrame frame=new JFrame();
Container contentPane=frame.getContentPane();
contentPane.setLayout(new GridLayout(4,1));
JLabel [] cube=new JLabel[4];
for(int i=0;i<4;i++) {
cube[i] = new JLabel(""+i+"");
cube[i].addMouseListener(this);
contentPane.add(cube[i]);
}
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){
//当鼠标移到标签上时,返回这个标签在数组中的下标
}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public static void main(String[] arg){
new Demo();
}
}
当鼠标移到标签上时,返回这个标签在数组中的下标 展开
import java.awt.*;
import java.awt.event.*;
public class Demo implements MouseListener{
public Demo(){
JFrame frame=new JFrame();
Container contentPane=frame.getContentPane();
contentPane.setLayout(new GridLayout(4,1));
JLabel [] cube=new JLabel[4];
for(int i=0;i<4;i++) {
cube[i] = new JLabel(""+i+"");
cube[i].addMouseListener(this);
contentPane.add(cube[i]);
}
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){
//当鼠标移到标签上时,返回这个标签在数组中的下标
}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public static void main(String[] arg){
new Demo();
}
}
当鼠标移到标签上时,返回这个标签在数组中的下标 展开
2个回答
展开全部
你好!!
这个问题的重点是如何将MouseEvent的事件源与数组中的元素进行匹配。
可以通过两种方式来实现,但都需要修改下代码,既将原来数组的声明放到构造函数外部,这样mouseEntered这个监听器的实现才可以访问你的数组变量。
方式一:
.....
public class Demo implements MouseListener{
JLabel [] cube;
public Demo(){
.....
cube=new JLabel[4];
.....
}
public void mouseEntered(MouseEvent e){
//当鼠标移到标签上时,返回这个标签在数组中的下标
JLabel tmp = (JLabel)e.getSource();
int index = 0;
for(int i=0;i<cube.length;i++){
if(cube[i]==tmp){
index = i;
}
}
JOptionPane.showMessageDialog(null, "当前标签在数组中的下标为:"+index, "标题",JOptionPane.INFORMATION_MESSAGE););
}
.....
}
方法二:使用ArrayList来存放JLabel,通过它的indexOf()直接返回索引
.....
import java.util.ArrayList; //导入相应的类
public class Demo implements MouseListener{
ArrayList<JLabel> al;
public Demo(){
.....
al=new ArrayList<JLabel>();
for(int i=0;i<4;i++) {
al.add( new JLabel(""+i*8+"") );
al.get(i).addMouseListener(this);
contentPane.add(al.get(i));
}
.....
}
public void mouseEntered(MouseEvent e){
//当鼠标移到标签上时,返回这个标签在数组中的下标
JLabel tmp = (JLabel)e.getSource();
int index = al.indexOf(tmp);
JOptionPane.showMessageDialog(null, "当前标签在数组中的下标为:"+index, "标题",JOptionPane.INFORMATION_MESSAGE););
}
.....
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询