Я создаю программу на 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выдает ошибки о необходимости абстрактных классов, когда я пытаюсь это реализовать.Спасибо за любую помощь, вы можете дать мне.
Полный код