繁体   English   中英

gluon SceneBuilder ToggleButtonGroup不包含getSelectedToggle()方法

[英]gluon SceneBuilder ToggleButtonGroup doesnt include getSelectedToggle() method

我试图在ToggleGroup创建一个ToggleButton但是场景构建器中提供的ToggleButtonGroup类不包括getSelectedToggle()方法,该方法将允许我操纵所选的切换状态。 但是,此方法包含在ToggleGroup类中,但是很遗憾,该类在Scenebuilder中不存在。

即使启用了ToggleGroup类,也将很困难,因为它不会扩展javafx.scene.Node ...

我可以通过类ToggleButtonGroup使用getSelectedToggle()方法吗? 如果没有,我该如何克服呢?

提前致谢...

这是我尝试使用ToggleGroup时的代码:

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="799.9999000000025" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.medicalManagement.LoginScreen.LoginScreenController">
  <children>
    <Pane prefHeight="800.0" prefWidth="640.0" />
    <Pane layoutX="641.0" layoutY="34.0" prefHeight="800.0" prefWidth="640.0">
      <children>
        <Label layoutX="18.0" layoutY="168.0" prefHeight="23.0" prefWidth="114.0" text="Username">
          <font>
            <Font size="14.0" fx:id="x1" />
          </font>
        </Label>
        <TextField fx:id="userName" layoutX="17.0" layoutY="213.0" prefHeight="25.0" prefWidth="171.0" />
        <Label font="$x1" layoutX="264.0" layoutY="168.0" prefHeight="25.0" prefWidth="84.0" text="Password" />
        <Button fx:id="login" layoutX="19.0" layoutY="372.0" mnemonicParsing="false" onAction="" prefHeight="32.0" prefWidth="171.0" text="Log In" />
        <Separator layoutY="129.0" orientation="VERTICAL" prefHeight="425.0" prefWidth="0.0" />
            <PasswordField id="passWord" fx:id="passWord" layoutX="238.0" layoutY="211.0" prefWidth="171.0" />
            <Label fx:id="dbStatus" layoutX="501.0" layoutY="756.0" prefHeight="18.0" prefWidth="120.0" />
          <ToggleGroup fx:id="userToggleGroup" toggles="adminToggle, nurseToggle">
              <RadioButton fx:id="adminToggle" layoutX="37.0" layoutY="290.0" mnemonicParsing="false" text="Admin" />
              <RadioButton fx:id="nurseToggle" layoutX="206.0" layoutY="290.0" mnemonicParsing="false" text="Nurse" />
          </ToggleGroup>
      </children>
    </Pane>
  </children>
</Pane>

这是controller类代码:

package com.medicalManagement.LoginScreen;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import com.gluonhq.charm.glisten.control.ToggleButtonGroup;
import javafx.stage.Stage;

import java.net.URL;
import java.util.ResourceBundle;

public class LoginScreenController implements Initializable{

    LoginModel loginModel = new LoginModel();
  @FXML
  private TextField userName;
  @FXML
  private PasswordField passWord;
  @FXML
  private Button login;
  @FXML
  private ToggleGroup userToggleGroup;
  @FXML
  private ToggleButton adminToggle;
  @FXML
  private ToggleButton nurseToggle;
  @FXML
  private Label dbStatus;


    @Override
    public void initialize(URL location, ResourceBundle resources) {


            if (this.loginModel.isDbConnected()){
                this.dbStatus.setText("connected to database");
            }else {
                this.dbStatus.setText("database not connected");
            }

            this.adminToggle.setUserData("Admin");
            this.nurseToggle.setUserData("Nurse");
           this.adminToggle.setToggleGroup(userToggleGroup);
            this.nurseToggle.setToggleGroup(userToggleGroup);


    }

    public  void login(){
        try{
            if (this.loginModel.isLogin(this.userName.getText(), this.passWord.getText(),this.userToggleGroup.getSelectedToggle().getUserData().toString())){
                Stage stage = (Stage)this.login.getScene().getWindow();
                stage.close();
                switch (this.userToggleGroup.getSelectedToggle().getUserData().toString()){
                    case "Admin":
                        adminLogin();
                        break;
                    case "Nurse":
                        nurseLogin();
                        break;
                }
            }else{
                System.out.println(this.userName.getText());
                System.out.println(this.passWord.getText());
                System.out.println(this.userToggleGroup.getSelectedToggle().getUserData().toString());
            }
        }catch (Exception e ){
            e.printStackTrace();
            System.out.println(this.userName.getText());
            System.out.println(this.passWord.getText());
            System.out.println(this.userToggleGroup.getSelectedToggle().getUserData().toString());
        }
    }

    private void nurseLogin() {
    }

    public void adminLogin(){

    }

    public static void main(String[] args) {

    }
}

ToggleButtonGroup似乎不允许这样做。 您需要遍历切换开关并检查选定的开关。

ToggleGroup只是Toggle一个属性,它可以防止组中的所有切换器一次选择多个切换器。 它不是布局,而是分配给ToggletoggleGroup属性的值。

您可以使用SceneBuilder定义ToggleGroup

  1. 选择RadioButton
  2. Properties键入fx:id为您ToggleGroupToggle Group领域。
  3. 对于同一ToggleGroup中的所有其他RadioButton ,将相同的值分配给Toggle Group属性。

或在fxml中:

...
<children>
    <Label layoutX="18.0" layoutY="168.0" prefHeight="23.0" prefWidth="114.0" text="Username">
      <font>
        <Font size="14.0" fx:id="x1" />
      </font>
    </Label>
    <TextField fx:id="userName" layoutX="17.0" layoutY="213.0" prefHeight="25.0" prefWidth="171.0" />
    <Label font="$x1" layoutX="264.0" layoutY="168.0" prefHeight="25.0" prefWidth="84.0" text="Password" />
    <Button fx:id="login" layoutX="19.0" layoutY="372.0" mnemonicParsing="false" onAction="" prefHeight="32.0" prefWidth="171.0" text="Log In" />
    <Separator layoutY="129.0" orientation="VERTICAL" prefHeight="425.0" prefWidth="0.0" />
    <PasswordField id="passWord" fx:id="passWord" layoutX="238.0" layoutY="211.0" prefWidth="171.0" />
    <Label fx:id="dbStatus" layoutX="501.0" layoutY="756.0" prefHeight="18.0" prefWidth="120.0" />
    <RadioButton fx:id="adminToggle" layoutX="37.0" layoutY="290.0" mnemonicParsing="false" text="Admin">
        <toggleGroup>
            <ToggleGroup fx:id="userToggleGroup"/>
        </toggleGroup>
    </RadioButton>
    <RadioButton fx:id="nurseToggle" layoutX="206.0" layoutY="290.0" mnemonicParsing="false" text="Nurse">
        <toggleGroup>
            <fx:reference source="userToggleGroup"/>
        </toggleGroup>
    </RadioButton>
</children>
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM