2017-01-24 12 views
0

2つのパネルからなるJavaFX GridPaneを宣言したい場合があります。左側にはプッシュボタンがあります。プッシュボタンをクリックすると、右側のパネルにLineChartが表示されます。コーディングは、おそらく次のようになります。JavaFX GUIにJavaFX LineChartを含めることができます

public class FormLineChart extends Application { 

    @Override 
    public void start(Stage stage) { 
     stage.setTitle("A Title"); 
     //Create the grid for defining the GUI 
     GridPane grid = new GridPane(); 
     // add gui objects to grid 
     ... 
     //Create the chart 
     final LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis); 
     ... 
     // Create the series and display the lineChart 
     lineChart.getData().add(series); 
     stage.setScene(scene); 

     Scene scene = new Scene(grid, 427, 319); 
     //How do we add 'lineChart' to scene as well as keeping 'grid'? 
     stage.setScene(scene); 
     stage.show(); 
    } 

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

具体的には、一つのシーンで「グリッド」と「折れ線グラフ」を組み合わせることが可能ですか?現時点では、onはシーンをグリッドに強制的に設定するため、GUIのみが表示されます。

+0

線グラフとグリッドを(別の種類の)別のペインに配置し、そのペインをシーンのルートにします。または、ボタンを押したときにグリッドの適切な場所に線グラフを追加します。 –

+0

実際には 'grid.add(lineChart、0,1);'と同じくらい簡単です。単に 'lineChart'をグリッドに直接追加することができます – Enigo

答えて

0

@James_Dは、これを達成するには別のコンテナが必要だと言った。 Paneには、GUIコントロールと別のPaneを含めることができます。

以下の例では、ウィンドウを左右に分割するBorderPaneの中にいくつかのボタンを入れてGridPaneを入れます。

@Override 
public void start(Stage stage) { 
    stage.setTitle("A Title"); 

    // Root element 
    BorderPane root = new BorderPane(); 

    // GridPane 
    GridPane grid = new GridPane(); 
    grid.setPadding(new Insets(10,10,10,10)); 
    grid.setVgap(10); 
    grid.add(new Button("Button 1"), 0, 0); 
    grid.add(new Button("Button 2"), 0, 1); 
    grid.add(new Button("Button 3"), 0, 2); 

    // Chart 
    final NumberAxis xAxis = new NumberAxis(); 
    final NumberAxis yAxis = new NumberAxis(); 
    final LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis); 
    XYChart.Series series = new XYChart.Series(); 
    series.setName("Chart"); 
    series.getData().add(new XYChart.Data(1, 5)); 
    series.getData().add(new XYChart.Data(2, 10)); 
    lineChart.getData().add(series); 

    root.setLeft(grid); 
    root.setRight(lineChart); 

    Scene scene = new Scene(root, 600, 300); 

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

ありがとうございます。よく働く。私は、私が必要としていたことを達成するためにどのように 'root'を使うことができるのか、あいまいでした。 – Rusty

関連する問題