Schaltflächenvorlagenklasse nach Grafik Die Eigenschaften X und Y sind die Mittelpositionen der Schaltflächen Schatten, Schwebemethode, Druckmethode, Klickbeurteilung Es ist in Ordnung, eine abstrakte Klasse daraus zu machen und eine Klickmethode hinzuzufügen
GraphicBtn.java
public class GraphicBtn {
int X, Y; //Knopfmittelposition
int w, h; //Tastenbreite, Höhe
String text; //Schaltflächentext
Color btnC, textC; //Tastenfarbe, Textfarbe
Font font; //Schriftart
boolean hover, press; //Hover, drück
//Konstrukteur
public Button(Game game,int x,int y,int w,int h,
String text,Color btnC,Color textC,Font font) {
X = x;
Y = y;
this.w = w;
this.h = h;
this.text = text;
this.btnC = btnC;
this.textC = textC;
this.font = font;
hover = false;
press = false;
}
//Zeichenmethode
public void draw(Graphics g,Canvas canvas) {
g.setColor(btnC.darker());
g.fillRoundRect(X-w/2, Y-h/2+5, w, h, 10, 10);
g.setColor(btnC);
g.fillRoundRect(X-w/2, Y-h/2+(press?2:0), w, h, 10, 10);
g.setColor(textC);
if(hover) setAlpha(g,180);
drawStrCenter(g,X,Y+(press?2:0));
}
//Zentrierter Text
public void drawStrCenter(Graphics g,int x,int y){
g.setFont(font);
FontMetrics fm = g.getFontMetrics();
Rectangle rectText = fm.getStringBounds(text, g).getBounds();
x = x-rectText.width/2;
y = y-rectText.height/2+fm.getMaxAscent();
g.drawString(text, x, y);
}
//Ändern Sie nur den Alpha-Wert
public void setAlpha(Graphics g, int alpha) {
int R = g.getColor().getRed();
int G = g.getColor().getGreen();
int B = g.getColor().getBlue();
g.setColor(new Color(R, G, B, alpha));
}
//Schwebemethode
public void mouseMoved(int x,int y) {
if(X-w/2 < x && x < X+w/2 && Y-h/2 < y && y < Y+h/2) {
hover = true;
} else {
hover = false;
press = false;
}
}
//Drücken Sie Methode
public void mousePressed(int x,int y) {
if(hover) press = true;
}
//Freigabemethode
public void mouseReleased(int x,int y) {
press = false;
}
//Klicken Sie auf Urteil
public boolean isClick(int x,int y) {
if(X-w/2 < x && x < X+w/2 && Y-h/2 < y && y < Y+h/2) {
return true;
}
return false;
}
}
Recommended Posts