我正在使用JLabel数组,其中可以单击多个对象(为简单起见,下面仅显示一个对象)。单击每个按钮时,它应运行一小段代码,根据单击的对象来更改开关。之后,它应该运行通用的代码,该代码针对每个JLabel运行,但是根据开关的执行略有不同。
问题是下面的示例首先运行“ //第二运行此代码”位,然后运行“ //首先运行此代码”位。有什么办法可以扭转这种现象?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class ListenToMice extends JFrame implements MouseListener
{
private JLabel[] difference = new JLabel[11];
public ListenToMice( )
{
difference[1].addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e) {
//run this code first
}
});
}
public void mouseClicked(MouseEvent e) {
//run this code second
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
解决方案是将您想要的事件设置为“ mousePressed”,然后将其设置为“ mouseReleased”。这样,当用户按下按钮时将调用第一个事件,而当用户释放按钮时将调用第二个事件。不确定天气是否会与较长的代码一起使用,从而使计算机花了一些时间来处理,但是对于这段简短的代码,它可以正常工作。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class ListenToMice extends JFrame implements MouseListener
{
private JLabel[] difference = new JLabel[11];
public ListenToMice( )
{
difference[1].addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e) {
//this code will now run first (see how it is "mousePressed" above this text
}
});
}
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) {
//put code you want second here
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句