如何使用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();
}
}
当我调整窗口大小时,我希望网格(标记为红色的样本)不会缩放。目前,当调整窗口大小时网格会调整大小,如下所示
我无法使用minWidth和maxWidth API
实现我需要的功能答案 0 :(得分:2)
防止调整图表大小
您可以通过设置首选,最小和最大尺寸来阻止图表调整大小:
lineChart.setMinSize(Control.USE_PREF_SIZE, Control.USE_PREF_SIZE);
lineChart.setPrefSize(800, 600);
lineChart.setMaxSize(Control.USE_PREF_SIZE, Control.USE_PREF_SIZE);
唯一的例外是当图表是场景的根时,在这种情况下,您应该将图表包装在窗格或组中,以防止它被调整大小以适应场景(因为JavaFX中的布局怪癖) 8渲染逻辑)。
另请注意,包装任何可调整大小的节点,Group会将节点(不包括转换和效果)调整为其首选尺寸,并且永远不会更改它们。
不幸的是,设置图形的首选大小与直接设置图形轴的首选大小完全相同,因为它使整个图表的大小,而不是特定的轴线,这可能是你正在寻找的问题。
防止调整图表轴的大小
我不知道该怎么做。
您可能认为可以执行以下操作:
xAxis.setMinWidth(Control.USE_PREF_SIZE);
xAxis.setPrefWidth(800);
xAxis.setMaxWidth(Control.USE_PREF_SIZE);
但是当轴嵌入图表中时,这在Java 8中不起作用。这是因为XYChart布局例程在布置图表内容时忽略了它的轴的首选,最小和最大尺寸。
这可能是一个错误,因此您可能希望在https://javafx-jira.kenai.com处将其记录下来。