[Java] Button-Vorlagenklasse von Graphics

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

[Java] Button-Vorlagenklasse von Graphics
[Android Studio] Bildschirmübergang über die Schaltfläche [Java]
Java-Klassenmethoden
[Java] Klassenvererbung
Java-Scanner-Klasse
Java (abstrakte Klasse)
[Java] Verschachtelte Klasse
Anonyme Java-Klasse
[Java] .gitignore-Vorlage
Über die Java-Klasse
[Java] Abstrakte Klasse
[Java] Objektklasse
Lokale Java-Klasse
Über die Klassenteilung (Java)
Überprüfung der Java-Innenklasse
Feld für den Java-Klassentyp
Java-Programmierung (Klassenmethode)
Informationen zur Java String-Klasse
Java-Programmierung (Klassenstruktur)
Über die abstrakte Klasse von Java
Finden Sie alle Zeitzonen-IDs heraus, die von der Java TimeZone-Klasse unterstützt werden
Java-Memo-Teilzeichenfolge (Standardklasse)
[Vorlage] MySQL-Verbindung mit Java
Java-Tipps - Modifikatoren der StataticUtility-Klasse
Länge des Java-Memos (Standardklasse)
[Implementierung] Java Prozessklassennotizen
Informationen zu Java Class Loader-Typen
Verwendung der Java-Klasse
[Java] Komparator der Collection-Klasse
Definition und Instanziierung von Java-Klassen
Objektorientierte Zusammenfassung von Anfängern (Java)
Template Engine Pebble (Java) - Leitfaden
Java-Lernnotiz (abstrakte Klasse)
Zusammenfassung der Java Math Klasse
[Java] Was ist Klassenvererbung?
Java-Klasse Variable Klassenmethode
[Java-Grundlagen] Was ist Klasse?