2016-03-19 34 views
0

Sorumu ayrıntılı bir şekilde anlatırken, JavaFX'te bir soru bankası geliştiriyorum. Ana ekranda, bir buton tıklaması içinde radyo düğmesi seçimine göre navigasyon sağlamak istiyorum.Bir düğme düğmesi dinleyicisi içindeki radyo düğmesi seçiminde javafx'teki ekranlar nasıl değiştirilir?

örn. Bir radyo düğmesi seçtiğimde ve devam etmek için düğmeye tıklarsam, beni yarattığım FXML ekran dosyasına yönlendirmeliyim. Kalmaya çalıştığım şeyi daha fazla açıklamak için GUI anlık görüntüsü aşağıdadır.

Ana ana ekran FXML Dosya:

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 


<?import java.net.*?> 
<?import java.util.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.text.*?> 

<AnchorPane id="AnchorPane" prefHeight="548.0" prefWidth="721.0" styleClass="mainFxmlClass" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="controller.HomefxmlController"> 
    <children> 
    <GridPane alignment="CENTER" gridLinesVisible="false" layoutX="210.0" layoutY="149.0" prefHeight="171.0" prefWidth="373.0" visible="true"> 
     <children> 
     <RadioButton fx:id="radioBlanks" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#onRadioBlankClick" text="Fill in the Blank" GridPane.columnIndex="0" GridPane.halignment="LEFT" GridPane.rowIndex="0" GridPane.valignment="CENTER" /> 
     <RadioButton fx:id="radioMcq" mnemonicParsing="false" onAction="#onRadioMcqClick" text="MCQ" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowIndex="0" /> 
     <RadioButton fx:id="radioshortNote" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#onRadioSNclick" text="ShortNote" GridPane.columnIndex="0" GridPane.halignment="LEFT" GridPane.rowIndex="1" /> 
     <RadioButton fx:id="radioLongAnswer" mnemonicParsing="false" onAction="#onRadioLNclick" text="LongAnswer" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowIndex="1" /> 
     <RadioButton fx:id="radioScenario" mnemonicParsing="false" onAction="#onRadioScenariocClick" text="Scenario" GridPane.columnIndex="0" GridPane.halignment="LEFT" GridPane.rowIndex="2" /> 
     <RadioButton fx:id="radioTF" mnemonicParsing="false" onAction="#onRadioTFclick" text="True/False" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowIndex="2" /> 
     </children> 
     <columnConstraints> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     </columnConstraints> 
     <rowConstraints> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     </rowConstraints> 
    </GridPane> 
    <Label alignment="CENTER" layoutX="234.0" layoutY="47.0" prefHeight="73.0" prefWidth="211.0" text="Question Bank" textAlignment="CENTER" underline="true" wrapText="false"> 
     <font> 
     <Font name="Chiller" size="35.0" /> 
     </font> 
    </Label> 
    <Button fx:id="btnProceed" layoutX="275.0" layoutY="378.0" mnemonicParsing="false" onAction="#onBtntProceed" prefHeight="48.0" prefWidth="129.0" text="Proceed" textFill="#252285"> 
     <font> 
     <Font name="Linux Libertine G Regular" size="20.0" /> 
     </font> 
    </Button> 
    </children> 
    <stylesheets> 
    <URL value="@homefxml.css" /> 
    </stylesheets> 
</AnchorPane> 

FXML Denetleyici Dosya:

package controller; 

import java.io.IOException; 
import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.FXMLLoader; 
import javafx.fxml.Initializable; 
import javafx.scene.Parent; 
import javafx.scene.control.Button; 
import javafx.scene.control.RadioButton; 
import javafx.scene.control.ToggleGroup; 
import javafx.stage.Stage; 

/** 
* FXML Controller class 
* 
* @author Vishal 
*/ 
public class HomefxmlController implements Initializable { 

    @FXML 
    private RadioButton radioBlanks; 
    @FXML 
    private RadioButton radioMcq; 
    @FXML 
    private RadioButton radioshortNote; 
    @FXML 
    private RadioButton radioLongAnswer; 
    @FXML 
    private RadioButton radioScenario; 
    @FXML 
    private RadioButton radioTF; 
    @FXML 
    private Button btnProceed; 

    ToggleGroup group; 

    /** 
    * Initializes the controller class. 
    */ 
    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // TODO 
     toggleGroupAssign(); 

    } 

    public void toggleGroupAssign() { 
     group = new ToggleGroup(); 
     radioBlanks.setToggleGroup(group); 
     radioMcq.setToggleGroup(group); 
     radioshortNote.setToggleGroup(group); 
     radioLongAnswer.setToggleGroup(group); 
     radioScenario.setToggleGroup(group); 
     radioTF.setToggleGroup(group); 
    } 

    @FXML 
    private void onBtntProceed(ActionEvent event) throws IOException { 
     // I am selecting just one checkbox at the moment for testing purpose.. 
     if(radioTF.isSelected()){ 
      FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/tester.fxml"));  
      loader.load(); 
     } 
    } 

} 

SORUN YOK HATA görünür olduğunu aşağıda benim kodu yapıştırmadan önce

Question Bank GUI Link

hiç Hiçbir zaman hatası, çalışma zamanı yok, hiçbir şey! Sadece işe yaramıyor!

Bana tam olarak nerede yanlış gidiyorum yardım edin?

cevap

1

Loader.load() Eğer

bu bağlantıdaki ipucu Loading new fxml in the same scene

+0

Teşekkür bir göz atın atamayız, Düğüm döndürür. Bağlantıda sağlanan hızlı düzeltme tam olarak sorunumu çözmedi, ancak anchorpane ile küçük bir ayarlama bunu yaptı: content.getChildren(). Clear(); . Content.getChildren() (FXMLLoader.load (getClass() getResource ("/ paket/filename.fxml")).) Ekleyin; Bu iki satır eklendi ve yapıldı! – Vishal