2016-03-29 26 views
1

Programım için bir TabPane içeren bir ana FXML belgesine sahibim. Her sekme için kendi denetleyicisine ve fxml dosyasına sahip olmasını istiyorum. Harici fmxl dosyalarını ana fxml belgesine dahil etmeye çalıştığımda, programım çalışmayı reddediyor. Burada benim ana FXML belgesidir: Burada benim java dosyasının bir kopyasınıFXML Diğer fxml dosyalarını içe aktarmayı reddeden belge belgesi

@Override 
public void start(Stage stage) throws Exception { 
    FXMLLoader fxml = new FXMLLoader(); 
    Parent root = fxml.load(getClass().getResource("FXMLDocument.fxml").openStream()); 

    Scene scene = new Scene(root); 
    stage.setScene(scene); 
    stage.show(); 
    FXMLDocumentController fdc = fxml.getController(); 
} 

Hata:

Caused by: javafx.fxml.LoadException: Base location is undefined. unknown path:97 
+0

anlamına kullanılır? Herhangi bir hata mesajı alıyor musunuz? –

+1

Bu satır 'fx: include source =" Tab1.fxml "/>' başlangıçta bir köşeli ayraç eksik: '< – ManoDestra

+0

Eksik ayraç bir yazım hatası oldu. Çalıştırmayı denediğimde aldığım hatayı ekledim.Teşekkürler – tashtoons

cevap

1

Bu hata FXMLLoader ait location özelliğini belirlemediğinizden neden oldu ve bunun yerine bir FXML'yi yüklemek için bir InputStream belirtiyorsunuz. İçerilen dosyanın yerini çözmek için FXMLLoader'un orijinal fxml dosyasının yerini bilmesi gerektiğini düşünüyorum. İstisnai durumlarda yalnızca load(InputStream) yöntemini kullanmanız gerekir: fxml kaynağından başka bir kaynaktan (yani uygulama jar dosyanızdaki dosya veya kaynak) yüklediğinizde.

Bunun yerine, eşdeğer

FXMLLoader fxml = new FXMLLoader(); 
fxml.setLocation(getClass().getResource("FXMLDocument.fxml")); 
Parent root = fxml.load(); 

ya,

"çalıştırmak reddediyor" neyi
FXMLLoader fxml = new FXMLLoader(getClass().getResource("FXMLDocument.fxml")); 
Parent root = fxml.load(); 
+0

Çok teşekkür ederim – tashtoons

+0

Fx: include etiketinde bulunan fxml dosyasının mutlak yolunu kullanarak bir 'InputStream' kullanarak çalışmayı başarabildim. Ancak, 'setLocation' kullanmak için değiştirmenin daha iyi bir yol olduğunu düşünüyorum. –

İlgili konular