フレームがロードされたときにJTableにレコードを表示しようとしていますが、レコードが表示されませんでした。これは私がこれまでに試したことです:public void load(){
try {
Connection con1;
PreparedStatement insert;
Class.forName("com.mysql.jdbc.Driver");
con1 = DriverManager.getConnection("jdbc:mysql://localhost/javapos","root","");
insert = con1.prepareStatement("SELECT name,status FROM category");
ResultSet Rs = insert.executeQuery();
while(Rs.next()){
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
String name = Rs.getString("name");
String status = Rs.getString("status");
model.addRow(new Object[]{name,status });
}
jTable1.setModel(model);
} catch (Exception e) {
System.out.println("Failed " + e);
}
}
あなたのコードはコンパイルされるべきではないが、そう思われるので、私の推測です(JTable
結局、あなたは空を探しています)。
DefaultTableModel model
スニペットの前にaを宣言しました。
どうすればそれを知ることができますか?提案したコードでは、スコープ内(ループ外)に存在しないため、jTable1.setModel(model);
コンパイルできませんmodel
。
while(Rs.next()){
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
String name = Rs.getString("name");
String status = Rs.getString("status");
model.addRow(new Object[]{name,status });
}
jTable1.setModel(model);
コンパイルエラー:
「モデル」を変数に解決できません。
以前どこかで宣言したと思います。ループでは、元のスコープを非表示にして、別のスコープで新しいスコープを宣言します。この最後のmodel
例では、行を挿入します。
ただし、ループの後、にmodel
行がない最初のセットを設定しますjtable
。
何が起こっているかの基本的な例です。ここでは、両方のインスタンスの名前を変更しますが、コード内でmodel1
、model2
という名前を付けmodel
ます。
model1 = new Model();
while(rs.next()){
model2 = new Model();
model2.addRow(...);
}
table.setModel(model1);
クイック修正、ループ内の宣言を削除します。
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
while(Rs.next()){
//DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
String name = Rs.getString("name");
String status = Rs.getString("status");
model.addRow(new Object[]{name,status });
}
jtable1.setModel(model);
1つ宣言する TableModel
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加