gpt4 book ai didi

javafx - 修复 X ​​和 Y 轴宽度,JavaFX

转载 作者:行者123 更新时间:2023-12-02 04:30:49 26 4
gpt4 key购买 nike

如何使用 JavaFx 折线图实现固定轴宽度。

import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.stage.Stage;

public class Axis extends Application
{

private Timeline animation;

public static void main(final String[] args)
{
launch(args);
}

@Override
public void start(final Stage stage) throws Exception
{
final NumberAxis x = new NumberAxis();
final NumberAxis y = new NumberAxis();
x.setAutoRanging(false);
y.setAutoRanging(false);

final LineChart<Number, Number> lineChart = new LineChart<Number, Number>(x, y);
// final Series series = new LineChart.Series<Number, Number>();
//
// series.getData().add(new XYChart.Data(20, 23));
// series.getData().add(new XYChart.Data(35, 14));
// series.getData().add(new XYChart.Data(43, 15));
// series.getData().add(new XYChart.Data(60, 24));
// series.getData().add(new XYChart.Data(10, 34));
//
// lineChart.getData().add(series);
lineChart.setPrefHeight(10);
lineChart.setPrefWidth(10);
lineChart.setMinHeight(10);
lineChart.setMinWidth(10);
lineChart.setMaxHeight(10);
lineChart.setMaxWidth(10);

final Scene scene = new Scene(lineChart, 800, 800);
stage.setScene(scene);
stage.show();

}

@Override
public void stop()
{
animation.pause();
}
}

enter image description here

我希望网格(以红色标记的示例)在调整窗口大小时不缩放。目前,当窗口大小调整时,网格大小也会调整,如下所示

enter image description here

我无法使用 minWidth 和 maxWidth API 实现我需要的内容

最佳答案

防止调整图表大小

您可以通过设置首选尺寸、最小尺寸和最大尺寸来防止图表调整大小:

lineChart.setMinSize(Control.USE_PREF_SIZE, Control.USE_PREF_SIZE);
lineChart.setPrefSize(800, 600);
lineChart.setMaxSize(Control.USE_PREF_SIZE, Control.USE_PREF_SIZE);

唯一的异常(exception)是当图表是场景的根时,在这种情况下,您应该将图表包装在 Pane 或组中,以防止调整其大小以适应场景(因为 JavaFX 中的布局怪癖) 8 渲染逻辑)。

另请注意,将任何可调整大小的节点包装为一个组会将节点的大小(不包括变换和效果)调整为其首选尺寸,并且永远不会更改它们。

不幸的是,设置图表的首选大小与直接设置图表轴的首选大小并不完全相同,因为它使整个图表具有该大小,而不是特定的轴线,这可能就是您的尺寸带着你的问题寻找。

防止调整图表轴的大小

我不知道该怎么做。

您可能认为可以执行以下操作:

xAxis.setMinWidth(Control.USE_PREF_SIZE);
xAxis.setPrefWidth(800);
xAxis.setMaxWidth(Control.USE_PREF_SIZE);

但是当轴嵌入到图表中时,这在 Java 8 中不起作用。这是因为 XYChart 布局例程在布局图表内容时忽略其轴的首选尺寸、最小尺寸和最大尺寸。

这可能是一个错误,因此您可能需要将其记录在 https://javafx-jira.kenai.com .

关于javafx - 修复 X ​​和 Y 轴宽度,JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com