首页 文章

JavaFX场景构建器在启动程序上显示变量

提问于
浏览
0

您好我尝试在JavaFX中的start方法上执行类似于MySQL的getData

现在在Intellji中单击“运行程序”,然后窗口出现在屏幕上 .

我有一个按钮“获取数据”,在我点击它之后,我从Mysql获取数据以在Label中显示它 .

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

我的意思是如何在public void start中运行方法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 回答

  • 1

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

    SampleController

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

    单击按钮与onAction(SceneBuilder)getData后,我只能在没有TemperaturaPow的IDEA“数据库记录”中看到:/

    Scene Builder中的控制器类是: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);
    }
    

    PrintScreen

相关问题