2015-09-01 64 views
0

我是JavaFX的新手,我試圖做一個應用程序,它將顯示來自同一個類的幾個面板:類PacienteGUI創建一個面板,並且我想顯示5個PacienteGUI面板在我的主FXML中,它有一個面板本身。從來就試圖通過該控制器由PacienteGUI的將面板添加到fxml窗格

@FXML Pane principal; 

@Override 
public void initialize(URL url, ResourceBundle rb) 
{ 
    PacienteGUI paciente = new PacienteGUI(1); 
    principal.getChildren().add(paciente); 
} 

部分添加它:

public class PacienteGUI extends javax.swing.JPanel { 

public PacienteGUI(int num) { 
    chairNum = num; 
    initComponents(); 
} 

private void initComponents() { 
.. 
.. 
..Creates JPanel with all its components 
.. 
} 

的問題是,它說,PacientesGUI不能轉換爲節點。我該如何解決這個問題?

感謝

+0

你可以編輯你的問題來顯示'PacienteGUI'類嗎? –

+0

我編輯顯示它的一部分,雖然initComponents()太長,無法發佈。只是基本的Swing組件 –

回答

1

Paciente類是一個Swing JPanel,不能放在一個JavaFX Pane直接。

你要麼需要做Paciente一個JavaFX Pane的一個子類,或者你需要用的Paciente例如在SwingNode。後者(SwingNode)很棘手,因爲您需要使用兩個不同的線程來創建不同的組件:需要在AWT事件派發線程上創建和訪問swing組件,並且需要在FX應用程序線程上創建JavaFX組件。如果可以,我強烈建議而不是混合JavaFX和Swing。

+0

謝謝!我試圖做到這一點,因爲我不知道侯添加一個PacienteGUI.fxml我已經有了主FXML。所以我會製作一個JavaFX PacienteGUI,或者我該如何將FXML添加到主FXML中? –

+0

您可以使用[''](http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#include_elements)元素將一個FXML包含在另一個FXML中。或者,您可以使用'FXMLLoader'加載內容並將其添加到您定義的'principal'面板。 –

+0

解決了它,謝謝! –