【发布时间】:2015-10-06 20:21:30
【问题描述】:
我有一个用户可调整大小的图表。当图表变小时,CategoryAxis 会旋转,您将无法再看到大多数类别标签。这是一个显示问题的 gif:
有什么方法可以阻止标签旋转?
我知道我可以向旋转属性添加一个侦听器,如果旋转发生变化,我可以将其旋转回 0。但是,当我这样做时,它不会阻止间距调整,因此标签会被切断(您只会看到标签的最后几个字符)。
这里是包含的 gif 的代码,你会在调整窗口大小时看到问题:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;
public class HorizontalBarExample extends Application {
@Override
public void start(Stage stage) {
NumberAxis xAxis = new NumberAxis();
CategoryAxis yAxis = new CategoryAxis();
BarChart<Number, String> bc = new BarChart<Number, String>(xAxis, yAxis);
bc.setBarGap(0d);
bc.setCategoryGap(0);
xAxis.setTickLabelRotation(90);
yAxis.tickLabelRotationProperty().set(0d);
XYChart.Series<Number, String> series1 = new XYChart.Series<>();
series1.setName("example");
for (int i = 0; i < 10; i++)
series1.getData().add(new XYChart.Data<Number, String>(Math.random() * 5000, "long data label number" + i));
bc.getData().add(series1);
Scene scene = new Scene(bc, 800, 600);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】:
-
我想说,这是一个错误:如果空间变小以水平显示所有标签,无论类别轴应该做什么,旋转都不是可行的选项之一(每 n 次可能- 或不 - 是或不显示任何内容,直到鼠标悬停在类别上,然后仅显示该类别)