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



Initialisierung-Snippet
Menu