2

シンプルな XY LineChart を使用して、css を使用せずに、グリッドと線のストローク (幅)、スタイル (点線、破線など)、および色を RGB と背景色として設定したいと考えています。

これは可能ですか?もしそうなら、どのように?適切な方法が見つかりません。

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class XyChart extends Application {

@Override
public void start(Stage stage) {
   stage.setTitle("Line plot");

   final CategoryAxis xAxis = new CategoryAxis();
   final NumberAxis yAxis = new NumberAxis(1, 21,0.1);

   yAxis.setTickUnit(1);
   yAxis.setPrefWidth(35);
   yAxis.setMinorTickCount(10);

   yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis){
        @Override
    public String toString(Number object){
            String label;
            label = String.format("%7.2f", object.floatValue());
            return label;
    }
});
final LineChart<String, Number>lineChart = new LineChart<String, Number>(xAxis, yAxis);

   lineChart.setCreateSymbols(false);
   lineChart.setAlternativeRowFillVisible(false);
   lineChart.setLegendVisible(false);

   XYChart.Series series1 = new XYChart.Series();

    series1.getData().add(new XYChart.Data("Jan", 1));
    series1.getData().add(new XYChart.Data("Feb", 4));
    series1.getData().add(new XYChart.Data("Mar", 2.5));
    series1.getData().add(new XYChart.Data("Apr", 5));
    series1.getData().add(new XYChart.Data("May", 6));
    series1.getData().add(new XYChart.Data("Jun", 8));
    series1.getData().add(new XYChart.Data("Jul", 12));
    series1.getData().add(new XYChart.Data("Aug", 8));
    series1.getData().add(new XYChart.Data("Sep", 11));
    series1.getData().add(new XYChart.Data("Oct", 13));
    series1.getData().add(new XYChart.Data("Nov", 10));
    series1.getData().add(new XYChart.Data("Dec", 20));


    BorderPane pane = new BorderPane();
    pane.setCenter(lineChart);          
    Scene scene = new Scene(pane, 800, 600);
    lineChart.setAnimated(false);
    lineChart.getData().addAll(series1);       

    stage.setScene(scene);
    stage.show();
}

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

1 に答える 1

2

はい、あなたのケースはHow to dynamic line style in JavaFX 2.0 line chart?よりロジックが単純です。また、さらにいくつかの機能を求めています。重複としてマークすることは、同様の質問と回答を指す簡単な方法でした。

答えは同じだと思います(cssルックアップを使用)-JavaFX 2.2には..のようなAPIはありませんlineChart.setStroke

最終的には、css ルックアップを介してのみアクセスできるものの一部が、Java API を介して利用可能になる可能性があります。たとえば、リージョンのバックグラウンドの一部は JavaFX 8 の API であるため、参照を取得したら、API を介して変更できますが、それでも参照を取得する方法はまだないと思いますcss ルックアップのないチャート背景のようなもの、または考えられないほど見苦しい getChildren().get(idx) 呼び出しのシーケンスまたはチャート ソース コードへのハッキングのようなものです。これらのオプションの中で、ほとんどの場合、css ルックアップ アプローチが最も望ましいと思います。

JavaFX 2.2にはチャートのスタイル設定に使用されるデフォルトの cssファイルが付属しているため、実際には css ファイルを避けているわけではないことに注意してください。また、ダイナミック ライン スタイルの質問へのリンクされたサンプル ソリューションでは、ユーザー スタイルシートが提供されないことにも注意してください。すべてのユーザー スタイル設定はコードで行われます。

于 2013-01-03T12:09:22.317 に答える