JavaFX从表中获取数据

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

我无法从表中获取数据。 “获取项目”不起作用,我被卡住了,因为缺少文档。我知道那个人是表模型,但我如何使用getFirstName,也许这就是答案。我有,但不能用。还是我应该暂时坚持挥杆

下面是一个代码:

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();