2015-08-25 29 views
1

下面的代碼是一個簡單的折線圖,其中yAxis刻度標籤的字符長度/寬度較寬。默認放置的yAxis標籤放置得太靠近yAxis,這意味着文本與刻度標記衝突。是否可以通過增加標籤和軸之間的距離來避免這種情況?JavaFX - 如何定位軸標籤以避免與刻度標記衝突

enter image description here

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

public class Example extends Application { 

    @Override 
    public void start(Stage stage) { 
     final NumberAxis xAxis = new NumberAxis(0, 10, 2); 
     final NumberAxis yAxis = new NumberAxis(1.3378, 1.3390, 0.0001); 
     xAxis.setLabel("xAxis"); 
     yAxis.setLabel("yAxis"); 
     yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis){ 
      @Override public String toString(Number object){ 
       return String.format("%1.4f", object); } 
     }); 

     final LineChart<Number, Number> lineChart = new LineChart<Number, Number>(xAxis, yAxis); 
     XYChart.Series series = new XYChart.Series(); 

     final XYChart.Data d1 = new XYChart.Data(0.0,1.3379); 
     final XYChart.Data d2 = new XYChart.Data(2.0,1.3387); 
     final XYChart.Data d3 = new XYChart.Data(2.5,1.3385); 
     final XYChart.Data d4 = new XYChart.Data(3.5,1.3387); 
     final XYChart.Data d5 = new XYChart.Data(8.0,1.3378); 
     final XYChart.Data d6 = new XYChart.Data(9.5,1.3388); 

     series.getData().addAll(d1, d2, d3, d4, d5, d6); 
     lineChart.getData().add(series); 
     lineChart.setLegendVisible(false); 

     final Scene scene = new Scene(lineChart, 400, 300); 
     stage.setScene(scene); 
     stage.show(); 
    } 


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

回答

1

是可能的定位軸的標籤。

對於實施例的標籤10的像素移動到左側,只需使用:

lineChart.getYAxis() 
     .lookup(".axis-label") 
     .setStyle("-fx-label-padding: -10 0 0 0;"); 
2

我不認爲這是可能的搬遷「Y軸」標籤,或增加的差距,但您可能需要使用以下解決方法,以避免文本conficts:

lineChart.getYAxis().setTickLabelRotation(-90); 

,你會得到如下圖: enter image description here