JavaFX如何更改显示形状的颜色';s根据用户输入填写?
我想知道如何使用Java/JavaFX根据用户输入更改显示形状填充的颜色。 在获取用于显示形状的用户输入后,我希望程序获取另一个用于更改形状颜色的用户输入。 这个想法是JavaFX如何更改显示形状的颜色';s根据用户输入填写?,java,javafx,input,colors,shapes,Java,Javafx,Input,Colors,Shapes,我想知道如何使用Java/JavaFX根据用户输入更改显示形状填充的颜色。 在获取用于显示形状的用户输入后,我希望程序获取另一个用于更改形状颜色的用户输入。 这个想法是 从用户处获取输入以显示形状(例如,如果孩子们在控制台上键入“三角形”,程序将三角形显示为图形) 从用户处获取输入以更改显示形状的颜色(例如,如果孩子们在控制台上键入“蓝色”,则程序会将三角形填充的颜色更改为蓝色) (用代码描述可能非常好,但如果不可能,任何提示都将不胜感激) 使用控制台输入或UI输入(例如TextField)不是
import java.util.Scanner;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class TestApp extends Application {
public static void main(final String... args) {
launch(args);
}
GraphicsContext gc;
@Override
public void start (Stage stage) {
Group root = new Group();
Canvas cvs = new Canvas(400, 300);
root.getChildren().add(cvs);
this.gc = cvs.getGraphicsContext2D();
Scene scene = new Scene(root, 400, 300, Color.WHITE);
stage.setScene(scene);
stage.show();
Scanner userInputShape = new Scanner (System.in);
String shapeUser;
System.out.print("Enter your favorite shape");
shapeUser = userInputShape.next();
//Take input to show the desired shape
if(shapeUser.equalsIgnoreCase("rectangle"))
{
System.out.println("Your request is received... A drawing should pop up.");
drawRectangle();
System.out.println("Why don't you try to change the color of shape?");
//Take input for changing the shape color
if(shapeUser.equalsIgnoreCase("Yellow")) {
colorRectangle();
}
}
else {
System.out.println("Sorry, your input is invalid. Please re run this program.");
}
}
private void drawRectangle() {
gc.setFill(Color.RED);
gc.fillRect(50, 150, 150, 100);
}
private void colorRectangle() {
gc.setFill(Color.YELLOW);
gc.fillRect(50, 150, 150, 100);
}
}
我会考虑用多边形代替画布。然后,您可以只操纵三角形(多边形)的颜色。使用画布可以提高渲染效率,但在任何更改时都会强制重新绘制。为什么要在UI应用程序中使用控制台进行用户输入?使用适当的控件(
组合框
,文本字段
等)