java鼠标监听为什么?java中给一个JLable数组添加鼠标监听
大家好,今天来为大家解答java鼠标监听为什么这个问题的一些问题点,包括java中给一个JLable数组添加鼠标监听也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
java中给一个JLable数组添加鼠标监听
for(int i= 0; i< gt.length; i++){
final int index= i;
gt[i].addMouseListener(new MouseAdapter(){
@Override
public void mouseEntered(MouseEvent e){
gt[index].setIcon(new ImageIcon("newIcon.png"));
}
@Override
public void mouseExited(MouseEvent e){
gt[index].setIcon(null);
}
});
}
在这个示例中,我们使用
for
循环遍历
gt
数组中的每个
JLabel
,并为其添加一个匿名的
MouseAdapter
对象作为鼠标监听器。在监听器中,我们使用
final
关键字定义了一个
index
变量,用于存储当前
JLabel
在数组中的索引。然后,我们在
mouseEntered
方法中使用
setIcon
方法将当前
JLabel
的图标设置为新的图标。在
mouseExited
方法中,我们将当前
JLabel
的图标设置为
null
,以恢复其原始图标。
Java 事件处理
Container contentpane= f.getContentPane();//创建容器
contentpane.setLayout(null);//设置容器的布局为“没有布局”
l.setBounds(0, 0, 0, 0);//设置jlabel边界
b.setBounds(0, 0, 0, 0);//设置jbutton边界
b.addActionListener(new ButtonHandle());//jbutton添加动作监听器
b.addMouseListener(new ButtonMouseHandle());//jbutton添加鼠标动作监听器
f.addWindowListener(new WindowHandle());//jframe添加窗口监听器
contentpane.add(l);//把jlabel放入容器
contentpane.add(b);//把jbutton放入容器
f.setSize(0, 0);//设置jframe长宽
f.setVisible(true);//设置jframe为可见
类ButtonHandle实现ActionListener的接口,设置事件触发后需要做的事情
class ButtonHandle implements ActionListener{
public void actionPerformed(ActionEvent e)
{
l.setText("");
}
}
类ButtonMouseHandle继承MouseAdapter,设置事件触发后需要做的事情
class ButtonMouseHandle extends MouseAdapter{
public void mouseEntered(MouseEvent e)
{
l.setText("");
}
public void mouseExited(MouseEvent e)
{
l.setText("");
}
}
类WindowHandle继承WindowAdapter,设置事件触发后需要做的事情
class WindowHandle extends WindowAdapter{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
还有就是为什么构造函数里获得container,设置JLabel,JButton等,并且在里面注册监听,因为当创建这个类的时候,是先调用这个类的构造函数,这样你只要在new Demo5()的时候,就已经把需要做的事情都做好了,否则你还需要自己打上方法,然后再调用
java鼠标点击事件怎么做
java鼠标点击事件的方法如下:
<spanstyle="font-family:Verdana;">事件源</span>.addMouseListener(newMouseAdapter(){//建立事件处理机制
@Override
publicvoidmouseClicked(MouseEvente){
if(e.getButton()==e.BUTTON1){//点击鼠标左键
intx=e.getX();
inty=e.getY();
Stringstr="您点击的是左键,鼠标当前点击位置的坐标是("+x+","+y+")";
label.setText(str);
}elseif(e.getButton()==e.BUTTON2){//点击鼠标滑轮
intx=e.getX();
inty=e.getY();
Stringstr="您点击的是滑轮,鼠标当前点击位置的坐标是("+x+","+y+")";
label.setText(str);
}
elseif(e.getButton()==e.BUTTON3){//点击鼠标右键
intx=e.getX();
inty=e.getY();
Stringstr="您点击的是右键,鼠标当前点击位置的坐标是("+x+","+y+")";
label.setText(str);
}
}
});
e.getButton()返回值分别为NOBUTTON、BUTTON1、BUTTON2、BUTTON3,分别代表着无点击、左击、中间键、右击三种情况。
java 键盘监听事件为什么需要点一下窗口
看下来应该是键盘“先要进入某个可输入文字的组件中”,通常点击窗口后 JFrame会尝试把键盘焦点恢复到之前焦点从这个 JFrame窗体离开时当时焦点所在的那个组件上,如果当时没有输入组件接收焦点的话,就会自动重新计算第一个可接收输入焦点的组件。然后之后的键盘事件就会自动发送到这个输入组件上了。因此,当只是激活当前窗体的 JFrame比如鼠标点了标题栏而不是在 JFrame的 Content Pane的区域内,那么输入焦点并不会自动恢复。我们需要在 JFrame的 Content Pane中点击一次。
要了解一点,Windows编程中图形组件有两种,一种是 Window窗体(包括 JFrame, JDialog, Frame, Dialog)它们是直接与 Windows操作系统打交道的,它的标题栏实际上与操作系统直接相关,比如最大化最小化后被当前窗体遮挡的应用程序窗体需要重画,第二种是 JPanel, JTextField之类的 Window内的组件。
焦点点击在 Window窗体型组件时有额外的事情需要做的。
OK,关于java鼠标监听为什么和java中给一个JLable数组添加鼠标监听的内容到此结束了,希望对大家有所帮助。