2015-09-01 1 views
0

Я новичок в JavaFX, и я пытаюсь сделать приложение, которое отобразит несколько панелей из того же класса: класс PacienteGUI создает панель, и я хочу показать 5 из этих панелей PacienteGUI в моем основном FXML, который имеет панель. I've пытался добавить его через контроллер с помощьюДобавить панель в панель fxml

@FXML Pane principal; 

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

Часть PacienteGUI:

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 класс является свинг JPanel, которые не могут быть помещены в JavaFX Pane непосредственно.

Вам необходимо либо сделать Paciente подкласс в JavaFX Pane, или вам нужно обернуть экземпляр Paciente в SwingNode. Последнее (SwingNode) сложно, потому что вам нужно использовать два разных потока для создания разных компонентов: компоненты качания должны быть созданы и доступны в потоке диспетчеризации событий AWT, а компоненты JavaFX должны быть созданы в приложении приложения FX , Я настоятельно рекомендую не смешивать JavaFX и Swing, если вы можете это сделать.

+0

Спасибо! Я пытался это сделать, потому что я не мог понять, как добавить PacienteGUI.fxml, который я уже использовал в основном FXML. Итак, я сделаю JavaFX PacienteGUI, или как я могу добавить FXML к основному FXML? –

+0

Вы можете включить один FXML внутри другого с элементом '' ''(http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#include_elements). Кроме того, вы можете загрузить контент с помощью «FXMLLoader» и добавить его на панель «главный», которую вы определили. –

+0

Это решило, спасибо! –