Как реализовать ToggleGroup в файле fxml, используя Spring vs JavaFx - PullRequest
0 голосов
/ 25 ноября 2018

Имеют MainController:

открытый класс MainController {

@FXML private RadioButton radioButton;
@FXML private RadioButton radioButton2;

@FXML
public void addContact() {
    boolean b = radioButton.isSelected();
    boolean b2 = radioButton.isSelected();
}

И mxin.fxml:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="350.0" prefWidth="755.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ru.habrahabr.ui.MainController">
   <children>
      <TableView fx:id="table" editable="true" prefHeight="200.0" prefWidth="405.0" tableMenuButtonVisible="true" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <columnResizePolicy><TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /></columnResizePolicy>
      </TableView>
      <HBox alignment="CENTER" layoutX="21.0" layoutY="207.0" prefHeight="50.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0">
         <children>
            <RadioButton fx:id="radioButton" text="Male">
               <HBox.margin>
                  <Insets right="3.0"/>
               </HBox.margin>
            </RadioButton>

            <RadioButton fx:id="radioButton2" text="Female">
               <HBox.margin>
                  <Insets right="30.0"/>
                  <Insets bottom="10.0"/>
               </HBox.margin>
            </RadioButton>

            <Button minWidth="-Infinity" mnemonicParsing="false" onAction="#addContact" text="Add" />
         </children>
      </HBox>
   </children>
</AnchorPane>

Все хорошо, но мне нужно совместитьобе кнопки радио в одной группе, и я не могу найти решение, как реализовать что-то вроде ToggleGroup в main.fxml.

1 Ответ

0 голосов
/ 25 ноября 2018

В fxml можно создать не только Node с, но и ToggleGroup с.Используя <fx:reference>, вы можете использовать существующий объект:

<?import javafx.scene.control.ToggleGroup?>

...
<RadioButton fx:id="radioButton" text="Male">
   <HBox.margin>
      <Insets right="3.0"/>
   </HBox.margin>
   <toggleGroup>
       <ToggleGroup fx:id="group"/>
   </toggleGroup>
</RadioButton>
<RadioButton fx:id="radioButton2" text="Female">
   <HBox.margin>
      <Insets right="30.0"/>
      <Insets bottom="10.0"/>
   </HBox.margin>
   <toggleGroup>
       <fx:reference source="group"/>
   </toggleGroup>
</RadioButton>
...

В качестве альтернативы используйте для этой цели метод контроллера initialize:

@FXML
private void initialize() {
    ToggleGroup group = new ToggleGroup();
    radioButton.setToggleGroup(group);
    radioButton2.setToggleGroup(group);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...