Dialogfenster mit einer ListView
Single Selectetion |
UIBspListView01.java
UIBspListView01.png
ListView listviewPizzaName = new ListView() ;
listviewPizzaName.getItems().add("Käse"); listviewPizzaName.getItems().add("Käse Schinken"); listview.setPlaceholder(new Label("Bitte etwas auswaehlen")); listviewPizzaName.setStyle("-fx-font: 22px \"Serif\";");
ChangeListener:
listviewPizzaName.getSelectionModel().selectedIndexProperty().addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observableValue, Number number, Number number2) { showListViewName(number2); } });
private void showListViewName(Number index) { System.out.println("listviewPizzaName: index: "+ index); }
Abfrage:
StringBuilder sb = new StringBuilder(100); ObservableList<String> selectedItems = listviewPizzaName.getSelectionModel().getSelectedItems(); for (String item : selectedItems) { sb.append( item); sb.append(" , "); } tErg.setText(sb.toString()); |
Dialogfenster mit einer ListView
Multi Selectetion |
UIBspListView02.java
UIBspListView02.png
listviewPizzaName.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); |
Dialogfenster mit einer ListView
Single Selectetion Mit Funktionen: - Edit - Delete - DeleteAll
CellFactory (ListView) |
UIBspListView03.java
UIBspListView03.png
UIBspListView03a.png
ClassFactory:
class PunkteCell extends ListCell<Double> {
@Override protected void updateItem(Double item, boolean empty) { super.updateItem(item, empty); if (item!=null && !empty) { setText(item.toString()+" Pkt"); if (item<50) setTextFill(Color.RED); else setTextFill(Color.BLUE); } else { setText("--"); setTextFill(Color.BLACK); } } } // class PunkteCell
private final ObservableList<Double> listePunkte = FXCollections.observableArrayList(); private ListView<Double> listviewPunkte = new ListView<>() ; listviewPunkte.setItems(listePunkte ); listviewPunkte.setPlaceholder(new Label("Bitte etwas auswaehlen")); listviewPunkte.setStyle("-fx-font: 22px \"Serif\";");
listviewPunkte.setCellFactory((param) -> { return new PunkteCell(); });
ChangeListener:
listviewPunkte.getSelectionModel().selectedIndexProperty().addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observableValue, Number number, Number number2) { showlistviewPunkte(number2); } });
private void listviewOnClick() { System.out.println("listviewOnClick()"); }
Edit-Aktion:
private void editSeletedItem() { int index = listviewPunkte.getSelectionModel().getSelectedIndex(); if (index>=0 && index<listePunkte.size()) { Double pkt = listePunkte.get(index); System.out.println(pkt.toString()); String str_pkt = insertString("Bitte den neuen Wert eingeben", "Punkt ändern", Double.toString(pkt)); if (str_pkt!=null) { double pktNeu = getDoubleNumber(str_pkt); if (!Double.isNaN(pktNeu)) { listePunkte.set(index,pktNeu); } } } else { errorBox("Bitte einen Eintrag selektieren","Hinweis"); } }
Delete-Aktion:
private void deleteSeletedItem() { int index = listviewPunkte.getSelectionModel().getSelectedIndex(); ObservableList<Double> selectedItems = listviewPunkte.getSelectionModel().getSelectedItems(); listePunkte.remove(index); }
DeleteAll-Aktion:
private void deleteAllItems() { listePunkte.clear(); } |
Dialogfenster mit einer ListView
Single Selectetion Mit Funktionen: - Edit - Delete - DeleteAll
CellFactory (ListView)
ContextMenu (Neu) |
UIBspListView04.java
UIBspListView04.png
import javafx.scene.control.ContextMenu; import javafx.scene.input.ContextMenuEvent;
private final ObservableList<Double> listePunkte = FXCollections.observableArrayList();
private ListView<Double> listviewPunkte = new ListView<>() ; ContextMenu contextmenu = new ContextMenu();
listviewPunkte.setItems(listePunkte ); listviewPunkte.setPlaceholder(new Label("Bitte etwas auswaehlen")); listviewPunkte.setStyle("-fx-font: 22px \"Serif\";");
MenuItem mnEdit = new MenuItem("Edit"); MenuItem mnDelete = new MenuItem("Delete"); MenuItem mnDeleteAll = new MenuItem("DeleteAll");
contextmenu.getItems().addAll(mnEdit, mnDelete, mnDeleteAll);
mnEdit.setOnAction((ActionEvent e)->editSeletedItem()); mnDelete.setOnAction((ActionEvent e)->deleteSeletedItem()); mnDeleteAll.setOnAction(e->deleteAllItems());
// import javafx.scene.control.ContextMenu; // import javafx.scene.input.ContextMenuEvent; listviewPunkte.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() { @Override public void handle(ContextMenuEvent event) { contextmenu.show( listviewPunkte, event.getScreenX(), event.getScreenY()); } });
Event-Methoden:
private void editSeletedItem() { int index = listviewPunkte.getSelectionModel().getSelectedIndex(); if (index>=0 && index<listePunkte.size()) { Double pkt = listePunkte.get(index); System.out.println(pkt.toString()); String str_pkt = insertString("Bitte den neuen Wert eingeben", "Punkt ändern", Double.toString(pkt)); if (str_pkt!=null) { double pktNeu = getDoubleNumber(str_pkt); if (!Double.isNaN(pktNeu)) { listePunkte.set(index,pktNeu); } } } else { errorBox("Bitte einen Eintrag selektieren","Hinweis"); } }
private void deleteSeletedItem() { int index = listviewPunkte.getSelectionModel().getSelectedIndex(); ObservableList<Double> selectedItems = listviewPunkte.getSelectionModel().getSelectedItems(); //listviewPunkte.getItems().removeAll(selectedItems); // listviewPunkte.getItems().removeAll(selectedItems); listviewPunkte.getItems().remove(index); //listePunkte.removeAll(selectedItems); }
private void deleteAllItems() { listePunkte.clear(); }
Double-Click:
listviewPunkte.setOnMouseClicked(e->listviewOnClick(e));
private void listviewOnClick(MouseEvent e) {
// MIDDLE SECONDARY if (e.getButton()==MouseButton.PRIMARY && e.getClickCount()==2) { System.out.println("listviewOnClick() DoopelClick"); editSeletedItem(); } } |
Dialogfenster mit zwei ListViews
Single Selectetion Mit Funktionen: - move 2 right - move 2 left
Double-Click pro Listview
- Ein Eintrag wird verschoben |
UIBspListView05.java
UIBspListView05.png
UIBspListView05b.png
private ObservableList<Student> listeLinksStd = FXCollections.observableArrayList(); private ObservableList<Student> listeRechtsStd = FXCollections.observableArrayList(); private ListView<Student> listviewLinks = new ListView<>() ; private ListView<Student> listviewRechts = new ListView<>() ; listviewLinks.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); listviewLinks.setItems(listeLinksStd); listviewLinks.setOnMouseClicked(e-> listviewLinksOnClick(e));
listviewRechts.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); listviewRechts.setItems(listeRechtsStd); listviewRechts.setOnMouseClicked(e-> listviewRechtsOnClick(e));
Events:
private void bn2RightClick() { Student std = listviewLinks.getSelectionModel().getSelectedItem(); if (std != null) { System.out.println("-"+std.toString()); listeLinksStd.remove(std); listeRechtsStd.add(std); listviewLinks.getSelectionModel().clearSelection(); } else { System.out.println("selectedItems ist null"); } }
private void listviewLinksOnClick(MouseEvent e) { if (e.getButton()==MouseButton.PRIMARY && e.getClickCount()==2) { bn2RightClick(); } } |
Dialogfenster mit zwei ListViews
Multiple Selectetion Mit Funktionen: - move 2 right - move 2 left
Double-Click pro Listview
- Ein Eintrag wird verschoben |
UIBspListView06.java
UIBspListView06.png
private ObservableList<Student> listeLinksStd = FXCollections.observableArrayList(); private ObservableList<Student> listeRechtsStd = FXCollections.observableArrayList(); private ListView<Student> listviewLinks = new ListView<>() ; private ListView<Student> listviewRechts = new ListView<>() ; listviewLinks.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listviewLinks.setItems(listeLinksStd); listviewLinks.setOnMouseClicked(e-> listviewLinksOnClick(e));
listviewRechts.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listviewRechts.setItems(listeRechtsStd); listviewRechts.setOnMouseClicked(e-> listviewRechtsOnClick(e));
Events:
private void bn2RightClick() { ObservableList<Student> selectedItems = listviewLinks.getSelectionModel().getSelectedItems(); if (selectedItems != null) {
// bitte beachten, von n-1 nach 0
for (int i=selectedItems.size()-1; i>=0; i--) { Student std= selectedItems.get(i); listeRechtsStd.add(std); listeLinksStd.remove(std); } listviewLinks.getSelectionModel().clearSelection(); } else { System.out.println("selectedItems ist null"); } }
private void listviewLinksOnClick(MouseEvent e) { if (e.getButton()==MouseButton.PRIMARY && e.getClickCount()==2) { bn2RightClick(); } } |