我正在创建一个JavaFX FXML应用程序,并且在切换组中默认情况下无法使用setSelected()
方法设置两个单选按钮之一。切换组正常运行,因此可以正确设置单选按钮变量。但是,radio1
未按预期选择。
以下是我申请的相关部分。
系统信息
Product Version: NetBeans IDE 8.1 (Build 201510222201)
Updates: NetBeans IDE is updated to version NetBeans 8.1 Patch 1
Java: 1.8.0_171; Java HotSpot(TM) 64-Bit Server VM 25.171-b11
Runtime: Java(TM) SE Runtime Environment 1.8.0_171-b11
System: Mac OS X version 10.13.4 running on x86_64; UTF-8; en_US (nb)
FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="400.0"
xmlns="http://javafx.com/javafx/8.0.141"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="inventory.view.AddPartController">
<fx:define>
<ToggleGroup fx:id="toggleGroup" />
</fx:define>
<children>
<RadioButton fx:id="radio1" mnemonicParsing="false"
onAction="#handleRadio1" prefHeight="30.0" prefWidth="100.0"
text="radio1" toggleGroup="$toggleGroup"
AnchorPane.rightAnchor="125.0" AnchorPane.topAnchor="25.0" />
<RadioButton fx:id="radio2" mnemonicParsing="false"
onAction="#handleRadio2" prefHeight="30.0" prefWidth="100.0"
text="radio2" toggleGroup="$toggleGroup"
AnchorPane.rightAnchor="25.0" AnchorPane.topAnchor="25.0" />
</children>
</AnchorPane>
控制器
package inventory.view;
import inventory.InventorySystem;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
public class AddPartController {
@FXML
private ToggleGroup toggleGroup;
@FXML
private RadioButton radio1;
@FXML
private RadioButton radio2;
@FXML
private void initialize() {
toggleGroup = new ToggleGroup();
radio1 = new RadioButton();
radio1.setToggleGroup(toggleGroup);
radio1.setSelected(true);
radio2 = new RadioButton();
radio2.setToggleGroup(toggleGroup);
}
}
我哪里错了?
答案 0 :(得分:0)
您正在重新初始化单选按钮。 FXML将注入引用,然后覆盖它。您还可以在FXML中定义切换组 - 因此您也不需要。
将您的代码更改为:
@FXML
private void initialize() {
radio1.setSelected(true);
}
答案 1 :(得分:0)
不要再次初始化按钮。这些行就足够了。
@FXML
private void initialize() {
radio1.setToggleGroup(toggleGroup);
radio1.setSelected(true);
radio2.setToggleGroup(toggleGroup);
}