import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.Stage; import javafx.scene.text.TextAlignment; import javafx.scene.text.Font; import javafx.geometry.Pos; import javafx.geometry.Insets; import javafx.scene.layout.Border; import javafx.scene.layout.BorderStroke; import javafx.scene.layout.BorderStrokeStyle; import javafx.scene.layout.BorderWidths; import javafx.scene.paint.Color; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.event.Event; import javafx.beans.value.*; // ChangeListener import javafx.collections.*; import javafx.geometry.HPos; import javafx.geometry.VPos; import javafx.collections.*; import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseButton; import javafx.scene.control.ContextMenu; import javafx.scene.input.ContextMenuEvent; // Student // Binding import javafx.beans.property.StringProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.IntegerProperty; import javafx.beans.property.DoubleProperty; public class UIBspListView06 extends Application { private ObservableList listeLinksStd = FXCollections.observableArrayList(); private ObservableList listeRechtsStd = FXCollections.observableArrayList(); private ListView listviewLinks = new ListView<>() ; private ListView listviewRechts = new ListView<>() ; private Button bnSave = new Button("Save") ; private Button bnEsc = new Button("Esc") ; @Override public void start(Stage stage) { GridPane gridpane = new GridPane(); gridpane.setVgap(15); gridpane.setHgap(10); gridpane.setGridLinesVisible(true); gridpane.setPadding(new Insets(10) ); // TRBL ColumnConstraints column1 = new ColumnConstraints(); column1.setPercentWidth(100); ColumnConstraints column2 = new ColumnConstraints(); column2.setPercentWidth(30); ColumnConstraints column3 = new ColumnConstraints(); column3.setPercentWidth(100); gridpane.getColumnConstraints().addAll(column1, column2, column3); RowConstraints row1 = new RowConstraints(); row1.setPercentHeight(10); RowConstraints row2 = new RowConstraints(); row2.setPercentHeight(10); RowConstraints row3 = new RowConstraints(); row3.setPercentHeight(100); RowConstraints row4 = new RowConstraints(); row4.setPercentHeight(100); RowConstraints row5 = new RowConstraints(); row5.setPercentHeight(10); gridpane.getRowConstraints().addAll(row1, row2, row3, row4,row5); Label labelHeader = new Label("Bearbeiten der Studentennoten") ; labelHeader.setFont(new Font("Courier New",22)); gridpane.add(labelHeader, 0, 0,3,1); // column=1 row=0 Label label = new Label("Studenten") ; label.setFont(new Font("Courier New",22)); gridpane.add(label, 0, 1); // column=1 row=0 label = new Label("Tutoren") ; label.setFont(new Font("Courier New",22)); gridpane.add(label, 2, 1); // column / row listeLinksStd.addAll( new Student("Andrea","Meier",12345), new Student("Ute","Hein",12545), new Student("Manfred","Tischler",12349), new Student("Uta","Hein",322545), new Student("Anton","Epple",12545), new Student("Fritz","Meier",12369), new Student("Helfried","Gordon",322645), new Student("Sebastian","Laisse",16545) ); listviewLinks.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listviewLinks.setItems(listeLinksStd); listviewLinks.setOnMouseClicked(e-> listviewLinksOnClick(e)); listviewLinks.setStyle("-fx-font: 22px \"Serif\";"); gridpane.add(listviewLinks, 0, 2, 1,2); // column=1 row=0 gridpane.setHgrow(listviewLinks, Priority.ALWAYS); listviewRechts.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); listviewRechts.setItems(listeRechtsStd); listviewRechts.setOnMouseClicked(e-> listviewRechtsOnClick(e)); listviewRechts.setStyle("-fx-font: 22px \"Serif\";"); gridpane.add(listviewRechts, 2, 2,1,2); // column=1 row=0 gridpane.setHgrow(listviewRechts, Priority.ALWAYS); listviewRechts.setOnMouseClicked(e-> listviewRechtsOnClick(e)); Button bn2Right = new Button("=>") ; bn2Right.setFont(new Font("Courier New",22)); gridpane.add(bn2Right, 1, 2); // column=1 row=0 gridpane.setMargin(bn2Right, new Insets(10) ); // TRBL bn2Right.setOnAction(e->bn2RightClick()); Button bn2Left = new Button("<=") ; bn2Left.setFont(new Font("Courier New",22)); gridpane.add(bn2Left, 1, 3); // column=1 row=0 gridpane.setMargin(bn2Left, new Insets(10) ); // TRBL bn2Left.setOnAction(e->bn2LeftClick()); //Button bnAction = new Button("Eintragen") ; //bnAction.setFont(new Font("Courier New",22)); //gridpane.add(bnAction, 2, 3); // column=1 row=0 // ---------------------------------------------------------------------- FlowPane boxpane = new FlowPane(20,20); //boxpane.setAlignment(Pos.TOP_RIGHT); gridpane.add(boxpane, 0, 4,3,1); // column / row // gridpane.setHalignment(boxpane, HPos.RIGHT); Button bnOk = new Button("Ok") ; bnOk.setOnAction(e->print()); bnOk.setFont(new Font("Courier New",22)); bnOk.setMaxWidth(Double.POSITIVE_INFINITY); boxpane.getChildren().add(bnOk); boxpane.setMargin(bnOk, new Insets(0, 10, 0, 10) ); // TRBL Button bnEsc = new Button("Esc") ; bnEsc.setOnAction(e->Platform.exit()); bnEsc.setFont(new Font("Courier New",22)); bnEsc.setMaxWidth(Double.POSITIVE_INFINITY); boxpane.getChildren().add(bnEsc); boxpane.setMargin(bnEsc, new Insets(0, 10, 0, 10) ); // TRBL Scene scene= new Scene(gridpane, 800, 580); stage.setTitle("UIBspListView06"); stage.setScene(scene); stage.show(); } private void bn2RightClick() { System.out.println("in bn2RightClick"); ObservableList selectedItems = listviewLinks.getSelectionModel().getSelectedItems(); if (selectedItems != null) { System.out.println("selectedItems ist nicht null selectedItems.size()"+selectedItems.size()); for (int i=selectedItems.size()-1; i>=0; i--) { Student std= selectedItems.get(i); System.out.println("-"+std.toString()); listeRechtsStd.add(std); listeLinksStd.remove(std); } listviewLinks.getSelectionModel().clearSelection(); } else { System.out.println("selectedItems ist null"); } } private void bn2LeftClick() { ObservableList selectedItems = listviewRechts.getSelectionModel().getSelectedItems(); if (selectedItems != null) { for (int i=selectedItems.size()-1; i>=0; i--) { Student std= selectedItems.get(i); System.out.println("-"+std.toString()); listeLinksStd.add(std); listeRechtsStd.remove(std); } listviewRechts.getSelectionModel().clearSelection(); } } private void listviewLinksOnClick(MouseEvent e) { if (e.getButton()==MouseButton.PRIMARY && e.getClickCount()==2) { bn2RightClick(); } } private void listviewRechtsOnClick(MouseEvent e) { if (e.getButton()==MouseButton.PRIMARY && e.getClickCount()==2) { bn2LeftClick(); } } private void print() { StringBuilder sb = new StringBuilder(100); sb.append(": "); System.out.println(sb.toString()); // tErg.setText(sb.toString()); } private String insertString(String message, String title, String vorgabe) { TextInputDialog dialog = new TextInputDialog(vorgabe); dialog.setTitle(title); dialog.setContentText(message); dialog.setHeaderText(title); dialog.setResizable(true); java.util.Optional result = dialog.showAndWait(); if (result.isPresent()) { return (String)result.get(); } else { return null; } } public void errorBox( String message, String title) { Dialog alert = new Alert(Alert.AlertType.ERROR,message); alert.setTitle(title); alert.setHeaderText(title); alert.setResizable(true); alert.show(); // a.setContentText(content); } // ErrorBox public static void main(String[] argv) { launch(argv); } } class Student { private String lastname = ""; public final String getLastname(){ return lastname; } public void setLastname (String value) { lastname=value; } // setlastname private String firstname = ""; public final String getFirstname(){ return firstname; } public void setFirstname (String value) { firstname=value; } // setfirstname private int mnr = 0; public final int getMnr(){ return mnr; } public void setMnr (int value) { mnr=value; } // setMnr public Student(String firstname, String lastname, int mnr) { this.firstname=firstname; this.lastname=lastname; this.mnr=mnr; } public String toString() { return lastname+", "+firstname; } } // class Student