2016-04-15 135 views
0

我正在做一些有关城市的信息应用程序,我需要使用数据库,我已经完成了数据库的设置并准备好了,并且大部分代码也需要使用;唯一的部分是将我需要的数据从我的SQL服务器提取到fxml中的BarChart。任何人都可以给我一个例子或什么?如何从数据库中获取数据并将其放入fxml中?

我FXML:

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controllers.ControllerZW"> 
    <BarChart fx:id="graph" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 
     <xAxis> 
      <CategoryAxis side="BOTTOM" /> 
     </xAxis> 
     <yAxis> 
      <NumberAxis side="LEFT" /> 
     </yAxis> 
    </BarChart> 
</Pane> 

我控制器大气压:

package Controllers; 

public class ControllerZW implements Interface.Ibacktomenu { 

    @Override 
    public void backtomenu() { 
     try { 
      Main.mainStage.setScene(
        new Scene(FXMLLoader.load(getClass().getResource("../scenes/MainMenu.fxml"))) 
      ); 
     } catch (IOException e) { 
      System.out.println("Probably couldnt find resource file"); 
      e.printStackTrace(); 
     } 
    } 
} 

回答

0

你想呈现数据表格数据库为XML格式?

我认为一些模板引擎可能会帮助你,比如Freemarker。

你可以使用的Freemarker作为视图的Spring MVC,请参阅http://viralpatel.net/blogs/spring-mvc-freemarker-ftl-example/

+0

创建一个用于数据的FXML文件比需要的更复杂。所有必须完成的工作就是将数据库中的数据转换为BarChart的数据(不需要xml格式btw ...)并将其分配给图表... – fabian

0

使用Task从数据库和Passing Parameters JavaFX FXML描述的任何方法获取数据到数据到控制器,例如

@Override 
public void start(Stage primaryStage) { 
    Task<Pane> dataLoader = new Task<Pane>() { 

     @Override 
     protected Pane call() throws Exception { 
      // create data 
      XYChart.Series<String, Double> rain = new XYChart.Series<>(); 
      rain.setName("rain"); 

      Month[] months = Month.values(); 

      for (Month month : months) { 
       // simulates slow database connection; just adding some random values here 
       Thread.sleep(200); 
       rain.getData().add(new XYChart.Data<>(month.toString(), Math.random() * 100)); 
      } 
      // load chart (replace BarChartLoad.class.getResource("chart.fxml") with your own URL) 
      FXMLLoader loader = new FXMLLoader(BarChartLoad.class.getResource("chart.fxml")); 
      Pane pane = loader.load(); 
      // pass data to controller 
      loader.<ControllerZW>getController().setData(FXCollections.observableArrayList(rain)); 
      return pane; 
     } 

    }; 

    // placeholder 
    Pane root = new Pane(); 
    Scene scene = new Scene(root, 1000, 600); 

    // set new scene root on successfull completion of the task 
    dataLoader.setOnSucceeded(evt -> scene.setRoot(dataLoader.getValue())); 

    // TODO: handle task failure 

    new Thread(dataLoader).start(); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
public class ControllerZW implements Interface.Ibacktomenu { 

    @FXML 
    private BarChart<String, Double> graph; 

    public void setData(ObservableList<XYChart.Series<String, Double>> data) { 
     graph.setData(data); 
    } 
    ... 
相关问题