下面列出了怎么用javafx.scene.control.SplitPane的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* SplitPaneの分割サイズを設定する
*
* @param pane SplitPane
* @param key SplitPaneのキー
*/
public static void setSplitWidth(SplitPane pane, String key) {
Double position = AppConfig.get().getDividerPositionMap()
.get(key);
Iterator<Divider> ite = pane.getDividers()
.iterator();
if (ite.hasNext()) {
Divider divider = ite.next();
if (position != null) {
divider.setPosition(position);
}
// 幅が変更された時に設定を保存する
divider.positionProperty().addListener((ob, o, n) -> {
AppConfig.get().getDividerPositionMap().put(key, n.doubleValue());
});
}
}
@Override
public void start(Stage primaryStage) {
TextArea textArea = new TextArea();
WebView webView = new WebView();
WebEngine engine = webView.getEngine();
EventStreams.valuesOf(textArea.textProperty())
.successionEnds(Duration.ofMillis(500))
.subscribe(html -> engine.loadContent(html));
SplitPane root = new SplitPane();
root.getItems().addAll(textArea, webView);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public SplitPane initializeTrend() throws Exception {
if (trendChartController == null) {
// Load the fxml file and create the anchor pane
FXMLLoader loader = FXMLLoaderFactory.trendChartLoader();
spTrendChart = (SplitPane) loader.getRoot();
trendChartController = loader.getController();
trendChartController.initialize(getApp());
// data provider
trendChartController.setProvider(this);
setImages();
}
return spTrendChart;
}
public SplitPane initializeTrend() throws Exception {
if (trendChartController == null) {
// Load the fxml file and create the anchor pane
FXMLLoader loader = FXMLLoaderFactory.trendChartLoader();
spTrendChart = (SplitPane) loader.getRoot();
trendChartController = loader.getController();
trendChartController.initialize(getApp());
// data provider
trendChartController.setProvider(this);
setImages();
lbUser.setText(null);
}
return spTrendChart;
}
public void sizeSplitPanes(SplitPane splitpane) {
assert splitpane.getScene() != null;
assert splitpane.getScene().getWidth() > 0.0d;
try {
double configuredProcessesWidth = configuredProcessesWidth();
double sceneWidth = splitpane.getScene().getWidth();
double percent = (configuredProcessesWidth / sceneWidth);
// the split pane divider position can only be set as a percentage of the split pane
splitpane.setDividerPosition(0, percent);
splitpane.setDividerPosition(1, 1D - percent);
}
catch (NumberFormatException e) {
e.printStackTrace();
}
// whenever the width of the pane changes, write it to configuration
// this is buffered so rapid writes do not cause rapid writes to disk
entopPane.widthProperty().addListener((o, ov, nv) -> {
PrefBind.set("processesWidth", nv);
});
}
public SplitPane initializeTrend() throws Exception {
if (trendChartController == null) {
// Load the fxml file and create the anchor pane
FXMLLoader loader = FXMLLoaderFactory.trendChartLoader();
spTrendChart = (SplitPane) loader.getRoot();
trendChartController = loader.getController();
trendChartController.initialize(getApp());
// data provider
trendChartController.setProvider(this);
setImages();
lbJob.setText(null);
}
return spTrendChart;
}
public SplitPane initializeTrend() throws Exception {
if (trendChartController == null) {
// Load the fxml file and create the anchor pane
FXMLLoader loader = FXMLLoaderFactory.trendChartLoader();
spTrendChart = (SplitPane) loader.getRoot();
trendChartController = loader.getController();
trendChartController.initialize(getApp());
// data provider
trendChartController.setProvider(this);
setImages();
lbHost.setText(null);
}
return spTrendChart;
}
public SplitPane initializeTrend() throws Exception {
if (trendChartController == null) {
// Load the fxml file and create the anchor pane
FXMLLoader loader = FXMLLoaderFactory.trendChartLoader();
spTrendChart = (SplitPane) loader.getRoot();
trendChartController = loader.getController();
trendChartController.initialize(getApp());
// data provider
trendChartController.setProvider(this);
setImages();
lbBroker.setText(null);
}
return spTrendChart;
}
/**
* Create a new lyrics panel.
* <p/>
* @param containerPanel the container panel this panel is contained within.
*/
public SelectLyricsPanel(LivePreviewPanel containerPanel) {
lyricDrawer = new LyricDrawer();
stageDrawer = new StageDrawer();
splitPane = new SplitPane();
splitPane.setOrientation(Orientation.VERTICAL);
lyricsList = new SelectLyricsList();
previewCanvas = new DisplayCanvas(false, false, false, this::updateCanvas, Priority.LOW);
DisplayPreview preview = new DisplayPreview(previewCanvas);
splitPane.getItems().add(lyricsList);
splitPane.getItems().add(preview);
setCenter(splitPane);
registerDisplayCanvas(previewCanvas);
lyricsList.getSelectionModel().selectedItemProperty().addListener((ov, t1, t2) -> {
updateCanvas();
});
lyricsList.itemsProperty().addListener((ov, t1, t2) -> {
updateCanvas();
});
//
}
@Override
public void start(Stage primaryStage) {
final SplitPane root = new SplitPane();
Graph tree = new Graph();
addTreeComponents(tree);
root.getItems().add(tree.getCanvas());
SequenceDiagram seqDiagram = new SequenceDiagram();
addSequenceDiagramComponents(seqDiagram);
root.getItems().add(seqDiagram.getCanvas());
final Scene scene = new Scene(root, 1024, 768);
scene.getStylesheets().add(getClass().getResource("/application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
private static void restoreSplitPane(String prefix, SplitPane sp)
{
String k = prefix + SFX_DIVIDERS;
SStream s = GlobalSettings.getStream(k);
// must run later because of FX split pane inability to set divider positions exactly
FX.later(() ->
{
int ct = s.nextInt();
if(sp.getDividers().size() == ct)
{
for(int i=0; i<ct; i++)
{
double div = s.nextDouble();
sp.setDividerPosition(i, div);
}
}
});
}
@Test
public void select() {
SplitPane splitPaneNode = (SplitPane) getPrimaryStage().getScene().getRoot().lookup(".split-pane");
JSONArray initialValue = new JSONArray(splitPaneNode.getDividerPositions());
Platform.runLater(() -> {
splitPane.marathon_select("[0.6]");
});
new Wait("Waiting for split pane to set divider location") {
@Override
public boolean until() {
return initialValue.getDouble(0) != new JSONArray(splitPaneNode.getDividerPositions()).getDouble(0);
}
};
JSONArray pa = new JSONArray(splitPaneNode.getDividerPositions());
AssertJUnit.assertEquals(0.6, pa.getDouble(0), 0.2);
}
@Test
public void select2() {
SplitPane splitPaneNode = (SplitPane) getPrimaryStage().getScene().getRoot().lookup(".split-pane");
JSONArray initialValue = new JSONArray(splitPaneNode.getDividerPositions());
Platform.runLater(() -> {
splitPane.marathon_select("[0.30158730158730157,0.8]");
});
new Wait("Waiting for split pane to set divider location") {
@Override
public boolean until() {
return initialValue.getDouble(1) != new JSONArray(splitPaneNode.getDividerPositions()).getDouble(1);
}
};
JSONArray pa = new JSONArray(splitPaneNode.getDividerPositions());
AssertJUnit.assertEquals(0.8, pa.getDouble(1), 0.1);
}
@Test
public void getText() {
SplitPane splitPane = (SplitPane) getPrimaryStage().getScene().getRoot().lookup(".split-pane");
LoggingRecorder lr = new LoggingRecorder();
List<String> text = new ArrayList<>();
Platform.runLater(() -> {
RFXSplitPane rfxSplitPane = new RFXSplitPane(splitPane, null, null, lr);
splitPane.setDividerPosition(0, 0.6);
rfxSplitPane.mouseReleased(null);
text.add(rfxSplitPane.getAttribute("text"));
});
new Wait("Waiting for split pane text.") {
@Override
public boolean until() {
return text.size() > 0;
}
};
AssertJUnit.assertEquals("[0.6,0.6008064516129032]", text.get(0));
}
private SplitPane createChartPane() {
CategoryDataset3D dataset = SampleData.createCompanyRevenueDataset();
Chart3D chart = AreaChart3DFXDemo1.createChart(dataset);
Chart3DViewer viewer = new Chart3DViewer(chart);
this.splitter = new SplitPane();
splitter.setOrientation(Orientation.VERTICAL);
final BorderPane borderPane = new BorderPane();
borderPane.setCenter(viewer);
// Bind canvas size to stack pane size.
viewer.prefWidthProperty().bind(borderPane.widthProperty());
viewer.prefHeightProperty().bind(borderPane.heightProperty());
final StackPane sp2 = new StackPane();
this.chartDescription = new WebView();
WebEngine webEngine = chartDescription.getEngine();
webEngine.load(AreaChart3DFXDemo1.class.getResource("AreaChart3DFXDemo1.html").toString());
sp2.getChildren().add(chartDescription);
splitter.getItems().addAll(borderPane, sp2);
splitter.setDividerPositions(0.70f, 0.30f);
return splitter;
}
private SplitPane addTicPlot(PeakListRow row) {
SplitPane pane = new SplitPane();
pane.setOrientation(Orientation.HORIZONTAL);
// labels for TIC visualizer
Map<Feature, String> labelsMap = new HashMap<Feature, String>(0);
// scan selection
ScanSelection scanSelection = new ScanSelection(rawFiles[0].getDataRTRange(1), 1);
// mz range
Range<Double> mzRange = null;
mzRange = feature.getRawDataPointsMZRange();
// optimize output by extending the range
double upper = mzRange.upperEndpoint();
double lower = mzRange.lowerEndpoint();
double fiveppm = (upper * 5E-6);
mzRange = Range.closed(lower - fiveppm, upper + fiveppm);
// labels
labelsMap.put(feature, feature.toString());
List<Feature> featureSelection = Arrays.asList(row.getPeaks());
TICVisualizerWindow window = new TICVisualizerWindow(rawFiles, // raw
TICPlotType.BASEPEAK, // plot type
scanSelection, // scan selection
mzRange, // mz range
featureSelection, // selected features
labelsMap); // labels
pane.getItems().add(window.getScene().getRoot());
return pane;
}
private SplitPane addSpectraMS1() {
SplitPane pane = new SplitPane();
pane.setOrientation(Orientation.HORIZONTAL);
SpectraVisualizerWindow spectraWindowMS1 = new SpectraVisualizerWindow(rawFiles[0]);
spectraWindowMS1.loadRawData(rawFiles[0].getScan(feature.getRepresentativeScanNumber()));
pane.getItems().add(spectraWindowMS1.getScene().getRoot());
return pane;
}
private SplitPane addSpectraMS2() {
SplitPane pane = new SplitPane();
pane.setOrientation(Orientation.HORIZONTAL);
SpectraVisualizerWindow spectraWindowMS2 = new SpectraVisualizerWindow(rawFiles[0]);
spectraWindowMS2.loadRawData(rawFiles[0].getScan(feature.getMostIntenseFragmentScanNumber()));
pane.getItems().add(spectraWindowMS2.getScene().getRoot());
return pane;
}
public MainWindowFxml(MainWindow controller) {
controller.root = this;
this.setId("root");
BorderPane borderpane = new BorderPane();
borderpane.setTop(new ToolbarComponentFxml(controller.toolbarComponent));
this.getChildren().add(borderpane);
SplitPane splitPane = new SplitPane();
splitPane.setDividerPositions(0.2);
splitPane.getItems().add(new RequestCollectionComponentFxml(controller.requestCollectionComponent));
splitPane.getItems().add(new WorkingAreaComponentFxml(controller.workingArea));
borderpane.setCenter(splitPane);
}
public SVRealNodeAdapter(final Node node, final boolean collapseControls, final boolean collapseContentControls) {
super(ConnectorUtils.nodeClass(node), node.getClass().getName());
this.node = node;
this.collapseControls = collapseControls;
this.collapseContentControls = collapseContentControls;
boolean mustBeExpanded = !(node instanceof Control) || !collapseControls;
if (!mustBeExpanded && !collapseContentControls) {
mustBeExpanded = node instanceof TabPane || node instanceof SplitPane || node instanceof ScrollPane || node instanceof Accordion || node instanceof TitledPane;
}
setExpanded(mustBeExpanded);
}
public SVRemoteNodeAdapter(final Node node, final boolean collapseControls, final boolean collapseContentControls, final boolean fillChildren, final SVRemoteNodeAdapter parent) {
super(ConnectorUtils.nodeClass(node), node.getClass().getName());
boolean mustBeExpanded = !(node instanceof Control) || !collapseControls;
if (!mustBeExpanded && !collapseContentControls) {
mustBeExpanded = node instanceof TabPane || node instanceof SplitPane || node instanceof ScrollPane || node instanceof Accordion || node instanceof TitledPane;
}
setExpanded(mustBeExpanded);
this.id = node.getId();
this.nodeId = ConnectorUtils.getNodeUniqueID(node);
this.focused = node.isFocused();
if (node.getParent() != null && parent == null) {
this.parent = new SVRemoteNodeAdapter(node.getParent(), collapseControls, collapseContentControls, false, null);
} else if (parent != null) {
this.parent = parent;
}
/**
* Check visibility and mouse transparency after calculating the parent
*/
this.mouseTransparent = node.isMouseTransparent() || (this.parent != null && this.parent.isMouseTransparent());
this.visible = node.isVisible() && (this.parent == null || this.parent.isVisible());
/**
* TODO This should be improved
*/
if (fillChildren) {
nodes = ChildrenGetter.getChildren(node)
.stream()
.map(childNode -> new SVRemoteNodeAdapter(childNode, collapseControls, collapseContentControls, true, this))
.collect(Collectors.toList());
}
}
public SplitPane initializeTrend() throws Exception {
if (trendChartController == null) {
FXMLLoader loader = FXMLLoaderFactory.trendChartLoader();
spTrendChart = (SplitPane) loader.getRoot();
trendChartController = loader.getController();
trendChartController.initialize(getApp());
// data provider
trendChartController.setProvider(this);
setImages();
}
return spTrendChart;
}
void showOpcDaTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file and create a new stage for the pop-up dialog.
FXMLLoader loader = FXMLLoaderFactory.opcDaTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("opc.da.trend"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
OpcDaTrendController opcDaTrendController = loader.getController();
opcDaTrendController.setDialogStage(dialogStage);
opcDaTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = opcDaTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
opcDaTrendController.setScriptResolver(eventResolver);
// show the window
opcDaTrendController.getDialogStage().show();
}
void showOpcUaTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file and create a new stage for the pop-up dialog.
FXMLLoader loader = FXMLLoaderFactory.opcUaTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("opc.ua.trend"));
dialogStage.initModality(Modality.NONE);
// dialogStage.initOwner(primaryStage);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
OpcUaTrendController opcUaTrendController = loader.getController();
opcUaTrendController.setDialogStage(dialogStage);
opcUaTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = opcUaTrendController.initializeTrend();
opcUaTrendController.setUpdatePeriodMsec(eventResolver.getUpdatePeriod());
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
opcUaTrendController.setScriptResolver(eventResolver);
// show the window
opcUaTrendController.getDialogStage().show();
}
void showHttpTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file and create a new stage for the pop-up dialog.
FXMLLoader loader = FXMLLoaderFactory.httpTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("http.trend.title"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
HttpTrendController httpTrendController = loader.getController();
httpTrendController.setDialogStage(dialogStage);
httpTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = httpTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
httpTrendController.setScriptResolver(eventResolver);
// start HTTP server
httpTrendController.onStartServer();
// show the trend
httpTrendController.getDialogStage().show();
}
void showMessagingTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file
FXMLLoader loader = FXMLLoaderFactory.messagingTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("rmq.event.trend"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
RmqTrendController messagingTrendController = loader.getController();
messagingTrendController.setDialogStage(dialogStage);
messagingTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = messagingTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
messagingTrendController.setEventResolver(eventResolver);
// subscribe to broker
messagingTrendController.subscribeToDataSource();
// show the window
messagingTrendController.getDialogStage().show();
}
void showJMSTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file
FXMLLoader loader = FXMLLoaderFactory.jmsTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("jms.event.trend"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
JmsTrendController jmsTrendController = loader.getController();
jmsTrendController.setDialogStage(dialogStage);
jmsTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = jmsTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
jmsTrendController.setEventResolver(eventResolver);
// subscribe to broker
jmsTrendController.subscribeToDataSource();
// show the window
jmsTrendController.getDialogStage().show();
}
void showMQTTTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file
FXMLLoader loader = FXMLLoaderFactory.mqttTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("mqtt.event.trend"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
MqttTrendController mqttTrendController = loader.getController();
mqttTrendController.setDialogStage(dialogStage);
mqttTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = mqttTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
mqttTrendController.setEventResolver(eventResolver);
// subscribe to broker
mqttTrendController.subscribeToDataSource();
// show the window
mqttTrendController.getDialogStage().show();
}
void showDatabaseTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file and create a new stage for the pop-up dialog.
FXMLLoader loader = FXMLLoaderFactory.databaseTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("db.event.trend"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
DatabaseTrendController databaseTrendController = loader.getController();
databaseTrendController.setDialogStage(dialogStage);
databaseTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = databaseTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
databaseTrendController.setEventResolver(eventResolver);
// connect to the database server
databaseTrendController.subscribeToDataSource();
// show the window
databaseTrendController.getDialogStage().show();
}
void showFileTrendDialog(EventResolver eventResolver) throws Exception {
// Load the fxml file and create a new stage for the pop-up dialog.
FXMLLoader loader = FXMLLoaderFactory.fileTrendLoader();
AnchorPane page = (AnchorPane) loader.getRoot();
// Create the dialog Stage.
Stage dialogStage = new Stage(StageStyle.DECORATED);
dialogStage.setTitle(DesignerLocalizer.instance().getLangString("file.event.trend"));
dialogStage.initModality(Modality.NONE);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
// get the controller
FileTrendController fileTrendController = loader.getController();
fileTrendController.setDialogStage(dialogStage);
fileTrendController.setApp(this);
// add the trend chart
SplitPane chartPane = fileTrendController.initializeTrend();
AnchorPane.setBottomAnchor(chartPane, 50.0);
AnchorPane.setLeftAnchor(chartPane, 5.0);
AnchorPane.setRightAnchor(chartPane, 5.0);
AnchorPane.setTopAnchor(chartPane, 50.0);
page.getChildren().add(0, chartPane);
// set the script resolver
fileTrendController.setEventResolver(eventResolver);
// connect to the file server
fileTrendController.subscribeToDataSource();
// show the window
fileTrendController.getDialogStage().show();
}