|
Dialogfenster mit einem TabView |
UIBspTabView01.java
UIBspTabView01.png
tableview = new TableView() ; private ObservableList<Student> listeStd = FXCollections.observableArrayList();
listeStd.addAll( new Student("Andrea","Meier",12345,1.3), new Student("Ute","Hein",12545,4.0), new Student("Manfred","Tischler",12349,5.0), new Student("Uta","Hein",322545,4.0), new Student("Anton","Epple",12545,2.7) );
tableview.setItems(listeStd); //listview.setPlaceholder(new Label("Bitte etwas auswaehlen")); tableview.setStyle("-fx-font: 22px \"Serif\";"); tableview.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
TableColumn<Student, String> colFirstname = new TableColumn<Student, String>("Firstname"); colFirstname.setMinWidth(200); // Mindestbreite setzen colFirstname.setCellValueFactory( new PropertyValueFactory<Student, String>("firstname"));
// javafx.scene.control.cell.PropertyValueFactory<S,T> tableview.getColumns().addAll(colFirstname, colLastname,colMnr, colNote);
Abfrage:
ObservableList<Student> selectedItems = tableview.getSelectionModel().getSelectedItems(); double summeNoten=0.0; for (Student std : selectedItems) { summeNoten+=std.getNote(); sb.append( std); sb.append(" , "); } double dNote = summeNoten/selectedItems .size(); |
Dialogfenster mit einem TabView
Neu:
- Eintragen von weiteren Elementen - FactoryCell |
UIBspTabView02.java
UIBspTabView02.png
UIBspTabView02b.png
FactoryCell
class NoteCell extends TableCell<Student,Double> {
@Override protected void updateItem(Double item, boolean empty) { super.updateItem(item, empty); if (item!=null && !empty) { setText(item.toString()); if (item<3.0) setTextFill(Color.GREEN); else if (item<5.0) setTextFill(Color.BLUE); else setTextFill(Color.RED); } else { setText("--"); setTextFill(Color.BLACK); } } } // class NoteCell
// callback: import javafx.util.callback; colNote.setCellFactory(new Callback<TableColumn<Student,Double>,TableCell<Student,Double>>() { @Override public TableCell <Student,Double> call(TableColumn<Student,Double> param) { return new NoteCell(); } });
Items insert:
private void insert() { listeStd.addAll( new Student("Ute","Abba",12545,4.0), new Student("Antonia","Epple",12545,2.7) ); } |
Dialogfenster mit einem TabView
Neu:
Sortieren |
UIBspTabView03.java
UIBspTabView03.png
import javafx.collections.transformation.SortedList; import java.util.*; /// Comparator
public class UIBspTableView03 extends Application {
private TableView tableview = new TableView() ; private ObservableList<Student> listeStd = FXCollections.observableArrayList(); private SortedList<Student> listeSortedStd = null;
// Wichtig: eine interne Compare-Methode funktioniert nicht
Comparator<Student> stdComparator = new Comparator<Student>() { public int compare(Student std1, Student std2) { int result = std1.getLastname().compareTo(std2.getLastname()); System.out.println(std1.getLastname()+" "+std2.getLastname()+" res: "+result); if (result==0) { result = std1.getFirstname().compareTo(std2.getFirstname()); } return result; } };
@Override public void start(Stage stage) { ... listeSortedStd = new SortedList<>(listeStd,stdComparator ); tableview.setItems(listeSortedStd); ... Scene scene= new Scene(root, 660, 700); stage.setTitle("UIBspListView03"); stage.setScene(scene); stage.show(); } |
Dialogfenster mit einem TabView
Neu:
- Sortieren - Filter |
UIBspTabView04.java
UIBspTabView04.png
import javafx.collections.transformation.FilteredList; import javafx.collections.transformation.SortedList;
private TableView tableview = new TableView() ; private ObservableList<Student> listeStd = FXCollections.observableArrayList(); private SortedList<Student> listeSortedStd = null;
Comparator<Student> stdComparator = new Comparator<Student>() { public int compare(Student std1, Student std2) { int result = std1.getLastname().compareTo(std2.getLastname()); System.out.println(std1.getLastname()+" "+std2.getLastname()+" res: "+result); if (result==0) { result = std1.getFirstname().compareTo(std2.getFirstname()); } return result; } };
FilteredList<Student> filteredList = new FilteredList<>(listeStd, p -> true); tFilter.textProperty().addListener((observable, oldValue, newValue) -> { filteredList.setPredicate(std -> { // If filter text is empty, display all persons. if (newValue == null || newValue.isEmpty()) { return true; } // Compare first name and last name of every person with filter text. String lowerCaseFilter = newValue.toLowerCase(); if (std.getLastname().toLowerCase().contains(lowerCaseFilter)) { return true; } else if (std.getFirstname().toLowerCase().contains(lowerCaseFilter)) { return true; } return false; // Does not match. }); });
listeSortedStd = new SortedList<>(filteredList,stdComparator ); tableview.setItems(listeSortedStd); |
Dialogfenster mit einem TabView
Neu: - mit Editor |
UIBspTabView05.java
UIBspTabView05.png
UIBspTabView05b.png
tableview.setOnMouseClicked(e-> tableviewOnClick(e));
Event:
private void tableviewOnClick(MouseEvent e) { // MIDDLE SECONDARY if (e.getButton()==MouseButton.PRIMARY && e.getClickCount()==2) { editSeletedItem(); } }
private void editSeletedItem() { int index = tableview.getSelectionModel().getSelectedIndex(); if (index>=0 && index<listeStd.size()) { // Student std = listeStd.get(index); // geht niocht durch Filter + sortieren Student std = (Student) tableview.getSelectionModel().getSelectedItem(); // Dialog zum Ändern EditStage editstage = new EditStage(stage, std); editstage.showAndWait(); if (editstage.retcode) { for (int i=0; i<listeStd .size(); i++) { if (std==listeStd.get(i)) { System.out.println("i: "+i); listeStd.set(i,std); } } } } else { Basis.errorBox("Bitte einen Eintrag selektieren","Hinweis"); } }
editstage |
|
|