编辑:最后一个问题是由itachiUchiha解决但我有一个新问题, 当我添加一个项目时,表格视图不会显示它。 我添加了initialize和de add方法。 我在2窗口中做了应用程序。窗口中的代码,我有一个textfielsd来传递de date。
@FXML
private TextField esport;
@FXML
private TextField equips;
@FXML
private TextField despeses;
@FXML
private TextField esportistes;
@FXML
private TextField puntuacio;
@FXML
private TextField socis;
@FXML
private CheckBox festes;
@FXML
private CheckBox disiplina;
@FXML
private CheckBox voluntari;
@FXML
private CheckBox instalacions;
@FXML
private Button bafegir;
@FXML
private Button bcancelar;
Subvencio sub = new Subvencio();
private void afegir(ActionEvent event) {
//Passem els valors de el textfield als seus corresponents formats.
int aux1 = Integer.parseInt(equips.getText());
double aux2 = Double.parseDouble(despeses.getText());
int aux3 = Integer.parseInt(esportistes.getText());
int aux4 = Integer.parseInt(puntuacio.getText());
int aux5 = Integer.parseInt(socis.getText());
boolean aux6 = festes.isPressed();
boolean aux7 = disiplina.isPressed();
boolean aux8 = voluntari.isPressed();
boolean aux9 = instalacions.isPressed();
String aux10 = esport.getText();
//Comprobem si tots els textfielsd estan omplits, sino es així, mostrem un error.
if ((!equips.getText().isEmpty())
&& (equips.getText().trim().length()!=0)
&& (!despeses.getText().isEmpty())
&& (despeses.getText().trim().length()!=0)
&& (!esportistes.getText().isEmpty())
&& (esportistes.getText().trim().length()!=0)
&& (!puntuacio.getText().isEmpty())
&& (puntuacio.getText().trim().length()!=0)
&& (!socis.getText().isEmpty())
&& (socis.getText().trim().length()!=0)
&& (!esport.getText().isEmpty())
&& (esport.getText().trim().length()!=0))
{
//Carregem un controllardor per poder crear subvencions i la creeem. en cabar aques proces la finestra es tanca.
GeneralController aux = new GeneralController();
aux.subs = FXCollections.observableArrayList();
sub.setEsport(aux10);
sub.setEquips(aux1);
sub.setEsportistes(aux3);
sub.setFestes(aux6);
sub.setFormacio(aux7);
sub.setInstalacions(aux9);
sub.setPuntuacio(aux4);
sub.setSocis(aux5);
sub.setVoluntari(aux8);
sub.setdespeses(aux2);
aux.subs.add(sub);
Node minodo = (Node) event.getSource();
minodo.getScene().getWindow().hide();
}
else {
Alert alert = new Alert(Alert.AlertType.ERROR);
//Apliquem el css cridant al metode dialogpane
DialogPane dialogPane = alert.getDialogPane();
dialogPane.getStylesheets().add(getClass().getResource("/estil/flatterfx.css").toExternalForm());
dialogPane.getStyleClass().add("button");
alert.setTitle("Error");
alert.setHeaderText("Error al afegir una subvenció.");
alert.setContentText("Deus emplenar tots els cuadres de text per poder afegir una subvenció.");
Optional<ButtonType> result = alert.showAndWait();
}
}
按钮中的代码添加了打开第二个窗口。
private void afegir(ActionEvent event) throws IOException {
//Carregem el controlador i inicialitzem la finestra a obrir.
FXMLLoader loader = new FXMLLoader(getClass().getResource("/model/Afegir.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root);
Stage ventana2= new Stage();
ventana2.setMinHeight(380);
ventana2.setMinWidth(770);
ventana2.setTitle("Afegir dades");
ventana2.initModality(Modality.APPLICATION_MODAL);
ventana2.setScene(scene);
//Fem que espere fins a ser tancada i coloquem els elements a la taula.subs = new ObservableList<Subvencio>();
ventana2.showAndWait();
tabla.setItems(subs);
}
和tableview和set items中set值的初始化int de 1窗口。
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
ArrayList<Subvencio> misSubs = new ArrayList<Subvencio>();
subs = FXCollections.observableArrayList(misSubs);
cesport.setCellValueFactory(new PropertyValueFactory<Subvencio, String>("Esport"));
ctotal.setCellValueFactory(new PropertyValueFactory<Subvencio, Double>("Subvenció"));
tabla.setItems(subs);
}
感谢您的帮助。