Java Scene Builder
Publicado por Josh (5 intervenciones) el 05/12/2018 12:22:41
Buenas tardes a ver si alguien me puede echar una mano...Estoy haciendo un ejercicio con Scene Builder, es sencillo, he creado un formulario donde de introducen campos como DNI, asignatura(combobox), nota y recuperación, y después de pulsar un botón guardar, se imprime la información en un listView.
Lo que quiero es abrir otro paquete en el proyecto para modularizar la interfaz gráfica de la aplicación, con el objeto de crear un componente personalizado que pueda ser útil en varias aplicaciones. El componente personalizado debe incluir tanto las etiquetas como los campos de texto de entrada, así como el botón guardar, quedando fuera del componente la tabla para el registro de calificaciones. Por lo tanto el formulario y el botón guardar por un lado y en otro paquete con otra vista fxml y su controlador el ListView.
La vista principal y la vista del ListView las he unido con <fx:include> pero no sé como hacer para programar el controlador de la vista del ListView para que imprima la información de entrada.
Antes cuando el formulario y el listView estaban en la misma vista lo tenía programado así y funcionaba...
public class FXMLDocumentController implements Initializable {
//Declaramos un ObservableList que va a tener todas las personas a visualizar en la tabla
private final ObservableList <Alumnos> datosTabla = FXCollections.observableArrayList();
@FXML private TextField txtalumno;
@FXML private ComboBox cmbomodulo;
@FXML private TextField txtnota;
@FXML private TextField txtrecup;
@FXML private Button btonGuardar;
@FXML private TableView Tablaalumnos ;
@FXML private TableColumn dniColum;
@FXML private TableColumn ModColum;
@FXML private TableColumn notaColum;
@FXML private TableColumn recColum;
@FXML
private void botonGuardar(ActionEvent event) { //programación botón guardar
if(txtalumno.getText().length()!=9 ){
JOptionPane.showMessageDialog(null, "El número de DNI es incorrecto", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE);
}else{
if(txtnota.getText().matches("[0-9]") ){
if(txtrecup.getText().matches("[0-5]")){
Alumnos nuevoalumno = new Alumnos(txtalumno.getText(), cmbomodulo.getSelectionModel().getSelectedItem().toString(),Integer.parseInt(txtnota.getText()),Integer.parseInt(txtrecup.getText()));
datosTabla.add(nuevoalumno);
//Se inicializan los campos
txtalumno.setText(null);
cmbomodulo.getSelectionModel().select(0);
txtnota.setText(null);
txtrecup.setText(null);
}else{
JOptionPane.showMessageDialog(null, "Valor Incorrecto en el campo Recuperación", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE);
}
} else{
JOptionPane.showMessageDialog(null, "Valor Incorrecto en el campo Nota", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE);
}
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
//Creamos un arrayList de tipo ObservableList y añadimos los elementos de combobox
ObservableList <String> mods = FXCollections.observableArrayList("DI",
"AD","SGE","PMDM","PSP","EIE");
cmbomodulo.setItems(mods);
cmbomodulo.getSelectionModel().select(0);
Tablaalumnos.setItems(datosTabla);
//Asociamos las columnas con la tabla
dniColum.setCellValueFactory(new PropertyValueFactory<Alumnos,String>("dni"));
ModColum.setCellValueFactory(new PropertyValueFactory <Alumnos,String>("modulo"));
notaColum.setCellValueFactory(new PropertyValueFactory<Alumnos,String>("nota"));
recColum.setCellValueFactory(new PropertyValueFactory<Alumnos,String>("recuperacion"));
}
}
el botón guardar me debe enviar la información a listar en el otro controlador de la vista del ListView y eso es lo que no tengo claro como hacer....
Gracias de antemano.
Lo que quiero es abrir otro paquete en el proyecto para modularizar la interfaz gráfica de la aplicación, con el objeto de crear un componente personalizado que pueda ser útil en varias aplicaciones. El componente personalizado debe incluir tanto las etiquetas como los campos de texto de entrada, así como el botón guardar, quedando fuera del componente la tabla para el registro de calificaciones. Por lo tanto el formulario y el botón guardar por un lado y en otro paquete con otra vista fxml y su controlador el ListView.
La vista principal y la vista del ListView las he unido con <fx:include> pero no sé como hacer para programar el controlador de la vista del ListView para que imprima la información de entrada.
Antes cuando el formulario y el listView estaban en la misma vista lo tenía programado así y funcionaba...
public class FXMLDocumentController implements Initializable {
//Declaramos un ObservableList que va a tener todas las personas a visualizar en la tabla
private final ObservableList <Alumnos> datosTabla = FXCollections.observableArrayList();
@FXML private TextField txtalumno;
@FXML private ComboBox cmbomodulo;
@FXML private TextField txtnota;
@FXML private TextField txtrecup;
@FXML private Button btonGuardar;
@FXML private TableView Tablaalumnos ;
@FXML private TableColumn dniColum;
@FXML private TableColumn ModColum;
@FXML private TableColumn notaColum;
@FXML private TableColumn recColum;
@FXML
private void botonGuardar(ActionEvent event) { //programación botón guardar
if(txtalumno.getText().length()!=9 ){
JOptionPane.showMessageDialog(null, "El número de DNI es incorrecto", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE);
}else{
if(txtnota.getText().matches("[0-9]") ){
if(txtrecup.getText().matches("[0-5]")){
Alumnos nuevoalumno = new Alumnos(txtalumno.getText(), cmbomodulo.getSelectionModel().getSelectedItem().toString(),Integer.parseInt(txtnota.getText()),Integer.parseInt(txtrecup.getText()));
datosTabla.add(nuevoalumno);
//Se inicializan los campos
txtalumno.setText(null);
cmbomodulo.getSelectionModel().select(0);
txtnota.setText(null);
txtrecup.setText(null);
}else{
JOptionPane.showMessageDialog(null, "Valor Incorrecto en el campo Recuperación", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE);
}
} else{
JOptionPane.showMessageDialog(null, "Valor Incorrecto en el campo Nota", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE);
}
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
//Creamos un arrayList de tipo ObservableList y añadimos los elementos de combobox
ObservableList <String> mods = FXCollections.observableArrayList("DI",
"AD","SGE","PMDM","PSP","EIE");
cmbomodulo.setItems(mods);
cmbomodulo.getSelectionModel().select(0);
Tablaalumnos.setItems(datosTabla);
//Asociamos las columnas con la tabla
dniColum.setCellValueFactory(new PropertyValueFactory<Alumnos,String>("dni"));
ModColum.setCellValueFactory(new PropertyValueFactory <Alumnos,String>("modulo"));
notaColum.setCellValueFactory(new PropertyValueFactory<Alumnos,String>("nota"));
recColum.setCellValueFactory(new PropertyValueFactory<Alumnos,String>("recuperacion"));
}
}
el botón guardar me debe enviar la información a listar en el otro controlador de la vista del ListView y eso es lo que no tengo claro como hacer....
Gracias de antemano.
Valora esta pregunta


0