如何在javafx中将字符串转换为标签?

时间:2016-03-24 17:28:13

标签: java string javafx label

在我的项目中,出于某种目的,有一堆标签。由于我可以使用拖动在堆栈窗口上移动它们,我希望能够在我的应用程序中保存它们的新位置。所以我在考虑数据库,包括X和Y位置的列,标签名称及其文本。

但是,由于我想使用相当多的标签,我不想一个接一个地从数据库中加载标签,所以我使用了这个:

private void button_load(ActionEvent event) {
    try{
     String host = "jdbc:sqlite:C://app/app.sqlite";
         Connection con = DriverManager.getConnection(host);
         PreparedStatement pst = null;
         String SQL = "select * from labels";
         pst=con.prepareStatement(SQL);
         ResultSet rs=pst.executeQuery();

         while(rs.next()){

         String name=rs.getString("Name");
         Double Y=rs.getDouble("Y");
         Double X=rs.getDouble("X");
         String Text=rs.getString("Text");

         name.setLayoutX(X);
         name.setLayoutX(Y);
         name.setText(Text);

        }}

         catch (SQLException ex)        
 {      Logger.getLogger(app.class.getName()).log(Level.SEVERE, null, ex);}}

明显的问题是,我不允许使用字符串的内容(在本例中为“name”)以进一步用作标签("string cannot be converted to label")。我一直在寻找一些解决方案,但没有找到任何解决方案。

所以我想问一下,有没有办法,如何将字符串转换为标签或任何其他有助于在这种情况下的方式?

由于

1 个答案:

答案 0 :(得分:0)

您需要为每条记录创建一个新的Label并将其添加到您的窗格中:

private Pane pane = ... // Or group or some other form of a container

private void button_load(ActionEvent event) {
    try{
         String host = "jdbc:sqlite:C://app/app.sqlite";
         Connection con = DriverManager.getConnection(host);
         PreparedStatement pst = null;
         String SQL = "select * from labels";
         pst=con.prepareStatement(SQL);
         ResultSet rs=pst.executeQuery();

         while(rs.next()){
             Label label = new Label();

             String name=rs.getString("Name");
             Double Y=rs.getDouble("Y");
             Double X=rs.getDouble("X");
             String Text=rs.getString("Text");

             label.setLayoutX(X);
             label.setLayoutX(Y);
             label.setText(Text);
             label.setId(name);
             pane.getChildren().add(label);

        }
       } catch (SQLException ex){      
           Logger.getLogger(app.class.getName()).log(Level.SEVERE, null, ex);
       }
}

我不确定您在名称下存储的内容,我的猜测是它可能是节点的id