2017-02-20 4 views
0

Привет я пытаюсь сделать что-то вроде GetData с MySQL на метод запуска в JavaFXJavaFX Scene медийных переменной при запуске программы

Сейчас в Intellji я нажимаю «Запустить программу», а затем окно появится на экране.

У меня есть одна кнопка «Получить данные», и после того, как я нажал на нее, я получаю данные от Mysql, чтобы показать ее в Label.

Это какое-то решение, когда мы нажимаем «Запустить программу» и окно отображения JavaFX нашей программы, и эти данные из MySQL будут автоматически отображаться на этикетке?

Я имею в виду, как запустить метод getData (получить данные из MySQL) в public void start?

Я отображаю переменную «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); 
     } 
    } 
} 

ответ

1

Label labelek Удалить из DBConnect класса. Создайте отдельный класс SampleController, в initalize() метод invoke 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

Спасибо за ответ я создаю SimpleController и после его создания, IDEA побудила меня добавить к публичной строке GetData -> «вернуться GetData «потому что без этого getData ничего не возвращает. Когда мы запускаем программу, мы можем видеть окно JavaFX с Button, но без автоматической загрузки данных из MySQL: /. Button loops getData method :) – TomaszBag

+0

Да из 'getData()' replace 'labelek.setText (« Температура есть »+ temperathure);' с 'return TemperaturaPow;' – MBec

+0

Я добавляю 'return TemperaturaPow()' вместо 'labelek.setText () ', но IDEA все еще хочет' return' после 'public String getData() {} return <---' поэтому я добавляю 'return = getData' hmm для новичков, всегда дует в глаза :) – TomaszBag

0

После нажатия кнопки с OnAction (SceneBuilder) GetData я могу видеть только в IDEA "Записи из базы данных" без TemperaturaPow:/

контроллер класса в 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

+0

Я создал новый 'class Controller' и в этом классе создаю' public void DBData() 'в этом методе. Я вставляю весь код для подключения к MySQL и получения данных из него. Затем я запускаю этот метод в 'void initialize()' и все работает :) – TomaszBag