从数据库Java填充多维数组

时间:2013-09-10 18:13:50

标签: java arrays swing multidimensional-array

所以我有这段代码:

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窗口构建器完成的。

谢谢, 约什

2 个答案:

答案 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 ObjectsJDBC methods默认返回ResultSet)仅columnsrows

  • JTable(其下层XxxTableModel)仅约columnsrows

  • Swing JComponents及其XxxModel被指定为可重复使用,modelview


  • 返回JDBCXxxTableModel,我的以下句子,所有点都将是XxxTableModel

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

  • ResultSet返回(如果isn'm null)collections行,您需要逐行循环

  • 每一行代表XxxTableModel

  • 的新行

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

  • shortcut,但我建议将Vector<Vector<Object>>用于DefaultTableModel,将util.ListVector<Vector<Object>>用于AbstractTableModel作为底层数组

  • 我不想在这里写的所有重要内容都是在Oracle教程How to use Tables

  • 中描述的非常重要的内容

  • 不要使用null布局,请参阅Oracle教程Initial ThreadEvent Dispatch Thread