2014-02-11 8 views
0

테이블에서 데이터를 가져 오는 데 문제가 있습니다. 항목을 가져 오는 기능이 작동하지 않으며 문서가 부족하기 때문에 멈추었습니다. 나는 Person이 테이블 모델이라는 것을 알았지 만 getFirstName을 어쩌면 그 대답에서 사용할 수 있을까? 나는 얻었지만 사용할 수는 없습니다. 또는 나는 당분간 스윙을 고수해야 하는가?테이블에서 JavaFX 데이터 가져 오기

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"); 
     } 
    } 
} 

답변

2

당신은 사람이 객체가 될 것이다이 경우 행에 의해 테이블에서 항목을 얻을 : 여기

는 코드입니다. 그런 다음 Person 클래스의 get 메소드를 사용하여 필드에 액세스합니다. SaveFile(String, File)에서 사용하고 싶습니다. saveFile(ObservableList<Person> persons, File file)과 같이 변경해야합니다. 그런 다음 파일을 작성하십시오.

for (Person p : persons){ 
    fileWriter.write(p.getFirstName()+","+ 
        p.getLastName()/*etc..*/+"\n"); 
} 
1

나는 이와 비슷한 것을 작성했습니다. 내가 그들을있을 때 오라클 포럼 :

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

을에서 힌트를 얻었다 것은 내가 쉽게 저장됩니다 :)

관련 문제