2017-02-20 2 views
0

안녕하세요 지금 Intellji에 내가 "프로그램 실행"을 선택한 다음 창이 화면에 표시됩니다를 클릭 자바 FX 장면 빌더 디스플레이 변수는

자바 FX

에서 시작 방법에 MySQL의에서 GetData의 그런 짓을하려고합니다.

"데이터 가져 오기"버튼 하나가 있으며 클릭 한 후 데이터를 가져 와서 레이블에 표시합니다.

우리 프로그램의 "Run program"과 JavaFX show window를 클릭하면 MySQL의이 데이터가 자동으로 레이블에 표시되는 몇 가지 해결책이 있습니까?

public void start에서 getData (MySQL에서 데이터 가져 오기)를 실행하는 방법을 의미합니까?

"label labelek; 클릭 후 버튼 "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); 
     } 
    } 
} 

답변

1

DBConnect 클래스에서 Label labelek를 제거합니다. 별개의 SampleController 클래스를 만들고 메서드에서 DBConnect connect = new DBConnect() 메서드를 호출하고 Label labelek에 데이터를 연결하십시오.

SampleController 내가 난 단지 IDEA 에서 볼 수의 OnAction (SceneBuilder) GetData의와 버튼을 클릭하면

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

는 IDEA는 GetData의 공공 문자열에 추가 할 저를 묻는 메시지가, 내가 SimpleController 작성 후를 만들 답변을 주셔서 감사합니다 "getData가 없으면 아무 것도 반환하지 않기 때문입니다. 프로그램을 시작하면 버튼이 있지만 MySQL의 자동로드 데이터가없는 JavaFX 창을 볼 수 있습니다. 버튼 루프 getData 메쏘드 : – TomaszBag

+0

'getData()'에서''labelek.setText ("온도는"+ temperathure ")를'return TemperaturaPow; '로 바꾼다 – MBec

+0

대신에'return TemperaturaPow()'를 추가한다. labelek.setText)'IDEA는'public string getData() {}가'---'return''return = getData''를 추가하기 때문에 IDEA는 여전히 초보자들에게 항상 바람을 불고 있습니다. – TomaszBag

0

"기록이 데이터베이스에서"TemperaturaPow없이 :/

컨트롤러 클래스 장면 작성기입니다 : sample.DBConnect

정말 어렵습니다; > "GetData의를 반환 -

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

새 클래스 컨트롤러를 만들고이 클래스에서 public void DBData()를 만듭니다. MySQL에 연결하여 데이터를 가져 오는 모든 코드를 삽입합니다. 그럼'void initialize()'에서이 메소드를 실행하면 모든 것이 작동합니다 :) – TomaszBag