所以我有这段代码:
public class Welcome extends JFrame {
private JPanel contentPane;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Welcome frame = new Welcome();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Welcome() {
setAlwaysOnTop(true);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 1024, 768);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
ScrollPane scrollPane = new ScrollPane();
scrollPane.setScrollPosition(new Point(0, 0));
scrollPane.setBounds(10, 10, 998, 719);
contentPane.add(scrollPane);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"First Name", "Last Name", "Cellphone"
}
));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setFillsViewportHeight(true);
table.setBounds(10, 10, 998, 718);
contentPane.add(table);
}
}
我要做的是用数据库中的数据填充jtable,但我不知道如何。我正在考虑在initialize方法之外使用一个方法,并在那里创建一个多维数组,供jTable引用。我的目标是这行代码:
new Object[][] {
}
我怎样才能创建一个多维的Object数组并用数据库中的数据填充它? gui是使用eclipse窗口构建器完成的。
谢谢, 约什
答案 0 :(得分:1)
有两种常见的方法可以做到这一点,如果你伸展一下就有三种:
<强> ONE 强>
稍微更改此行:
new DefaultTableModel(
loadTableData(),
new String[] {
"First Name", "Last Name", "Cellphone"
}
)
然后在同一个类中创建一个方法,该类调用正确的类并加载数据库信息并创建包含它的2D Object数组。
<强> TWO 强>
为数据添加一个位置以及设置它的方法:
private Object[] theData;
public setData(Object[] data) {
theData = data;
}
然后我们在ONE中更改的那一行看起来像这样:
new DefaultTableModel(
theData,
new String[] {
"First Name", "Last Name", "Cellphone"
}
)
最后,你必须有一个不同的类,其中包含main方法,它将从数据库加载数据,创建Welcome类的实例,并通过调用setData(loadedData)
注入数据库数据。 (这可以通过Spring或Guice完成。或者只是调用setter。)
<强>三强>
第三种方法是创建一个全新的类TableModel
,它知道如何从数据库中读取数据。您将该类的实例传递给JTable
,当需要数据时,可以读取它。
这是记录在网上的很多地方。我在谷歌的“Java Swing TableModel数据库”中找到了一些例子。
答案 1 :(得分:1)
我怎样才能创建一个多维的Object数组并用它填充它 来自数据库的数据? gui是使用eclipse窗口完成的 助洗剂。
不是我不同意一切都比较简单,很简单
Database Objects
和JDBC methods
默认返回ResultSet
)仅columns
和rows
JTable
(其下层XxxTableModel
)仅约columns
和rows
Swing JComponents
及其XxxModel
被指定为可重复使用,model
和view
返回JDBC
和XxxTableModel
,我的以下句子,所有点都将是XxxTableModel
添加,删除,修改行,重置为空,修改单元格值等没有问题
ResultSet
返回(如果isn'm null)collections
行,您需要逐行循环
每一行代表XxxTableModel
如果没有真正重要的理由从DefaultTableModel
开始
shortcut,但我建议将Vector<Vector<Object>>
用于DefaultTableModel
,将util.List
或Vector<Vector<Object>>
用于AbstractTableModel
作为底层数组
我不想在这里写的所有重要内容都是在Oracle教程How to use Tables
Initial Thread
和Event Dispatch Thread