gpt4 book ai didi

Java 鼠标事件 - MouseClicked 工作正常,但 MousePressed 和 MouseReleased 不行

转载 作者:行者123 更新时间:2023-12-01 11:20:22 25 4
gpt4 key购买 nike

我尝试在类 A 中处理 MousePressed 事件,该类从抽象类 B 扩展并实现接口(interface) C,但我只处理 MouseClicked,MousePressed 不起作用

接口(interface)C

    public interface C {

public void setText(String msg, Dimension d);

public void setVisible(boolean b);

public boolean isVisible();

public Dimension getSize();

public void setLocation(Point p);

}

抽象类B

public abstract class B {
public B() {
}

int x, y, w, h, size;

private boolean visible = false;

MouseListener mouseListener = null;

boolean isInner(int p_x, int p_y) {
......
}

public void addMouseListener(MouseListener l) {
mouseListener = l;
}

public void setVisible(boolean b) {
.....
}

public boolean isVisible() {
........
}

public void repaint() {
.......
}

public void setSize(int size) {
.......
}

public void setLocation(int x, int y) {
........
}

public Dimension getSize() {
.......
}

public Point getLocationOnScreen() {
.........
}

}

我的A类:

public class A extends B implements C {

private String _text;

private String[] _lines;

private Color _backgroundColor = new Color(255, 255, 192);

private Color _borderColor = new Color(128, 128, 128);

private Color _foreColor = Color.black;

private int _fontSize = 9;

private boolean inner_viewer = false;

private TextLayout textLayout;

private TextLayout _lstTextLayout[];


public A(String msg, Dimension d, int fontSize, Color foreColor, Color bkColor, Color borderColor) {

setText(msg, d, fontSize, foreColor, bkColor, borderColor);

inner_viewer = EXE_NAME.equals(D.get_extensionToolCommand());

this.addMouseListener(new MouseListener() {

@Override
public void mouseReleased(MouseEvent e) {
System.err.println("Released");
}

@Override
public void mousePressed(MouseEvent e) {
System.err.println("Pressed");
}

@Override
public void mouseExited(MouseEvent e) {
System.err.println("Exited");
}

@Override
public void mouseEntered(MouseEvent e) {
System.err.println("Entered");
}

@Override
public void mouseClicked(MouseEvent e) {
System.err.println("Click");
}
});
}

@Override
public void setText(String msg, Dimension d, int fontSize, Color foreColor, Color bkColor, Color borderColor) {
this._fontSize = fontSize;
this._foreColor = foreColor;
this._backgroundColor = bkColor;
this._borderColor = borderColor;
this._text = msg;
this.w = d.width;
this.h = d.height;
this._lines = _text.split("\n");
this._lstTextLayout = new TextLayout[_lines.length];
}

@Override
public void setLocation(Point p) {
super.setLocation(p.x, p.y);
}

public void paint(Graphics g) {
................
}}

我不明白“为什么只有 MouseClicked 工作正常,所有其他鼠标事件都不起作用”。

感谢您的所有回答。

最佳答案

您所声称的情况是不可能的。 MouseClicked 是 MousePressed 和 MouseReleased 的弟弟...它本身并不是一个系统事件,而是由 MousePressed 和 MouseReleased 之间的计时生成的合成事件。要进一步证明这一点,请查看 java.awt.Robot... 看到其中的 MouseClicked 方法吗?不,因为没有。

不可能。案件已结

关于Java 鼠标事件 - MouseClicked 工作正常,但 MousePressed 和 MouseReleased 不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com