很抱歉,如果我的英语不太好,但是我是法语,我真的需要帮助解决我的代码问题。 说明:我想从1个组合框和2个文本字段中将3个值放入我的可观察列表中。文本字段的文本正在获取,但是由于我创建了组合框,因此没有任何值添加到列表中。你能帮我吗 ? (我把我的代码放在下面):) Cordialy
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.ComboBoxTableCell;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class Tableviewex extends Application {
private TableView<Person> table = new TableView<>();
private ObservableList<Person> data =
FXCollections.observableArrayList();
private ObservableList<String> listproduit = FXCollections.observableArrayList("Doliprane","Spasfon");
private Pane layout = new Pane();
private HBox hb = new HBox();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample");
stage.setWidth(450);
stage.setHeight(550);
final Label label = new Label("Choisissez vos médicaments");
label.setFont(new Font("Arial", 20));
table.setEditable(true);
TableColumn<Person, String> produitcol =
new TableColumn<>("Produit");
produitcol.setMinWidth(100);
produitcol.setCellValueFactory(
new PropertyValueFactory<>("produit"));
produitcol.setCellFactory(TextFieldTableCell.<Person>forTableColumn());
produitcol.setOnEditCommit(
(CellEditEvent<Person, String> t) -> {
((Person) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setFirstName(t.getNewValue());
});
TableColumn<Person, String> lastNameCol =
new TableColumn<>("Quantité");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(
new PropertyValueFactory<>("quantité"));
lastNameCol.setCellFactory(TextFieldTableCell.<Person>forTableColumn());
lastNameCol.setOnEditCommit(
(CellEditEvent<Person, String> t) -> {
((Person) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setLastName(t.getNewValue());
});
TableColumn<Person, String> emailCol = new TableColumn<>("Prix");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(
new PropertyValueFactory<>("prix"));
emailCol.setCellFactory(TextFieldTableCell.<Person>forTableColumn());
emailCol.setOnEditCommit(
(CellEditEvent<Person, String> t) -> {
((Person) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setEmail(t.getNewValue());
});
table.setItems(data);
table.getColumns().addAll(produitcol, lastNameCol, emailCol);
final ComboBox<String> choixproduit = new ComboBox<>();
choixproduit.setItems(listproduit);
choixproduit.setPromptText("Choissisez votre produit");
choixproduit.setMaxWidth(produitcol.getPrefWidth());
final TextField addLastName = new TextField();
addLastName.setMaxWidth(lastNameCol.getPrefWidth());
addLastName.setPromptText("Quantité");
final TextField addEmail = new TextField();
addEmail.setMaxWidth(emailCol.getPrefWidth());
addEmail.setPromptText("Prix");
final Button addButton = new Button("Ajouter");
addButton.setOnAction((ActionEvent e) -> {
data.add(new Person(
choixproduit.getValue(),
addLastName.getText(),
addEmail.getText()));
//addFirstName.clear();
addLastName.clear();
addEmail.clear();
});
hb.getChildren().addAll(choixproduit, addLastName, addEmail, addButton);
hb.setSpacing(3);
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(label, table, hb);
((Group) scene.getRoot()).getChildren().addAll(vbox);
layout.setStyle("-fx-background-color: linear-gradient(to top, #24B400, #FFFFFF)");
stage.setScene(scene);
stage.show();
}
public static class Person {
private final SimpleStringProperty produit;
private final SimpleStringProperty quantité;
private final SimpleStringProperty prix;
private Person(String fName, String lName, String email) {
this.produit = new SimpleStringProperty(fName);
this.quantité = new SimpleStringProperty(lName);
this.prix = new SimpleStringProperty(email);
}
public String getFirstName() {
return produit.get();
}
public void setFirstName(String fName) {
produit.set(fName);
}
public String getLastName() {
return quantité.get();
}
public void setLastName(String fName) {
quantité.set(fName);
}
public String getEmail() {
return prix.get();
}
public void setEmail(String fName) {
prix.set(fName);
}
}
}