在启动程序的JavaFX场景构建器中显示变量
你好,我尝试做的启动方法类似的getData从MySQL中的JavaFX在启动程序的JavaFX场景构建器中显示变量
现在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);
}
}
DBCONNECT
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);
}
}
}
DBConnect
从类中删除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);
}
}
后,我点击按键采用的OnAction(SceneBuilder)的getData我只能在IDEA 见 “史记从数据库” 无TemperaturaPow:/
控制器类的场景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);
}
我创建了新的'class Controller',并且在这个类中我创建了'public void DBData()',在这个方法中我插入了所有连接到MySQL的代码并从中获取数据。然后我在'void initialize()'中运行这个方法,一切正常:) – TomaszBag
感谢您的回答,我创建SimpleController后创建它,IDEA促使我加入到公共字符串的getData - >“返回的getData “因为没有它,getData不会返回任何东西。当我们启动程序时,我们可以看到带有Button的JavaFX窗口,但没有自动从MySQL加载数据:/。按钮循环getData方法:) – TomaszBag
是从'getData()'替换'labelek.setText(“Temperature is”+ temperathure);''with'return TemperaturaPow;' – MBec
我添加'return TemperaturaPow()'而不是'labelek.setText )''但是IDEA仍然希望在'public String getData(){} return TomaszBag