質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1676閲覧

データベースのデータをtableviewに代入したいのですが、うまくできません。どなたか助けていただけませんか?よろしくお願いいたします。

L4zy

総合スコア18

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/08/16 11:23

編集2022/01/12 10:55

【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 javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableView;

public class SampleController {

@FXML private ResourceBundle resources; @FXML private URL location; @FXML private TableView<?> tableview; @FXML void initialize() { assert tableview != null : "fx:id=\"tableview\" was not injected: check your FXML file 'Sample.fxml'."; DB(); } public static void DB() { Connection connection = null; PreparedStatement pre_statement = null; ResultSet result_set = null; ObservableList<ObservableList> data = FXCollections.observableArrayList(); try { //MySQLの接続 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/orderdb?characterEncoding=UTF-8&serverTimezone=JST", "root", "パスワード"); //接続しているデータベース名を表示 System.out.println("MySQLに接続できました。"); System.out.println("getCatalog:" + connection.getCatalog() + "\r\n"); pre_statement = connection.prepareStatement("select * from goods limit 10"); result_set = pre_statement.executeQuery(); while(result_set.next()) { data.clear(); //一行ずつ(カラム) ObservableList<String> row = FXCollections.observableArrayList(); for(int i = 1; i <= result_set.getMetaData().getColumnCount(); i++) { //iはカラム番号 row.add(result_set.getString(i)); } data.add(row); System.out.println(data); ←ここでは正確にが出力されす。 } //テーブルビューに値代入 tableview.setItems(data); ←ここでエラーが出ます // データベースとの接続に失敗した場合 }catch(SQLException ex) { ex.printStackTrace(); System.err.println("MySQLに接続できませんでした。"); }finally { closeSQL(connection, pre_statement, result_set); } } 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(); } }

}

【Main.java】
package application;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root,600,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) { launch(args); }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2019/08/17 01:04

markdown 程度を理解ができないと、この仕事は辛いですよ。
L4zy

2019/08/17 01:27

分らないのなら大丈夫です。
guest

回答1

0

データは取得できているそうなので、TableViewへの設定が問題なのかなと思います。
error内容も記載していただけるとよいと思います。

@FXML private TableView<?> tableview;

TableViewの型が指定されていないため、型を指定してください。
(goodsテーブルのカラム名のクラスを作るとよいと思います。)

tableview.setItems(data);

ここはdataではなくfor文の外で

setItems(ObservableList<goodsのクラス>)

とするとよいかなと思います。
また、TableViewはあるのにTableColumnがないのでTableColumnを作る必要があります。
またTableColumnへのデータのバインドもしないと表示できないので。

一度、調べて再度学習してみるといいと思います。
http://www.02.246.ne.jp/~torutk/javafx2/table/tableview-memo.html

投稿2019/08/20 23:31

ababa_Sigrun

総合スコア279

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問