2015-09-01 67 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

解决了它,谢谢! –