私はjavaFXを学び始めており、データベースからデータをテーブルに取り込む必要があります。多くのコードをオンラインで読みましたが、探しているものが見つかりませんでした。 this と読みましたが、その最後の関数を実装する方法がわかりません。私はそれを行うためにいくつかの他のコードを読みましたが、これまでのところこれは私のコードの一部です:
@FXML private TableView<User> table;
@FXML private TableColumn<User, String> nameCol;
@FXML private TableColumn<User, String> emailCol;
private ObservableList<User> data;
public void initialize(URL location, ResourceBundle resources) {
nameCol.setCellValueFactory(new PropertyValueFactory(“name”));
emailCol.setCellValueFactory(new PropertyValueFactory(“email”));
buildData();
}
public void buildData() {
Connection connect = new Connection();
Statement st = connect.Connect();
data = FXCollections.observableArrayList();
try {
ResultSet rs = st.executeQuery("SELECT * FROM USER");
while (rs.next()) {
ObservableList<User> row = FXCollections.observableArrayList();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
row.add(rs.getString(i));
System.out.println(row);
}
data.add(pol);
}
tabla.setItems(data);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
あなたが私を助けてくれることを願っています
これはあなたを助けると確信しています:
public class DBClass{
public Connection getConnection() throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://192.168.0.1:3306/dbname","mysqluser","mysqluserpwd");
}
}
コントローラクラスで次の操作を行います。
@FXML
void initialize(){
assert tableview != null : "fx:id=\"tableview\" was not injected: check your FXML file 'UserMaster.fxml'.";
colUserName.setCellValueFactory(
new PropertyValueFactory<Usermaster,String>("userName"));
colPassword.setCellValueFactory(
new PropertyValueFactory<Usermaster,String>("userPassword"));
colUserType.setCellValueFactory(
new PropertyValueFactory<Usermaster,String>("userType"));
colPhoto.setCellValueFactory(
new PropertyValueFactory<Object,ImageView>("userPhoto"));
objDbClass = new DBClass();
try{
con = objDbClass.getConnection();
buildData();
}
catch(ClassNotFoundException ce){
logger.info(ce.toString());
}
catch(SQLException ce){
logger.info(ce.toString());
}
}
private ObservableList<Usermaster> data;
public void buildData(){
data = FXCollections.observableArrayList();
try{
String SQL = "Select * from usermaster Order By UserName";
ResultSet rs = con.createStatement().executeQuery(SQL);
while(rs.next()){
Usermaster cm = new Usermaster();
cm.userId.set(rs.getInt("UserId"));
Image img = new Image("tailoring/UserPhoto/User"+cm.getUserId().toString()+".jpg");
ImageView mv = new ImageView();
mv.setImage(img);
mv.setFitWidth(70);
mv.setFitHeight(80);
cm.userPhoto.set(mv);
cm.userName.set(rs.getString("UserName"));
cm.userPassword.set(rs.getString("UserPassword"));
cm.userType.set(rs.getString("UserType"));
data.add(cm);
}
tableview.setItems(data);
}
catch(Exception e){
e.printStackTrace();
System.out.println("Error on Building Data");
}
}
そして、TableJを使用して操作したいすべてのエンティティ(テーブル)の個別のJavaファイル
public class Usermaster{
public SimpleIntegerProperty userId = new SimpleIntegerProperty();
public ObjectProperty userPhoto = new SimpleObjectProperty();
public SimpleStringProperty userName = new SimpleStringProperty();
public SimpleStringProperty userPassword = new SimpleStringProperty();
public SimpleStringProperty userType = new SimpleStringProperty();
public SimpleStringProperty encPass = new SimpleStringProperty();
public SimpleStringProperty updt = new SimpleStringProperty();
public SimpleStringProperty uptm = new SimpleStringProperty();
public Integer getUserId() {
return userId.get();
}
public Object getUserPhoto() {
return userPhoto.get();
}
public String getUserName() {
return userName.get();
}
public String getUserPassword() {
return userPassword.get();
}
public String getUserType() {
return userType.get();
}
public String getEncPass() {
return encPass.get();
}
public String getUpdt() {
return updt.get();
}
public String getUptm() {
return uptm.get();
}
}
このプログラムを完全に動作するようにテストしました。