如何顯示從MySQL恢復的表(使用ArrayList)並使用JTable將其顯示在Java Swing上。我認爲從MySQL恢復表已完成。我的問題是在JTable上顯示它。從休眠和Java的MySQL數據庫中恢復表Swing
任何幫助將不勝感激。
類Afficher.java
package com.hibernate.stock;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.Query;
import javax.swing.JTable;
import javax.swing.JTextArea;
public class Afficher extends JFrame {
private JPanel contentPane;
private JTable table;
ArrayList<Object[]> biens= new ArrayList<Object[]>();
/**
* Launch the application.
*/
private void fillTable(final JTable table, final List biens) {
final String columnNames[] = {"ID", "Nom", "Catégorie", "Quantité"};
final DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
table.setModel(tableModel);
for (final Object bien : biens) {
// Assuming each row in the biens list is a list of strings...
final List<Object> row = (List<Object>) bien;
tableModel.addRow(row.toArray());
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Afficher frame = new Afficher();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Afficher() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnAfficher = new JButton("Afficher");
btnAfficher.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
SessionFactory sf = cfg.buildSessionFactory();
Session s = sf.openSession();
Transaction tx = s.beginTransaction();
SQLQuery query=s.createSQLQuery("select * from TBiens");
biens = (ArrayList) query.list();
fillTable(table, biens);
s.flush();
tx.commit();
s.close();
}
});
btnAfficher.setBounds(166, 235, 117, 25);
contentPane.add(btnAfficher);
JTable table = new JTable();
fillTable(table, biens);
// I put the table in a scroll pane and had to make it bigger...
final JScrollPane tableScrollPane = new JScrollPane(table);
tableScrollPane.setBounds(224, 90, 400, 500);
contentPane.add(tableScrollPane);
}
}
聽起來像你有兩個問題:一個與從MySQL數據庫恢復表有關,另一個與使用Hibernate從數據庫獲取數據並使用Swing顯示有關?你能提供一些關於你正在嘗試做什麼以及到目前爲止嘗試過的更多細節嗎? – 2014-12-05 20:37:28
我編輯了我的問題。現在清楚了嗎?我應該添加任何細節嗎? – sarra 2014-12-05 20:49:30