2016-09-26 4 views
1

私は星を作成するこのクラスを持っています。私はそれを実行すると、色を選択するように頼むメッセージボックスがあります。私は自分の星をその色にしたい。あるいはJava入力に応じて形状の色を変更します

g.setColor(userChosenColor); 

Color userChosenColor; 

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

は次にようpaintComponentに色を設定:

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"; 
    } 
} 

}

+1

実際は非常に簡単です。まず、ポイントでjava.awt.Polygonを作成します。次に、Graphics2D.draw/fill(Shape)を使用します。詳細については、createStandardStarをチェックしてください:https://sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/util/ShapeUtils.java – ControlAltDel

+0

1)より良いヘルプをもっと早く投稿するには、[MCVE]または[Short 、Self Contained、Correct Example](http://www.sscce.org/)を参照してください。 2)「コードブロックの括弧の検出/修正」(http://meta.stackexchange.com/q/251795/155831)を参照して、修正できなくなった問題を解決してください。 –

答えて

0

最も簡単な方法は、ユーザが設定できるColorオブジェクトを有することです(色の範囲を広げることができるようにするには)彼らは、赤、緑、青の値に基づいて色を設定します。

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

EDIT:

再読み込み質問したら、同じ色に設定する方法を求めているように見えますボタンの色として。ボタンの色はbutton.getBackground()で取得できます。

g.setColor(button.getBackground()); 
関連する問題