2014-02-11 4 views
0

У меня проблема получение данные из таблицы. Получить пункты не работает, и я застреваю, потому что недостает документации. Я получаю, что Person является табличной моделью, но как я могу использовать getFirstName, возможно, это ответ. Я получаю, но не могу использовать это. Или я должен придерживаться Swing на время?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

Вы получаете элементы из таблицы по строкам, в данном случае это было бы лицо объекта. Затем вы используете методы get класса Person для доступа к полям. Я предполагаю, что вы хотите использовать их в 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(); 

Когда я у них я спасу их легко :)

Смежные вопросы