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.collections.*; public class UIBspSpinner03 extends Application { private RadioButton rbARROWS_ON_RIGHT_VERTICAL = new RadioButton("ARROWS_ON_RIGHT_VERTICAL"); private RadioButton rbARROWS_ON_RIGHT_HORIZONTAL= new RadioButton("ARROWS_ON_RIGHT_HORIZONTAL"); private RadioButton rbARROWS_ON_LEFT_VERTICAL= new RadioButton("ARROWS_ON_LEFT_VERTICAL"); private RadioButton rbARROWS_ON_LEFT_HORIZONTAL= new RadioButton("ARROWS_ON_LEFT_HORIZONTAL"); private RadioButton rbSPLIT_ARROWS_VERTICAL= new RadioButton("SPLIT_ARROWS_VERTICAL"); private RadioButton rbSPLIT_ARROWS_HORIZONTAL= new RadioButton("SPLIT_ARROWS_HORIZONTAL"); private Spinner spinner = null ; private boolean spinnerChangedStyle=false; private TextField tErg = new TextField("") ; private Button bnOk = new Button("Ok") ; private Button bnEsc = new Button("Esc") ; @Override public void start(Stage stage) { VBox root = new VBox(22); root.setAlignment(Pos.CENTER); root.setFillWidth(true); ToggleGroup group1 = new ToggleGroup(); // javafx.scene.control.ToggleButton VBox vbox1 = new VBox(22); vbox1.setBorder(new Border( new BorderStroke(Color.GREEN, BorderStrokeStyle.SOLID, new CornerRadii(10), new BorderWidths(2))) ); vbox1.setFillWidth(true); setRadioButton(vbox1, group1, rbARROWS_ON_RIGHT_VERTICAL); setRadioButton(vbox1, group1, rbARROWS_ON_RIGHT_HORIZONTAL); setRadioButton(vbox1, group1, rbARROWS_ON_LEFT_VERTICAL); setRadioButton(vbox1, group1, rbARROWS_ON_LEFT_HORIZONTAL); setRadioButton(vbox1, group1, rbSPLIT_ARROWS_VERTICAL); setRadioButton(vbox1, group1, rbSPLIT_ARROWS_HORIZONTAL); rbARROWS_ON_RIGHT_VERTICAL.setSelected(true); root.getChildren().add(vbox1); root.setMargin(vbox1, new Insets(30) ); // TRBL spinner = new Spinner(5.0, 30.0, 15.0, 0.5); // spinner.getStyleClass().add(Spinner.ARROWS_ON_RIGHT_VERTICAL); spinner.setStyle("-fx-font: 22px \"Serif\";"); HBox hbox = createChoiceBoxComboBoxSpinner(spinner, "Spinner"); root.getChildren().add(hbox); hbox = createTextInputControl(tErg, "Ergebnis"); root.getChildren().add(hbox); FlowPane boxpane = new FlowPane(20,20); boxpane.setAlignment(Pos.CENTER); boxpane.setMaxWidth(Double.POSITIVE_INFINITY); root.getChildren().add(boxpane); bnOk.setFont(new Font("Courier New",22)); bnOk.setMaxWidth(Double.POSITIVE_INFINITY); bnOk.setOnAction(e->calc()); boxpane.getChildren().add(bnOk); boxpane.setMargin(bnOk, new Insets(0, 10, 0, 10) ); // TRBL bnEsc.setFont(new Font("Courier New",22)); bnEsc.setMaxWidth(Double.POSITIVE_INFINITY); bnEsc.setOnAction(e->Platform.exit()); boxpane.getChildren().add(bnEsc); boxpane.setMargin(bnEsc, new Insets(0, 10, 0, 10) ); // TRBL Scene scene= new Scene(root, 660, 640); stage.setTitle("UIBspSpinner03"); stage.setScene(scene); stage.show(); } private void setRadioButton(VBox vbox, ToggleGroup group, RadioButton rb) { rb.setToggleGroup(group); rb.setFont(new Font("Courier New",22)); rb.setMaxWidth(Double.POSITIVE_INFINITY); vbox.getChildren().add(rb); vbox.setVgrow(rb, Priority.ALWAYS); vbox.setMargin(rb, new Insets(5) ); // TRBL // javafx.beans.property.DoubleProperty rb.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { setStyle(); } }); } private void setStyle() { // import javafx.collections.*; if (spinnerChangedStyle) { ObservableList liste = spinner.getStyleClass(); int n = liste.size(); liste.remove(n-1); } if (rbARROWS_ON_RIGHT_VERTICAL.isSelected()) { // keine Aktion } if (rbARROWS_ON_RIGHT_HORIZONTAL.isSelected()) { spinner.getStyleClass().add(Spinner.STYLE_CLASS_ARROWS_ON_RIGHT_HORIZONTAL); } if (rbARROWS_ON_LEFT_VERTICAL.isSelected()) { spinner.getStyleClass().add(Spinner.STYLE_CLASS_ARROWS_ON_LEFT_VERTICAL); } if (rbARROWS_ON_LEFT_HORIZONTAL.isSelected()) { spinner.getStyleClass().add(Spinner.STYLE_CLASS_ARROWS_ON_LEFT_HORIZONTAL); } if (rbSPLIT_ARROWS_VERTICAL.isSelected()) { spinner.getStyleClass().add(Spinner.STYLE_CLASS_SPLIT_ARROWS_VERTICAL); } if (rbSPLIT_ARROWS_HORIZONTAL.isSelected()) { spinner.getStyleClass().add(Spinner.STYLE_CLASS_SPLIT_ARROWS_HORIZONTAL); } System.out.println("Style"); spinnerChangedStyle=true; } private HBox createTextInputControl(TextInputControl control, String caption) { HBox hbox = new HBox(22); hbox.setFillHeight(true); hbox.setMaxWidth(Double.POSITIVE_INFINITY); Label label = new Label(caption) ; label.setFont(new Font("Courier New",22)); hbox.getChildren().add(label); hbox.setMargin(label, new Insets(5, 0, 0, 10) ); // TRBL control.setFont(new Font("Courier New",22)); control.setMaxWidth(Double.POSITIVE_INFINITY); hbox.getChildren().add(control); hbox.setHgrow(control, Priority.ALWAYS); hbox.setMargin(control, new Insets(0, 10, 0, 10) ); // TRBL return hbox; } private HBox createChoiceBoxComboBoxSpinner(Control control, String caption) { HBox hbox = new HBox(22); hbox.setFillHeight(true); hbox.setMaxWidth(Double.POSITIVE_INFINITY); Label label = new Label(caption) ; label.setFont(new Font("Courier New",22)); hbox.getChildren().add(label); hbox.setMargin(label, new Insets(5, 0, 0, 10) ); // TRBL // control.setFont(new Font("Courier New",22)); // gibt es nicht ?? control.setMaxWidth(Double.POSITIVE_INFINITY); hbox.getChildren().add(control); hbox.setHgrow(control, Priority.ALWAYS); hbox.setMargin(control, new Insets(0, 10, 0, 10) ); // TRBL return hbox; } private HBox createButtonBase(ButtonBase control) { HBox hbox = new HBox(22); hbox.setFillHeight(true); hbox.setMaxWidth(Double.POSITIVE_INFINITY); control.setFont(new Font("Courier New",22)); control.setMaxWidth(Double.POSITIVE_INFINITY); hbox.getChildren().add(control); hbox.setHgrow(control, Priority.ALWAYS); hbox.setMargin(control, new Insets(0, 10, 0, 10) ); // TRBL return hbox; } private void calc() { StringBuilder sb = new StringBuilder(100); Double groesse = (Double)spinner.getValue(); if (groesse==null) { errorBox("Bitte waehlen Sie eine Groesse aus", "Hinweis"); return; } sb.append(groesse.toString()); sb.append(": "); tErg.setText(sb.toString()); } 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); } }