1

所以我有这个代码:

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,但我不知道如何。我正在考虑在初始化方法之外使用一个方法,并在其中创建一个多维数组供 jTable 引用。我的目标是这行代码:

new Object[][] {

}

我怎样才能制作一个多维对象数组并用数据库中的数据填充它?gui 是使用 eclipse 窗口生成器完成的。

谢谢,乔什

4

2 回答 2

1

有两种常见的方法可以做到这一点,如果你稍微伸展一下,三种方法:

稍微改变这一行:

new DefaultTableModel(
    loadTableData(),
    new String[] {
        "First Name", "Last Name", "Cellphone"
    }
)

然后在同一个类中创建一个方法,该方法调用正确的类并加载数据库信息并创建包含它的 2D 对象数组。

为数据添加一个位置和设置它的方法:

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,当需要数据时,可以读取它。

这在网络上的很多地方都有记录。我会在 Google 上搜索“Java Swing TableModel 数据库”以找到一些示例。

于 2013-09-10T18:24:07.487 回答
1

我怎样才能制作一个多维对象数组并用数据库中的数据填充它?gui 是使用 eclipse 窗口生成器完成的。

  • 不是我不同意一切都更简单,很简单

  • Database Objects默认情况下仅JDBC methods返回 ( ResultSet)和columnsrows

  • JTable(它的底层XxxTableModel)是关于columnsrows

  • Swing JComponents并且它XxxModel被指定为可重复使用modelview


  • 回到JDBCand XxxTableModel,我下面的句子,所有的点都是关于XxxTableModel

  • 添加,删除,修改行,重置为null,修改单元格值等没有问题

  • ResultSet返回(如果不为空)collections行,您需要逐行在内部循环

  • 每行代表一个新行XxxTableModel


  • 如果没有真正重要的理由开始DefaultTableModel

  • 快捷方式,但我建议使用Vector<Vector<Object>>forDefaultTableModelutil.ListorVector<Vector<Object>>作为AbstractTableModel底层数组

  • 我不想在这里写的所有重要内容都在 Oracle 教程How to use Tables中进行了非常详细的描述


  • 不要使用空布局,请参阅 Oracle 教程Initial ThreadEvent Dispatch Thread
于 2013-09-10T19:07:19.900 回答