2017-01-24 19 views
0

Я хотел бы объявить JavaFX GridPane из двух панелей, слева - с кнопкой. Когда нажимается кнопка, на правой панели отображается LineChart. Кодирование предположительно выглядеть следующим образом:Могу ли я включить JavaFX LineChart в GUI JavaFX

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); 
    } 
} 

В частности это можно совместить «сетку» и «Linechart» в одной сцене? На данный момент отображается только графический интерфейс, потому что он вынужден установить сцену в сетку.

+0

Поместите линейную диаграмму и сетку в другую панель (что-то вроде) и сделайте это поле корнем сцены. Или просто добавьте линейную диаграмму в соответствующее место в сетке при нажатии кнопки. –

+0

На самом деле это так просто, как 'grid.add (lineChart, 0,1);'. Вы можете просто добавить свой 'lineChart' непосредственно в сетку – Enigo

ответ

0

Как @James_D сказал, что вам просто нужен другой контейнер для достижения этого. A Pane может содержать элементы управления графическим интерфейсом, а также еще один Pane.

В приведенном ниже примере я помещал GridPane с несколькими кнопками внутри BorderPane, который делит окно на правую и левую части.

@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

Спасибо. Прекрасно работает. Я был нечетким о том, как «корень» можно использовать для достижения того, что мне нужно, теперь его ясности. – Rusty