JavaFX如何更改显示形状的颜色';s根据用户输入填写?

JavaFX如何更改显示形状的颜色';s根据用户输入填写?,java,javafx,input,colors,shapes,Java,Javafx,Input,Colors,Shapes,我想知道如何使用Java/JavaFX根据用户输入更改显示形状填充的颜色。 在获取用于显示形状的用户输入后,我希望程序获取另一个用于更改形状颜色的用户输入。 这个想法是 从用户处获取输入以显示形状(例如,如果孩子们在控制台上键入“三角形”,程序将三角形显示为图形) 从用户处获取输入以更改显示形状的颜色(例如,如果孩子们在控制台上键入“蓝色”,则程序会将三角形填充的颜色更改为蓝色) (用代码描述可能非常好,但如果不可能,任何提示都将不胜感激) 使用控制台输入或UI输入(例如TextField)不是

我想知道如何使用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应用程序中使用控制台进行用户输入?使用适当的控件(
    组合框
    文本字段
    等)