JavaFX从表中获取数据
我无法从表中获取数据。 “获取项目”不起作用,我被卡住了,因为缺少文档。我知道那个人是表模型,但我如何使用getFirstName,也许这就是答案。我有,但不能用。还是我应该暂时坚持挥杆 下面是一个代码:JavaFX从表中获取数据,javafx,Javafx,我无法从表中获取数据。 “获取项目”不起作用,我被卡住了,因为缺少文档。我知道那个人是表模型,但我如何使用getFirstName,也许这就是答案。我有,但不能用。还是我应该暂时坚持挥杆 下面是一个代码: package imenik; import java.awt.Panel; import java.io.File; import java.io.FileWriter; import java.io.IOException; import javafx.application.Appl
package imenik;
import java.awt.Panel;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
/**
*
* @author Anak1n
*/
public class Imenik extends Application {
Label ime, prezime, brojTelefona, email, mobilni;
TextField imeTxt;
TextField prezimeTxt;
TextField brojTelTxt;
TextField mobilniTxt;
TextField emailTxt;
GridPane panelImenik;
Panel tabela;
Button potvrdi, otkazi, sacuvaj, otvori;
FileChooser fc = new FileChooser();
VBox vbox;
private final TableView<Person> table = new TableView<>();
@Override
public void start(final Stage primaryStage) {
ime = new Label("Ime: ");
prezime = new Label("Prezime: ");
brojTelefona = new Label("Fixni: ");
email = new Label("e-mail: ");
imeTxt = new TextField();
prezimeTxt = new TextField();
brojTelTxt = new TextField();
emailTxt = new TextField();
mobilni = new Label("Mobilni");
mobilniTxt = new TextField();
TableColumn imeT = new TableColumn("Ime");
imeT.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName")
);
imeT.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn prezimeT = new TableColumn("Prezime");
prezimeT.setCellValueFactory(
new PropertyValueFactory<Person, String>("lastName")
);
prezimeT.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn brojTelefonaFix = new TableColumn("Fixni");
brojTelefonaFix.setCellValueFactory(
new PropertyValueFactory<Person, String>("fixni")
);
brojTelefonaFix.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn brojTelefonaMob = new TableColumn("Mobilni");
brojTelefonaMob.setCellValueFactory(
new PropertyValueFactory<Person, String>("mobilni")
);
brojTelefonaMob.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn brTel = new TableColumn("Broj telefona");
brTel.getColumns().addAll(brojTelefonaFix, brojTelefonaMob);
brTel.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn emailT = new TableColumn("E-mail");
emailT.setCellValueFactory(
new PropertyValueFactory<Person, String>("email")
);
emailT.prefWidthProperty().bind(table.widthProperty().divide(4));
sacuvaj = new Button("Sacuvaj");
sacuvaj.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
//Set extension filter
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("CSV files (*.csv)", "*.csv");
fc.getExtensionFilters().add(extFilter);
//Show save file dialog
File file = fc.showSaveDialog(primaryStage);
if (file != null) {
SaveFile(table.getItems().toString(), file);
}
}
});
otvori = new Button("Otvori");
vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
tabela = new Panel();
panelImenik = new GridPane();
panelImenik.setAlignment(Pos.TOP_CENTER);
panelImenik.setHgap(10);
panelImenik.setVgap(10);
panelImenik.setPadding(new Insets(25, 25, 25, 25));
potvrdi = new Button("Potvrdi");
potvrdi.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
// ObservableList<Person> data = table.getItems();
table.getItems().add(new Person(
imeTxt.getText(),
prezimeTxt.getText(),
emailTxt.getText(),
brojTelTxt.getText(),
mobilniTxt.getText()
));
prezimeTxt.setText("");
imeTxt.setText("");
brojTelTxt.setText("");
emailTxt.setText("");
mobilniTxt.setText("");
}
});
table.getColumns().addAll(imeT, prezimeT, brTel, emailT);
otkazi = new Button("Ponisti");
otkazi.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
prezimeTxt.setText("");
imeTxt.setText("");
brojTelTxt.setText("");
emailTxt.setText("");
mobilniTxt.setText("");
System.out.print(table.getColumns().get(0));
}
});
vbox.getChildren().addAll(table, panelImenik);
dodaj();
Scene scene = new Scene(vbox, 411, 600);
//table.setItems(data);
primaryStage.setTitle("Imenik");
scene.getStylesheets().add(Imenik.class.getResource("pozadina.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
private void dodaj() {
panelImenik.add(ime, 0, 0);
panelImenik.add(imeTxt, 1, 0);
panelImenik.add(prezime, 0, 1);
panelImenik.add(prezimeTxt, 1, 1);
panelImenik.add(brojTelefona, 0, 2);
panelImenik.add(brojTelTxt, 1, 2);
panelImenik.add(mobilni, 0, 3);
panelImenik.add(mobilniTxt, 1, 3);
panelImenik.add(email, 0, 4);
panelImenik.add(emailTxt, 1, 4);
panelImenik.add(potvrdi, 1, 5);
panelImenik.add(otkazi, 0, 5);
panelImenik.add(sacuvaj, 2, 5);
panelImenik.add(otvori, 3, 5);
}
private void dodajUTabelu() {
}
public class Person {
private final SimpleStringProperty ime;
private final SimpleStringProperty prezime;
private final SimpleStringProperty email;
private final SimpleStringProperty fixni;
private final SimpleStringProperty mobilni;
private Person(String ime, String prezime, String email, String fixni, String mobilni) {
this.ime = new SimpleStringProperty(ime);
this.prezime = new SimpleStringProperty(prezime);
this.email = new SimpleStringProperty(email);
this.fixni = new SimpleStringProperty(fixni);
this.mobilni = new SimpleStringProperty(mobilni);
}
public String getFirstName() {
return ime.get();
}
public void setFirstName(String fName) {
ime.set(fName);
}
public String getLastName() {
return prezime.get();
}
public void setLastName(String fName) {
prezime.set(fName);
}
public String getEmail() {
return email.get();
}
public void setEmail(String fName) {
email.set(fName);
}
public String getFixni() {
return fixni.get();
}
public void setFixni(String fName) {
fixni.set(fName);
}
public String getMobilni() {
return mobilni.get();
}
public void setMobilni(String fName) {
mobilni.set(fName);
}
}
private void SaveFile(String content, File file) {
try {
FileWriter fileWriter = null;
fileWriter = new FileWriter(file);
fileWriter.write(content);
fileWriter.close();
} catch (IOException ex) {
System.out.print("Nije moguce");
}
}
}
package-imenik;
导入java.awt.Panel;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入javafx.application.application;
导入javafx.beans.property.SimpleStringProperty;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.geometry.Insets;
导入javafx.geometry.Pos;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.control.Label;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.control.TextField;
导入javafx.scene.control.cell.PropertyValueFactory;
导入javafx.scene.layout.GridPane;
导入javafx.scene.layout.VBox;
导入javafx.stage.FileChooser;
导入javafx.stage.stage;
导入javax.swing.JFileChooser;
导入javax.swing.JOptionPane;
/**
*
*@作者Anak1n
*/
公共类Imenik扩展了应用程序{
标签ime、prezime、brojTelefona、email、mobilni;
TextField-imext;
TextField-prezimeTxt;
TextField brojTelTxt;
TextField-mobilniTxt;
TextField-emailTxt;
网格窗格panelImenik;
面板标签;
Button potvrdi、otkazi、sacuvaj、otvori;
FileChooser fc=新建FileChooser();
VBox-VBox;
private final TableView table=new TableView();
@凌驾
公共作废开始(最终阶段初级阶段){
ime=新标签(“ime:”);
prezime=新标签(“prezime:”);
brojTelefona=新标签(“Fixni:”);
电子邮件=新标签(“电子邮件:”);
imext=新文本字段();
prezimeTxt=新文本字段();
brojTelTxt=新文本字段();
emailTxt=新文本字段();
mobilni=新标签(“mobilni”);
mobilniTxt=新文本字段();
TableColumn Ime=新的TableColumn(“Ime”);
imeT.setCellValueFactory(
新PropertyValueFactory(“名字”)
);
imeT.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn Prezime=新的TableColumn(“Prezime”);
prezimeT.setCellValueFactory(
新PropertyValueFactory(“姓氏”)
);
prezimeT.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn brojTelefonaFix=新的TableColumn(“Fixni”);
brojTelefonaFix.setCellValueFactory(
新物业价值工厂(“fixni”)
);
brojTelefonaFix.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn brojTelefonaMob=新的TableColumn(“Mobilni”);
brojTelefonaMob.setCellValueFactory(
新物业价值工厂(“mobilni”)
);
brojTelefonaMob.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn brTel=新的TableColumn(“Broj telefona”);
brTel.getColumns().addAll(brojTelefonaFix,brojTelefonaMob);
brTel.prefWidthProperty().bind(table.widthProperty().divide(4));
TableColumn emailT=新的TableColumn(“电子邮件”);
emailT.setCellValueFactory(
新PropertyValueFactory(“电子邮件”)
);
emailT.prefWidthProperty().bind(table.widthProperty().divide(4));
sacuvaj=新按钮(“sacuvaj”);
setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent e){
//设置扩展筛选器
FileChooser.ExtensionFilter extFilter=新的FileChooser.ExtensionFilter(“CSV文件(*.CSV)”,“*.CSV”);
fc.getExtensionFilters().add(extFilter);
//显示保存文件对话框
File File=fc.showsavedilog(primaryStage);
如果(文件!=null){
保存文件(table.getItems().toString(),文件);
}
}
});
otvori=新按钮(“otvori”);
vbox=新的vbox();
vbox.setspace(5);
设置填充(新的插入(10,0,0,10));
tabela=新面板();
panelImenik=新网格窗格();
面板imenik.设置对齐(位置顶部_中心);
panelImenik.setHgap(10);
panelImenik.setVgap(10);
panelImenik.设置填充(新插图(25,25,25,25));
potvrdi=新按钮(“potvrdi”);
setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent e){
//ObservableList数据=table.getItems();
table.getItems().add(新人员(
imext.getText(),
prezimeTxt.getText(),
emailTxt.getText(),
brojtelText.getText(),
mobilniTxt.getText()
));
prezimeTxt.setText(“”);
imext.setText(“”);
brojteltext.setText(“”);
emailTxt.setText(“”);
mobilinText.setText(“”);
}
});
table.getColumns().addAll(imeT、prezimeT、brTel、emailT);
otkazi=新按钮(“Ponisti”);
setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent e){
prezimeTxt.setText(“”);
imext.setText(“”);
brojteltext.setText(“”);
emailTxt.setText(“”);
mobilinText.setText(“”);
System.out.print(table.getColumns().get(0));
}
});
vbox.getChildren().addAll(表,panelImenik);
dodaj();
场景=新场景(vbox,411600);
//表2.设置项目(数据);
初级阶段。设置标题(“Imenik”);
scene.getStylesheets().add(Imenik.class.getResource)(“pozadi
for (Person p : persons){
fileWriter.write(p.getFirstName()+","+
p.getLastName()/*etc..*/+"\n");
}
for (Person person : table.getItems()) {
String firstName = person.getFirstName();
String lastName = person.getLastName();
String email = person.getEmail();
String broj = person.getFixni();
String mob = person.getMobilni();