Javafx 如何使用单选按钮的切换组显示圆形的颜色

Javafx 如何使用单选按钮的切换组显示圆形的颜色,javafx,Javafx,在考试前,我正在解决一些家庭作业问题,需要一些说明,比如如何设置圆圈的颜色,以便在屏幕上显示用户从切换组中选择的内容。我收到一条错误消息,代码用于显示圆圈的大小,但当我添加颜色时,单击“创建”按钮时,图片中不会显示颜色。我收到的错误消息是“线程中的异常”JavaFX应用程序线程“java.lang.IllegalArgumentException:无效的颜色规范”,并且可以;我不能在网上找到解决问题的办法 我尝试了下面的代码,但根本不起作用 HBox circleColour = new

在考试前,我正在解决一些家庭作业问题,需要一些说明,比如如何设置圆圈的颜色,以便在屏幕上显示用户从切换组中选择的内容。我收到一条错误消息,代码用于显示圆圈的大小,但当我添加颜色时,单击“创建”按钮时,图片中不会显示颜色。我收到的错误消息是“线程中的异常”JavaFX应用程序线程“java.lang.IllegalArgumentException:无效的颜色规范”,并且可以;我不能在网上找到解决问题的办法

我尝试了下面的代码,但根本不起作用

    HBox circleColour = new HBox();
    circleColour.setSpacing(20);
    Label task7 = new Label("What colour do you want the circle: ");
    RadioButton brown = new RadioButton("Brown ");
    RadioButton cyan = new RadioButton("Cyan ");
    RadioButton grey = new RadioButton("Grey ");

    ToggleGroup fillColour = new ToggleGroup();
    brown.setToggleGroup(fillColour);
    cyan.setToggleGroup(fillColour);
    grey.setToggleGroup(fillColour);


      HBox newC = new HBox();
     layout.setRight(newC);

     click.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            //radius
            double newRadius = Double.parseDouble(circleSize.getText());
            circle = new Circle(newRadius);

            //This does not display
            //fill colour
            RadioButton selectedRB = 
      (RadioButton)fillColour.getSelectedToggle();
            String colour = selectedRB.getText();
            System.out.println(colour);
            Color fc = Color.valueOf(colour);
            circle.setFill(fc);
HBox circleColour=新的HBox();
环形色标(20);
Label task7=新标签(“您想要什么颜色的圆圈:”);
RadioButton棕色=新的RadioButton(“棕色”);
RadioButton青色=新的RadioButton(“青色”);
RadioButton灰色=新RadioButton(“灰色”);
ToggleGroup FillColor=新的ToggleGroup();
棕色。设置切换组(填充颜色);
青色组(填充色);
灰色。设置切换组(填充颜色);
HBox newC=新的HBox();
布局。设置权限(newC);
click.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
//半径
double newRadius=double.parseDouble(circleSize.getText());
圆=新圆(新半径);
//这不显示
//填充颜色
单选按钮selectedRB=
(单选按钮)FillColor.getSelectedToggle();
String color=selectedRB.getText();
系统输出打印LN(彩色);
颜色fc=颜色。值(颜色);
圆圈。设置填充(fc);

在以下情况下引发
非法argumentException

[…]该值指定了不受支持的颜色名称或非法的十六进制值

您正在使用
单选按钮的文本来确定所需的颜色。您使用的文本是受支持的颜色名称,除了一个小问题:每个文本末尾都有一个空格。简单的解决方法是更改:

  • “棕色”
    → <代码>“棕色”
  • “青色”
    → <代码>“青色”
  • “灰色”
    → <代码>“灰色”
  • 如果您有这些空格是出于某种原因,或者不想使用
    Color.valueOf
    ,那么另一个选项是将每个
    单选按钮
    颜色
    关联。至少有两种方法可以做到这一点:

  • 使用
    地图
    (或者
    地图
    ,如果您愿意)


  • 最好使用其中一个选项。当或如果您将应用程序国际化时,您将在使用
    单选按钮的文本时遇到问题。

    在以下情况下引发
    IllegalArgumentException

    […]该值指定了不受支持的颜色名称或非法的十六进制值

    您正在使用
    单选按钮的文本来确定所需的颜色。您使用的文本是受支持的颜色名称,除了一个小问题:每个文本末尾都有一个空格。简单的解决方法是更改:

    • “棕色”
      → <代码>“棕色”
  • “青色”
    → <代码>“青色”
  • “灰色”
    → <代码>“灰色”
  • 如果您有这些空格是出于某种原因,或者不想使用
    Color.valueOf
    ,那么另一个选项是将每个
    单选按钮
    颜色
    关联。至少有两种方法可以做到这一点:

  • 使用
    地图
    (或者
    地图
    ,如果您愿意)


  • 使用这些选项中的一个更可取。当或如果您将应用程序国际化时,您将在使用
    单选按钮的文本时遇到问题。

    我完全同意slaw,尽管他没有添加另一个选项,并且需要更少的代码更改和使用它返回字符串的一个副本,前导和尾随空格被省略

    RadioButton brown = new RadioButton("Brown ");
    
    Color color = Color.valueOf(brown.getText().trim());
    

    我完全同意slaw的观点,尽管他没有添加另一个选项,并且需要更少的代码更改和使用它,即“返回字符串的副本,省略前导和尾随空格。”如下所示

    RadioButton brown = new RadioButton("Brown ");
    
    Color color = Color.valueOf(brown.getText().trim());
    
    RadioButton brown = new RadioButton("Brown ");
    
    Color color = Color.valueOf(brown.getText().trim());