Java 类javafx.scene.control.Spinner 实例源码
项目:marathonv5
文件:FormPane.java
private void setFormConstraints(Node field) {
if (field instanceof ISetConstraints) {
((ISetConstraints) field).setFormConstraints(this);
} else if (field instanceof Button) {
_setFormConstraints((Button) field);
} else if (field instanceof TextField) {
_setFormConstraints((TextField) field);
} else if (field instanceof TextArea) {
_setFormConstraints((TextArea) field);
} else if (field instanceof ComboBox<?>) {
_setFormConstraints((ComboBox<?>) field);
} else if (field instanceof ChoiceBox<?>) {
_setFormConstraints((ChoiceBox<?>) field);
} else if (field instanceof CheckBox) {
_setFormConstraints((CheckBox) field);
} else if (field instanceof Spinner<?>) {
_setFormConstraints((Spinner<?>) field);
} else if (field instanceof VBox) {
_setFormConstraints((VBox) field);
} else if (field instanceof Label) {
_setFormConstraints((Label) field);
} else {
LOGGER.info("FormPane.setFormConstraints(): unknown field type: " + field.getClass().getName());
}
}
项目:marathonv5
文件:JavaFXSpinnerElement.java
@SuppressWarnings("unchecked") @Override public boolean marathon_select(String value) {
Spinner<?> spinner = (Spinner<?>) getComponent();
if (!spinner.isEditable()) {
@SuppressWarnings("rawtypes")
SpinnerValueFactory factory = ((Spinner<?>) getComponent()).getValueFactory();
Object convertedValue = factory.getConverter().fromString(value);
factory.setValue(convertedValue);
return true;
}
TextField spinnerEditor = spinner.getEditor();
if (spinnerEditor == null) {
throw new JavaAgentException("Null value returned by getEditor() on spinner", null);
}
IJavaFXElement ele = JavaFXElementFactory.createElement(spinnerEditor, driver, window);
spinnerEditor.getProperties().put("marathon.celleditor", true);
ele.marathon_select(value);
return true;
}
项目:marathonv5
文件:SpinnerSample.java
private Spinner<Object> createListSpinner() {
Spinner<Object> spinner = new Spinner<>();
spinner.setId("list-spinner");
List<Object> names = new ArrayList<Object>();
names.add("January");
names.add("February");
names.add("March");
names.add("April");
names.add("May");
names.add("June");
names.add("July");
names.add("August");
names.add("September");
names.add("October");
names.add("November");
names.add("December");
spinner.setValueFactory(new SpinnerValueFactory.ListSpinnerValueFactory<Object>(FXCollections.observableArrayList(names)));
return spinner;
}
项目:marathonv5
文件:RFXSpinnerTest.java
@Test public void getText() {
Spinner<?> spinner = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup(".spinner");
LoggingRecorder lr = new LoggingRecorder();
List<String> text = new ArrayList<>();
Platform.runLater(() -> {
RFXSpinner rfxSpinner = new RFXSpinner(spinner, null, null, lr);
spinner.getEditor().setText("March");
rfxSpinner.focusLost(null);
text.add(rfxSpinner.getAttribute("text"));
});
new Wait("Waiting for spinner text.") {
@Override public boolean until() {
return text.size() > 0;
}
};
AssertJUnit.assertEquals("March", text.get(0));
}
项目:boutique-de-jus
文件:SpinnerUtil.java
public static void initializeSpinner(final Spinner<Integer> spinner, final int minValue, final int maxValue, final int initialValue) {
spinner.getEditor().setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP:
spinner.increment(1);
break;
case DOWN:
spinner.decrement(1);
break;
}
});
spinner.setOnScroll(e -> {
spinner.increment((int) (e.getDeltaY() / e.getMultiplierY()));
});
SpinnerValueFactory<Integer> factory = new SpinnerValueFactory.IntegerSpinnerValueFactory(minValue, maxValue, initialValue);
spinner.setValueFactory(factory);
spinner.setEditable(true);
TextFormatter<Integer> formatter = new TextFormatter<>(factory.getConverter(), factory.getValue());
spinner.getEditor().setTextFormatter(formatter);
factory.valueProperty().bindBidirectional(formatter.valueProperty());
}
项目:waterrower-workout
文件:SpinnerFocusChangeListener.java
private void commitEditorText(Spinner<T> spinner) {
if (!spinner.isEditable()) return;
try {
String text = spinner.getEditor().getText();
SpinnerValueFactory<T> valueFactory = spinner.getValueFactory();
if (valueFactory != null) {
StringConverter<T> converter = valueFactory.getConverter();
if (converter != null) {
T value = converter.fromString(text);
if (value == null)
return;
valueFactory.setValue(value);
}
}
} catch (NumberFormatException e) {
// Ignore text input.
return;
}
}
项目:WhoWhatWhere
文件:VisualTraceUI.java
private Spinner<Integer> createZoomSpinner(ToggleButton btnZoom, String ip)
{
Spinner<Integer> spinnerZoom = new Spinner<>(googleMinZoomLevel, googleMaxZoomLevel, googleDefaultZoomLevel, googleZoomLevelStep);
spinnerZoom.setPrefWidth(55);
spinnerZoom.setPrefHeight(btnZoom.getHeight());
spinnerZoom.valueProperty().addListener((ChangeListener<Integer>) (observable, oldValue, newValue) ->
{
imgService.setCenterOnIP(ip, newValue);
labelUnderMap.setVisible(true);
generateAndShowImage();
});
Tooltip spinnerTooltip = new Tooltip("Set zoom level (1-20)");
ToolTipUtilities.setTooltipProperties(spinnerTooltip, true, GUIController.defaultTooltipMaxWidth, GUIController.defaultFontSize, null);
spinnerZoom.setTooltip(spinnerTooltip);
spinnerZoom.getEditor().setTooltip(spinnerTooltip);
spinnerZoom.setEditable(false);
spinnerZoom.setDisable(true);
return spinnerZoom;
}
项目:mzmine3
文件:SpinnerTableCell.java
public SpinnerTableCell(TableColumn<T, Integer> column, int min, int max) {
spinner = new Spinner<>(min, max, 1);
spinner.editableProperty().bind(column.editableProperty());
spinner.disableProperty().bind(column.editableProperty().not());
tableRowProperty().addListener(e -> {
TableRow<?> row = getTableRow();
if (row == null)
return;
MsSpectrumDataSet dataSet = (MsSpectrumDataSet) row.getItem();
if (dataSet == null)
return;
spinner.getValueFactory().valueProperty().bindBidirectional(dataSet.lineThicknessProperty());
disableProperty().bind(dataSet.renderingTypeProperty().isEqualTo(MsSpectrumType.CENTROIDED));
});
}
项目:mzmine3
文件:SpinnerTableCell.java
public SpinnerTableCell(TableColumn<T, Integer> column, int min, int max) {
spinner = new Spinner<>(min, max, 1);
spinner.editableProperty().bind(column.editableProperty());
spinner.disableProperty().bind(column.editableProperty().not());
tableRowProperty().addListener(e -> {
TableRow<?> row = getTableRow();
if (row == null)
return;
ChromatogramPlotDataSet dataSet = (ChromatogramPlotDataSet) row.getItem();
if (dataSet == null)
return;
spinner.getValueFactory().valueProperty().bindBidirectional(dataSet.lineThicknessProperty());
});
}
项目:GRIP
文件:ListSpinnerInputSocketController.java
@FXML
@Override
public void initialize() {
super.initialize();
final Spinner<List> spinner = new Spinner<>(this.valueFactory);
spinner.setEditable(true);
spinner.disableProperty().bind(this.getHandle().connectedProperty());
spinner.focusedProperty().addListener((s, ov, nv) -> {
// Code found at http://stackoverflow.com/questions/32340476/manually-typing-in-text-in-javafx-spinner-is-not-updating-the-value-unless-user
if (nv) {
return;
}
commitEditorText(spinner);
});
this.setContent(spinner);
}
项目:marathonv5
文件:JavaFXElementFactory.java
public static void reset() {
add(Node.class, JavaFXElement.class);
add(TextInputControl.class, JavaFXTextInputControlElement.class);
add(HTMLEditor.class, JavaFXHTMLEditor.class);
add(CheckBox.class, JavaFXCheckBoxElement.class);
add(ToggleButton.class, JavaFXToggleButtonElement.class);
add(Slider.class, JavaFXSliderElement.class);
add(Spinner.class, JavaFXSpinnerElement.class);
add(SplitPane.class, JavaFXSplitPaneElement.class);
add(ProgressBar.class, JavaFXProgressBarElement.class);
add(ChoiceBox.class, JavaFXChoiceBoxElement.class);
add(ColorPicker.class, JavaFXColorPickerElement.class);
add(ComboBox.class, JavaFXComboBoxElement.class);
add(DatePicker.class, JavaFXDatePickerElement.class);
add(TabPane.class, JavaFXTabPaneElement.class);
add(ListView.class, JavaFXListViewElement.class);
add(TreeView.class, JavaFXTreeViewElement.class);
add(TableView.class, JavaFXTableViewElement.class);
add(TreeTableView.class, JavaFXTreeTableViewElement.class);
add(CheckBoxListCell.class, JavaFXCheckBoxListCellElement.class);
add(ChoiceBoxListCell.class, JavaFXChoiceBoxListCellElement.class);
add(ComboBoxListCell.class, JavaFXComboBoxListCellElemnt.class);
add(CheckBoxTreeCell.class, JavaFXCheckBoxTreeCellElement.class);
add(ChoiceBoxTreeCell.class, JavaFXChoiceBoxTreeCellElement.class);
add(ComboBoxTreeCell.class, JavaFXComboBoxTreeCellElement.class);
add(TableCell.class, JavaFXTableViewCellElement.class);
add(CheckBoxTableCell.class, JavaFXCheckBoxTableCellElement.class);
add(ChoiceBoxTableCell.class, JavaFXChoiceBoxTableCellElement.class);
add(ComboBoxTableCell.class, JavaFXComboBoxTableCellElemnt.class);
add(TreeTableCell.class, JavaFXTreeTableCellElement.class);
add(CheckBoxTreeTableCell.class, JavaFXCheckBoxTreeTableCell.class);
add(ChoiceBoxTreeTableCell.class, JavaFXChoiceBoxTreeTableCell.class);
add(ComboBoxTreeTableCell.class, JavaFXComboBoxTreeTableCell.class);
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void selectListSpinner() {
IJavaFXElement spinner = driver.findElementByName("list-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#list-spinner");
Platform.runLater(() -> {
spinner.marathon_select("June");
});
new Wait("Waiting for spinner to set value") {
@Override public boolean until() {
Object value = spinnerNode.getValue();
return value.toString().equals("June");
}
};
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void selectEditableListSpinner() {
IJavaFXElement spinner = driver.findElementByName("list-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#list-spinner");
Platform.runLater(() -> {
spinnerNode.setEditable(true);
spinner.marathon_select("December");
});
new Wait("Waiting for spinner to set value") {
@Override public boolean until() {
Object value = spinnerNode.getValue();
return value.toString().equals("December");
}
};
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void listSpinnerWithInvalidValue() {
IJavaFXElement spinner = driver.findElementByName("list-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#list-spinner");
Platform.runLater(() -> {
spinnerNode.setEditable(true);
spinner.marathon_select("Decem");
});
new Wait("Spinner was not reset.") {
@Override public boolean until() {
Object value = spinnerNode.getValue();
return value.toString().equals("January");
}
};
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void selectIntegerSpinner() {
IJavaFXElement spinner = driver.findElementByName("integer-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#integer-spinner");
Platform.runLater(() -> {
spinner.marathon_select("35");
});
new Wait("Waiting for spinner to set value") {
@Override public boolean until() {
Integer value = (Integer) spinnerNode.getValue();
return value == 35;
}
};
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void selectEditableIntegerSpinner() {
IJavaFXElement spinner = driver.findElementByName("integer-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#integer-spinner");
Platform.runLater(() -> {
spinner.marathon_select("45");
});
new Wait("Waiting for spinner to set value") {
@Override public boolean until() {
Integer value = (Integer) spinnerNode.getValue();
return value == 45;
}
};
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void selectDoubleSpinner() {
IJavaFXElement spinner = driver.findElementByName("double-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#double-spinner");
Platform.runLater(() -> {
spinnerNode.setEditable(false);
spinner.marathon_select("38.9");
});
new Wait("Waiting for spinner to set value") {
@Override public boolean until() {
Double value = (Double) spinnerNode.getValue();
return value == 38.9;
}
};
}
项目:marathonv5
文件:JavaFXSpinnerElementTest.java
@Test public void selectEditableDoubleSpinner() {
IJavaFXElement spinner = driver.findElementByName("double-spinner");
Spinner<?> spinnerNode = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#double-spinner");
Platform.runLater(() -> {
spinner.marathon_select("49.0");
});
new Wait("Waiting for spinner to set value") {
@Override public boolean until() {
Double value = (Double) spinnerNode.getValue();
return value == 49.0;
}
};
}
项目:marathonv5
文件:SpinnerSample.java
public SpinnerSample() {
Spinner<Object> listSpinner = createListSpinner();
Spinner<Integer> integerSpinner = createIntegerSpinner();
Spinner<Double> doubleSpinner = createDoubleSpinner();
HBox hBox = new HBox();
hBox.setSpacing(20.0);
hBox.getChildren().addAll(listSpinner, integerSpinner, doubleSpinner);
getChildren().add(hBox);
}
项目:marathonv5
文件:SpinnerSample.java
private Spinner<Double> createDoubleSpinner() {
Spinner<Double> spinner = new Spinner<Double>();
spinner.setId("double-spinner");
spinner.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(25.50, 50.50));
spinner.setEditable(true);
return spinner;
}
项目:marathonv5
文件:RFXSpinner.java
@Override public void focusLost(RFXComponent next) {
Spinner<?> spinner = (Spinner<?>) node;
String currentValue = getSpinnerText(spinner);
if (!currentValue.equals(oldValue)) {
recorder.recordSelect(this, currentValue);
}
}
项目:marathonv5
文件:RFXSpinnerTest.java
@Test public void selectListSpinner() {
Spinner<?> spinner = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup(".spinner");
LoggingRecorder lr = new LoggingRecorder();
Platform.runLater(() -> {
RFXSpinner rfxSpinner = new RFXSpinner(spinner, null, null, lr);
spinner.getEditor().setText("March");
rfxSpinner.focusLost(null);
});
List<Recording> recordings = lr.waitAndGetRecordings(1);
Recording recording = recordings.get(0);
AssertJUnit.assertEquals("recordSelect", recording.getCall());
AssertJUnit.assertEquals("March", recording.getParameters()[0]);
}
项目:marathonv5
文件:RFXSpinnerTest.java
@Test public void selectListEditableSpinner() {
Spinner<?> spinner = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup(".spinner");
LoggingRecorder lr = new LoggingRecorder();
Platform.runLater(() -> {
spinner.setEditable(true);
RFXSpinner rfxSpinner = new RFXSpinner(spinner, null, null, lr);
spinner.getEditor().setText("April");
rfxSpinner.focusLost(null);
});
List<Recording> recordings = lr.waitAndGetRecordings(1);
Recording recording = recordings.get(0);
AssertJUnit.assertEquals("recordSelect", recording.getCall());
AssertJUnit.assertEquals("April", recording.getParameters()[0]);
}
项目:marathonv5
文件:RFXSpinnerTest.java
@Test public void selectIntegerSpinner() {
Spinner<?> spinner = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#integer-spinner");
LoggingRecorder lr = new LoggingRecorder();
Platform.runLater(() -> {
RFXSpinner rfxSpinner = new RFXSpinner(spinner, null, null, lr);
spinner.getEditor().setText("25");
rfxSpinner.focusLost(null);
});
List<Recording> recordings = lr.waitAndGetRecordings(1);
Recording recording = recordings.get(0);
AssertJUnit.assertEquals("recordSelect", recording.getCall());
AssertJUnit.assertEquals("25", recording.getParameters()[0]);
}
项目:marathonv5
文件:RFXSpinnerTest.java
@Test public void selectDoubleSpinner() {
Spinner<?> spinner = (Spinner<?>) getPrimaryStage().getScene().getRoot().lookup("#double-spinner");
LoggingRecorder lr = new LoggingRecorder();
Platform.runLater(() -> {
RFXSpinner rfxSpinner = new RFXSpinner(spinner, null, null, lr);
spinner.getEditor().setText("35.5");
rfxSpinner.focusLost(null);
});
List<Recording> recordings = lr.waitAndGetRecordings(1);
Recording recording = recordings.get(0);
AssertJUnit.assertEquals("recordSelect", recording.getCall());
AssertJUnit.assertEquals("35.5", recording.getParameters()[0]);
}
项目:Goliath-Overclocking-Utility-FX
文件:OverclockingPaneTemplate.java
public OverclockingPaneTemplate(boolean showReset)
{
super();
super.getStyleClass().add("hbox");
//super.setPadding(new Insets(10,10,10,10));
super.setPadding(new Insets(10,10,0,10));
super.setVgap(5);
super.setHgap(30);
currentValueLabel = new Label();
minValueLabel = new Label();
maxValueLabel = new Label();
currentValueSpinner = new Spinner<>();
currentMinValue = new Label();
currentMaxValue = new Label();
apply = new Button("Apply");
apply.setPrefWidth(100);
if(showReset)
{
reset = new Button("Reset");
reset.setPrefWidth(100);
}
currentValueSpinner.setPrefWidth(85);
super.add(currentValueLabel, 0, 0);
super.add(minValueLabel, 1, 0);
super.add(maxValueLabel, 2, 0);
super.add(apply, 3, 0);
super.add(currentValueSpinner, 0, 1);
super.add(currentMinValue, 1, 1);
super.add(currentMaxValue, 2, 1);
if(showReset)
super.add(reset, 3, 1);
}
项目:redisfx
文件:Fx.java
public static void fixIntegerSpinner(Spinner<Integer> spinner) {
spinner.getEditor().textProperty().addListener((_ob, _old, _new) -> {
try {
int value = Integer.parseInt(_new);
spinner.getValueFactory().setValue(value);
} catch (NumberFormatException e) {
// nothing
}
});
}
项目:openjfx-8u-dev-tests
文件:SpinnerApp.java
public void setSpinnerValueFactory(final Spinner _spinner, final String _newValue) {
ObservableList<String> items = FXCollections.observableArrayList("Jonathan", "Julia", "Henry");
switch (_newValue) {
case "Integer": {
_spinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(5, 10));
break;
}
case "List<String>": {
_spinner.setValueFactory(new SpinnerValueFactory.ListSpinnerValueFactory<>(items));
break;
}
/* postponed. see https://javafx-jira.kenai.com/browse/RT-37968
case "Calendar": {
_spinner.setValueFactory(new SpinnerValueFactory.LocalDateSpinnerValueFactory());
break;
}
*/
case "Double": {
_spinner.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(0.0, 1.0, 0.5, 0.05));
break;
}
default: {
_spinner.setValueFactory(null);
break;
}
}
}
项目:openjfx-8u-dev-tests
文件:SpinnerUtils.java
public static void retrieveSpinnerValues(final Wrap<? extends Spinner> _spinner) {
new GetAction() {
@Override
public void run(Object... os) throws Exception {
final Spinner spinner = (Spinner)_spinner.getControl();
spinnerPropertyValue = spinner.getValue().toString();
spinnerEditorValue = spinner.getEditor().textProperty().get();
System.out.println("retrieved values:" + spinnerPropertyValue + " / " + spinnerEditorValue);
}
}.dispatch(Root.ROOT.getEnvironment());
}
项目:Simulizer
文件:DoubleControl.java
public DoubleControl(Options o, DoubleSetting setting) {
setSpacing(3);
// Option Name
Label title = new Label(setting.getHumanName());
title.setFont(new Font(20));
title.getStyleClass().add("title");
getChildren().add(title);
// Option Desc
if (!setting.getDescription().equals("")) {
Label desc = new Label(setting.getDescription());
desc.getStyleClass().add("description");
desc.setFont(new Font(14));
desc.setWrapText(true);
getChildren().add(desc);
}
// Option Value
Spinner<Double> value = new Spinner<>();
DoubleSpinnerValueFactory factory = new DoubleSpinnerValueFactory(0, 0);
factory.setMax(setting.getHighBound());
factory.setMin(setting.getLowBound());
factory.setValue(setting.getValue());
double step = (setting.getHighBound() - setting.getLowBound()) / 1000;
factory.setAmountToStepBy(step <= 20 ? step : 20);
value.setValueFactory(factory);
value.setEditable(true);
value.getStyleClass().add("value");
value.setPrefWidth(Double.MAX_VALUE);
value.valueProperty().addListener(e -> {
if (setting.isValid(value.getValue())) {
o.madeChanges();
setting.setValue(value.getValue());
} else
value.getValueFactory().setValue(setting.getValue());
});
getChildren().add(value);
}
项目:3DScanner.RaspberryPi
文件:UIController.java
private void setUpSpinnerInt(Spinner<Integer> spinner, int pos, int min, int max, int increment, int savedSet ){
IntegerSpinnerValueFactory oswFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(min, max, savedSet, increment);
spinner.setValueFactory(oswFactory);
spinner.valueProperty().addListener((obs, oldValue, newValue) -> {
System.out.println("New value: "+newValue);
// hier könnte es rundungsfehler von double auf Number geben
setValueSettings(pos, newValue);
});
}
项目:3DScanner.RaspberryPi
文件:UIController.java
private void setUpSpinnerDouble(Spinner<Double> spinner, int pos, double min, double max, double increment, double savedSet){
DoubleSpinnerValueFactory oswFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(min, max, savedSet, increment);
spinner.setValueFactory(oswFactory);
spinner.valueProperty().addListener((obs, oldValue, newValue) -> {
System.out.println("New value: "+newValue);
// hier könnte es rundungsfehler von double auf Number geben
setValueSettings(pos, newValue);
});
}
项目:theta
文件:BaseGui.java
protected Spinner<Integer> createSpinner(final String label, final int min, final int max, final int init) {
final Spinner<Integer> sp = new Spinner<>(min, max, init);
sp.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
GridPane.setFillWidth(sp, true);
controls.add(new Text(label + ":"), 0, nRows);
controls.add(sp, 1, nRows);
nRows++;
return sp;
}
项目:Map-Projections
文件:MapApplication.java
/**
* Create a grid of sliders and spinners not unlike the aspectSelector
* @param parameterSetter The function to execute when the parameters change
* @return the full formatted Region
*/
@SuppressWarnings("unchecked")
protected Region buildParameterSelector(Procedure parameterSetter) {
currentParams = new double[4];
paramLabels = new Label[4];
paramSliders = new Slider[4]; // I don't think any projection has more than four parameters
final Spinner<Double> spin0 = new Spinner<Double>(0.,0.,0.); //yes, this is awkward. Java gets weird about arrays with generic types
paramSpinners = (Spinner<Double>[])Array.newInstance(spin0.getClass(), 4);
paramSpinners[0] = spin0;
for (int i = 0; i < 4; i ++) {
paramLabels[i] = new Label();
paramSliders[i] = new Slider();
if (i != 0)
paramSpinners[i] = new Spinner<Double>(0.,0.,0.);
link(paramSliders[i], paramSpinners[i], i, currentParams, (d)->d, parameterSetter, isChanging, suppressListeners);
}
for (int i = 0; i < 4; i ++) {
GridPane.setHgrow(paramSliders[i], Priority.ALWAYS);
paramSpinners[i].setEditable(true);
}
paramGrid = new GridPane();
paramGrid.setVgap(V_SPACE);
paramGrid.setHgap(H_SPACE);
paramGrid.getColumnConstraints().addAll(
new ColumnConstraints(SPINNER_WIDTH,Control.USE_COMPUTED_SIZE,Control.USE_COMPUTED_SIZE),
new ColumnConstraints(), new ColumnConstraints(SPINNER_WIDTH));
return paramGrid;
}
项目:Map-Projections
文件:MapApplication.java
/**
* Create a block of niche options - specifically International Dateline cropping and whether
* there should be a graticule
* @param cropAtIDL The mutable boolean value to which to bind the "Crop at Dateline" CheckBox
* @param graticule The mutable double value to which to bind the "Graticule" Spinner
* @return the full formatted Region
*/
protected Region buildOptionPane(Flag cropAtIDL, MutableDouble graticule) {
final CheckBox cropBox = new CheckBox("Crop at International Dateline"); //the CheckBox for whether there should be shown imagery outside the International Dateline
cropBox.setSelected(cropAtIDL.isSet());
cropBox.setTooltip(new Tooltip("Show every point exactly once."));
cropBox.selectedProperty().addListener((observable, old, now) -> {
cropAtIDL.set(now);
});
final ObservableList<Double> factorsOf90 = FXCollections.observableArrayList();
for (double f = 1; f <= 90; f += 0.5)
if (90%f == 0)
factorsOf90.add((double)f);
final Spinner<Double> gratSpinner = new Spinner<Double>(factorsOf90); //spinner for the graticule value
gratSpinner.getValueFactory().setConverter(new DoubleStringConverter());
gratSpinner.getValueFactory().setValue(graticule.get());
gratSpinner.setDisable(graticule.isZero());
gratSpinner.setEditable(true);
gratSpinner.setTooltip(new Tooltip("The spacing in degrees between shown parallels and meridians."));
gratSpinner.setPrefWidth(SPINNER_WIDTH);
gratSpinner.valueProperty().addListener((observable, old, now) -> {
graticule.set(now); //which is tied to the mutable graticule spacing variable
});
final CheckBox gratBox = new CheckBox("Graticule: "); //the CheckBox for whether there should be a graticule
gratBox.setSelected(!graticule.isZero());
gratBox.setTooltip(new Tooltip("Overlay a mesh of parallels and meridians."));
gratBox.selectedProperty().addListener((observable, old, now) -> {
if (now)
graticule.set(gratSpinner.getValue()); //set the value of graticule appropriately when checked
else
graticule.set(0); //when not checked, represent "no graticule" as a spacing of 0
gratSpinner.setDisable(!now); //disable the graticule Spinner when appropriate
});
final HBox gratRow = new HBox(H_SPACE, gratBox, gratSpinner);
gratRow.setAlignment(Pos.CENTER_LEFT);
return new VBox(V_SPACE, cropBox, gratRow);
}
项目:Map-Projections
文件:MapApplication.java
private void setAspectByPreset(String presetName,
Slider[] sliders, Spinner<Double>[] spinners) {
this.suppressListeners.set();
if (presetName.equals("Antipode")) {
sliders[0].setValue(-sliders[0].getValue());
sliders[1].setValue((sliders[1].getValue()+360)%360-180);
sliders[2].setValue(-sliders[2].getValue());
}
else if (presetName.equals("Random")) {
sliders[0].setValue(Math.toDegrees(Math.asin(Math.random()*2-1)));
sliders[1].setValue(Math.random()*360-180);
sliders[2].setValue(Math.random()*360-180);
}
else {
for (int i = 0; i < ASPECT_NAMES.length; i ++) {
if (ASPECT_NAMES[i].equals(presetName)) {
for (int j = 0; j < 3; j ++)
sliders[j].setValue(ASPECT_VALS[j][i]);
break;
}
}
}
for (int i = 0; i < 3; i ++)
spinners[i].getEditor().textProperty().set(
Double.toString(sliders[i].getValue()));
this.suppressListeners.clear();
}
项目:Map-Projections
文件:MapApplication.java
private static void link(Slider sld, Spinner<Double> spn, int i, double[] doubles,
DoubleUnaryOperator converter, Procedure callback, Flag isChanging, Flag suppressListeners) {
sld.valueChangingProperty().addListener((observable, prev, now) -> { //link spinner to slider
isChanging.set(now);
if (!now) {
if (spn.getValue() != sld.getValue())
spn.getValueFactory().setValue(sld.getValue());
doubles[i] = converter.applyAsDouble(Math2.round(sld.getValue(),3));
if (!suppressListeners.isSet())
callback.execute();
}
});
sld.valueProperty().addListener((observable, prev, now) -> {
if (spn.getValue() != sld.getValue())
spn.getValueFactory().setValue(sld.getValue());
doubles[i] = converter.applyAsDouble(Math2.round(now.doubleValue(),3));
if (!suppressListeners.isSet())
callback.execute();
});
spn.valueProperty().addListener((observable, prev, now) -> { //link slider to spinner
if (spn.getValue() != sld.getValue())
sld.setValue(spn.getValue());
});
spn.focusedProperty().addListener((observable, prev, now) -> { //make spinner act rationally
if (!now) spn.increment(0);
});
}
项目:WhoWhatWhere
文件:VisualTraceUI.java
@Override
public void updateItem(String item, boolean empty)
{
super.updateItem(item, empty);
if (item == null || empty)
{
setGraphic(null);
setText(null);
}
else
{
String ip = item;
HBox zoomControls = mapIPToZoomControls.get(ip); //"cache" is required so we won't lose the zoomControl's state when tableTrace.refresh() is called (while dragging splitter)
if (zoomControls == null)
{
ToggleButton btnZoom = createZoomButton(ip);
Spinner<Integer> spinnerZoom = createZoomSpinner(btnZoom, ip);
zoomControls = new HBox(btnZoom, spinnerZoom);
zoomControls.setStyle("-fx-alignment: center;");
mapIPToZoomControls.put(ip, zoomControls);
}
setGraphic(zoomControls);
setText(null);
}
}
项目:JVx.javafx
文件:FXSpinnerBehaviorRT40623.java
/**
* Creates a new instance of {@link FXSpinnerBehaviorRT40623}.
*
* @param pSpinner the spinner.
*/
public FXSpinnerBehaviorRT40623(Spinner<T> pSpinner)
{
super(pSpinner);
keyPressedHandler = this::onKeyPressed;
scrollHandler = this::onScroll;
pSpinner.addEventFilter(KeyEvent.KEY_PRESSED, keyPressedHandler);
pSpinner.addEventFilter(ScrollEvent.SCROLL, scrollHandler);
}
项目:JVx.javafx
文件:FXDateTimePickerSkin.java
/**
* Creates the {@link ComboBox} used for selection a year.
*
* @return the {@link ComboBox} for selecting a year.
*/
private Spinner<Integer> createYearSelector()
{
Spinner<Integer> yearSpinner = new FXSpinnerRT40623<>(new IntegerSpinnerValueFactory(Integer.MIN_VALUE, Integer.MAX_VALUE));
yearSpinner.getStyleClass().add("year-selector");
yearSpinner.setEditable(true);
yearSpinner.valueProperty().addListener(this::onSelectedYearChanged);
return yearSpinner;
}