/ / Java Changer la couleur de la forme en fonction de l'entrée - java, swing, graphics

Java Changer la couleur de la forme en fonction de l'entrée - java, swing, graphics

J'ai cette classe où je crée une étoile. Quand je le lance, j'ai une boîte de message qui demande de choisir une couleur. Je veux que mon étoile soit de cette couleur.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.GeneralPath;
import javax.swing.*;
public class Control extends JPanel{
JFrame frame = new JFrame();
String background;
final Color color = Color.getHSBColor(0.56f, 1.0f, 0.8f);
final Color red=Color.red;
final Color green=Color.GREEN;
final Color yellow=Color.YELLOW;
private final double points[][] = {
{ 0, 85 }, { 75, 75 }, { 100, 10 }, { 125, 75 },
{ 200, 85 }, { 150, 125 }, { 160, 190 }, { 100, 150 },
{ 40, 190 }, { 50, 125 }, { 0, 85 }
};


private void doDrawing(Graphics g) {
Graphics2D g2d = (Graphics2D) g;

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);

g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
GeneralPath star = new GeneralPath();

star.moveTo(points[0][0], points[0][1]);

for (int k = 1; k < points.length; k++)
star.lineTo(points[k][0], points[k][1]);

star.closePath();
g2d.fill(star);

g2d.dispose();
}

@Override
public void paintComponent(Graphics g) {
g.setColor(Color.MAGENTA); //should be the color of chosen button
super.paintComponent(g);
doDrawing(g);
}


public void addMessage() {
Object[] options = {"Red","Green","Yellow", "Black"};
int n = JOptionPane.showOptionDialog(frame, "Choose a color ", "Question of a day",
JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
null,options, options[2]);
for (int i = 0; i < 4; i++) {
if(options[i]=="Red"){
//paint star red }
else if(options[i]=="Green")
//paint star ="Green";
else if(options[i]=="Yellow")
//paint star   ="Yellow";
}
}

}

Réponses:

0 pour la réponse № 1

Le plus simple est d’avoir un Color objet que l'utilisateur peut définir:

Color userChosenColor;

public void setColor(Color color) {
this.userChosenColor = color;
}

Puis définissez la couleur paintComponent En tant que tel:

g.setColor(userChosenColor);

Sinon, si vous souhaitez qu'ils puissent sélectionner la plus large gamme de couleurs), demandez-leur de définir la couleur en fonction des valeurs de rouge, de vert et de bleu:

public void setColor(int redVal, int greenVal, int blueVal) {
this.userChosenColor = new Color(redVal, greenVal, blueVal);
}

MODIFIER:

Après avoir relu la question, il semble que vous demandiez comment définir la même couleur que celle d'un bouton. Vous pouvez obtenir la couleur d'un bouton avec button.getBackground().

g.setColor(button.getBackground());