[Java] Classe de modèle de bouton par Graphics

Classe de modèle de bouton par Graphics Les propriétés X et Y sont les positions centrales des boutons Ombre, méthode de survol, méthode de presse, jugement de clic C'est OK pour en faire une classe abstraite et ajouter une méthode de clic

GraphicBtn.java


public class GraphicBtn {
	int X, Y; //Position centrale du bouton
	int w, h; //Bouton largeur, hauteur
	String text; //Texte du bouton
	Color btnC, textC; //Couleur du bouton, couleur du texte
	Font font; //Police du texte
	boolean hover, press; //Survolez, appuyez sur

	//constructeur
	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;
	}
	//Méthode de dessin
	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));
	}
	//Texte centré
	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);
	}
	//Changer uniquement la valeur alpha
	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));
	}
	//Méthode de survol
	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;
		}
	}
	//Méthode de presse
	public void mousePressed(int x,int y) {
		if(hover) press = true;
	}
	//Méthode de libération
	public void mouseReleased(int x,int y) {
		press = false;
	}
	//Cliquez sur le jugement
	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] Classe de modèle de bouton par Graphics
[Android Studio] Transition d'écran par le bouton [Java]
Méthodes de classe Java
[Java] Héritage de classe
classe Scanner java
java (classe abstraite)
[Java] Classe imbriquée
Classe anonyme Java
Modèle [Java] .gitignore
À propos de la classe Java
[java] Classe abstraite
[Java] Classe d'objets
Classe locale Java
À propos de la division de classe (Java)
Examen de la classe interne Java
Champ de type de classe Java
Programmation Java (méthode de classe)
À propos de la classe Java String
Programmation Java (structure de classe)
À propos de la classe abstraite de Java
Découvrez tous les ID de fuseau horaire pris en charge par la classe Java TimeZone
Sous-chaîne de mémo Java (classe standard)
[Template] Connexion MySQL avec Java
Astuces Java - Modificateurs de classe StaticUtility
Longueur du mémo Java (classe standard)
[Implémentation] Notes de classe de processus java
À propos des types de chargeur de classe Java
Comment utiliser la classe Java
[Java] Comparateur de la classe Collection
Définition et instanciation de classe Java
Résumé orienté objet par les débutants (Java)
Moteur de template Pebble (Java) --Guide
Mémo d'apprentissage Java (classe abstraite)
Résumé de la classe Java Math
[Java] Qu'est-ce que l'héritage de classe?
Méthode de classe variable de classe Java
[Notions de base Java] Qu'est-ce que la classe?