java - java - 如何在按钮上获得鼠标按下事件
问题描述
我正在用 Java 创建一个程序,并且想制作自己的按钮类而不是使用 JButton。我已经整理出了所有的美学,但我不确定如何在 Java 中获得鼠标按下事件。这是我的代码:
// Button.java
package cella;
import java.awt.Color;
import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
public class Button extends MouseAdapter {
int x, y, w, h;
String ph, val;
boolean mouseDown;
Color LIGHTGRAY = new Color(200, 200, 200);
public Button(int xt, int yt, int wt, int ht, String pht, String valt) {
x = xt;
y = yt;
w = wt;
h = ht;
ph = pht;
val = valt;
mouseDown = false;
}
public void draw(Graphics g, Point mouse) {
if (contains(mouse)) {
g.setColor(Color.GRAY);
} else {
g.setColor(LIGHTGRAY);
}
g.fillRect(x, y, w, h);
g.setColor(Color.BLACK);
g.drawRect(x, y, w, h);
g.drawString(ph, x + 5, y + h - 5);
}
private boolean contains(Point pos) {
if (pos.x > x && pos.x < x + w && pos.y > y && pos.y < y + h) {
return true;
} else {
return false;
}
}
public boolean pressed(Point pos) {
if (contains(pos) && mouseDown) {
System.out.println("Pressed");
return true;
}
else return false;
}
}
布尔 mouseDown 将设置为true
当鼠标被按下然后false
被释放时,但是我找不到捕获这些事件的方法,当我尝试实现它时,mouseListener 会给出关于需要抽象类的错误。感谢你给与我的帮助。
解决方案
尝试这个。
JButton button = new JButton("Click!");
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.NOBUTTON) {
textArea.setText("No button clicked...");
} else if (e.getButton() == MouseEvent.BUTTON1) {
textArea.setText("Button 1 clicked...");
}
}
});
查看可用方法
希望这有帮助!
推荐阅读
- angular - 下拉框在 Angular 中被挤压
- c# - 如何使用参数在 ReactiveUI 中打开新窗口
- bash - 如何通过 inputrc 向 Readline 函数提供参数
- wordpress - 使用自定义菜单结构协调 Wordpress 导航菜单
- kdb - KDB - 如果不同的 col = 某个值,则将 col 乘以 -1
- python - 从子记录 Odoo V8 更新父级
- php - PHP:使用 lighttpd 获取用户的 IP 地址
- ruby-on-rails - 需要帮助重构以使用 .where 子句 - ruby on rails
- powershell - 我将如何编写一种方法来遍历 bitBucket 中的每个发布分支并将它们分隔在本地驱动器中自己的文件夹中?
- jquery - /?wc-ajax=checkout 504 错误但仍在付款