前提・実現したいこと
プロパティを扱おうとしたのですが、型が不一致です。とでました。
どこが違うのか教えていただきたいです。
発生している問題・エラーメッセージ
エラーメッセージ
型の不一致: SimpleStringProperty から StringProperty には変換できません
該当のソースコード
private StringProperty key = new SimpleStringProperty();
補足情報(FW/ツールのバージョンなど)
【SampleController.java】
package application;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
import com.mysql.cj.conf.StringProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
public class SampleController {
@FXML private ResourceBundle resources; @FXML private URL location; @FXML private TableView<dataClass> tableview; @FXML private TableColumn<dataClass, String> keyColumn; /*@FXML private TableColumn<?, ?> nameColumn; @FXML private TableColumn<?, ?> priceColumn;*/ @FXML void initialize() { assert tableview != null : "fx:id=\"tableview\" was not injected: check your FXML file 'Sample.fxml'."; assert keyColumn != null : "fx:id=\"keyColumn\" was not injected: check your FXML file 'Sample.fxml'."; //assert nameColumn != null : "fx:id=\"nameColumn\" was not injected: check your FXML file 'Sample.fxml'."; //assert priceColumn != null : "fx:id=\"priceColumn\" was not injected: check your FXML file 'Sample.fxml'."; keyColumn.setCellValueFactory(new PropertyValueFactory<dataClass, String>("key")); tableview.getItems().setAll(DB()); } public class dataClass { private StringProperty key = new SimpleStringProperty(); public StringProperty keyProperty() { return key; } public final String getkey() { return key.get(); } public final void setkey(String val) { key.set(val); } } private ObservableList<dataClass> DB() { Connection connection = null; PreparedStatement pre_statement = null; ResultSet rs = null; ObservableList<dataClass> data = FXCollections.observableArrayList(); try { //MySQLの接続 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/orderdb?characterEncoding=UTF-8&serverTimezone=JST", "", ""); //接続しているデータベース名を表示 System.out.println("MySQLに接続できました。"); System.out.println("getCatalog:" + connection.getCatalog() + "\r\n"); pre_statement = connection.prepareStatement("select * from goods limit 10"); rs = pre_statement.executeQuery(); while(rs.next()) { //1はカラム番号 String key = rs.getString(1); dataClass row = new dataClass(); row.setkey(key); data.add(row); } // データベースとの接続に失敗した場合 }catch(SQLException ex) { ex.printStackTrace(); System.err.println("MySQLに接続できませんでした。"); }finally { closeSQL(connection, pre_statement, rs); } return data; } static void closeSQL(Connection connection, PreparedStatement pre_statement, ResultSet result_set) { try { // データベースとの接続を解除 if (connection != null) { connection.close(); } if (pre_statement != null) { pre_statement.close(); } if (result_set != null) { result_set.close(); } }catch(SQLException ex) { System.err.println("Error closeSql Func"); //どこで、エラーが起こっているかが分かる ex.printStackTrace(); } }
}
回答1件
あなたの回答
tips
プレビュー