ListView
ListView
Beschreibung | Download |
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(); } } |