当前位置: 首页 > 知识库问答 >
问题:

JavaFX场景生成器在启动程序时显示变量

王长卿
2023-03-14

你好,我尝试在JavaFX中的start方法上从MySQL获取数据之类的事情

现在在智能我点击“运行程序”,然后窗口出现在屏幕上。

我有一个按钮“获取数据”,在我点击它之后,我从Mysql中获取数据并显示在标签中。

这是一种解决方案,当我们单击“运行程序”和JavaFX显示程序窗口时,来自MySQL的数据将自动显示在标签中?

我的意思是如何运行方法getData(从MySQL获取数据)在公共空启动?

我显示变量“Label labelek;”单击按钮后“Label labelek;”在getData方法中

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 600, 275));

        DBConnect connect = new DBConnect();    
        primaryStage.show();
    }    

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

数据库连接

package sample;    
import javafx.fxml.FXML;
import javafx.scene.control.Label;    
import java.sql.*;

public class DBConnect {

    private Connection con;
    private Statement st;
    private ResultSet rs;
    @FXML
    public Label labelek;

    //utworzenie konstruktora
    public DBConnect(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://xxx","xxx",
                    "xxx");
            st = con.createStatement();

        } catch (Exception ex){
            System.out.println("Error: " + ex);
        }
    }
    public void getData(){
        try {
            String query = "select * from x order by id desc limit 1";
            rs = st.executeQuery(query);
            System.out.println("Records from DataBase");
            while(rs.next()){                   
                String TemperaturaPow = rs.getString("TemperaturaPow");

         labelek.setText("Temperature is " + temperathure);

            }
        } catch (Exception ex){
            System.out.println("Error: " + ex);
        }
    }
 }

共有2个答案

傅志文
2023-03-14

在我单击带有onAction(SceneBuilder)getData的按钮后,我只能在IDEA中看到“来自DataBase的记录”,而不会看到TematuraPow:/

场景生成器中的控制器类是:sample.DBConnect

这真的太难了;P?

public String getData(){
    try {
        String query = "select * from danet order by id desc limit 1";
        rs = st.executeQuery(query);
        System.out.println("Records from DataBase");
        while(rs.next()){
            String DataCzas = rs.getString("dataczas");
            String TemperaturaPow = rs.getString("TemperaturaPow");
            String WilgotnoscPow = rs.getString("WilgotnoscPow");
            String Cisnienie = rs.getString("baro");
            String dewPoint = rs.getString("dewPoint");
            String heatIndexC = rs.getString("heatIndexc");
            String comment = rs.getString("comment");
            return TemperaturaPow;
        }
    } catch (Exception ex){
        System.out.println("Error: " + ex);
    }


    return null;
}

公共类SampleController实现Initializable {

@FXML
private Label labelek;
@FXML
private Button getDataButton;

/**
 * Initializes the controller class.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
    DBConnect connect = new DBConnect();
    String data = connect.getData();
    labelek.setText(data);
}

打印屏幕

呼延辰龙
2023-03-14

DBConnect类中删除Label labelek。在initize()方法调用DBConnect connect=new DBConnect()中创建单独的SampleController类并将您的数据附加到Label labelek

采样控制器

public class SampleController implements Initializable {

    @FXML
    private Label labelek;
    @FXML
    private Button getDataButton;

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        DBConnect connect = new DBConnect(); 
        String data = connect.getData();
        labelek.setText(data);
    }
}
 类似资料:
  • 关于如何自定义这样的值,有什么建议或想法吗?

  • 我希望此图表显示在场景生成器上。怎么可能。。??

  • 每当我试图从Intellij用scenebuilder打开一个fxml文件时,它会给我以下信息: (我已经从设置放入了场景构建器的路径)

  • 我对屏幕生成器有一些问题 对于某些fxml,它会在加载后发生creash。我尝试了很多次运行它,但它阻塞了,我必须终止这个进程。 fxml正常,内容在我的应用程序中正确显示。下面是导致场景生成器崩溃的FXML示例。

  • 我运行wmii在linux和在想我自己,如果你可以运行javafx场景生成器从终端?

  • 在我第一次使用JavaFX时,场景被错误地显示,我没有找到原因。例如,在E(fx)clipse页面的第一个基本教程中提出了以下代码: 它应该显示文本“Hello FX”,但显示以下内容: 我的Java版本是适用于Windows 64(Win 7)的8u65。