我的表格程序有问题。可以告诉我如何解决吗?

时间:2019-05-19 22:32:39

标签: java swing memory awt jtextfield

我们必须制作一个有点像excel的程序。现在,我遇到了一个问题,因为我想创建一个999列和999行的字段。我已经尝试仅使用999 * 999 JTextField控件,但是显然需要很长时间,而且我得到一个例外,那就是没有剩余的内存。我该如何做得更好?我应该只渲染这些正在使用的文本字段,还是有更好的方法来制作表格?

这是我的代码:

tablePanel = new JPanel();
tablePanel.setLayout(new GridBagLayout());
tablePanel.setSize(100, 30);
tablePanel.setBorder(null);

JScrollPane tableScroll = new JScrollPane(tablePanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//tableScroll.getVerticalScrollBar().setPreferredSize(new Dimension(0,0));
//tableScroll.getVerticalScrollBar().setUnitIncrement(25);
tableScroll.setBounds(0, 30, 30, this.getHeight());
table = new ArrayList<>();
for (int i = 0; i < 999; i++) {
    ArrayList<Component> column = new ArrayList<>();
    for (int j = 0; j < 999; j++) {
        JTextField field = new JTextField();
        field.setPreferredSize(new Dimension(100, 30));
        field.setBorder(null);
        field.setFocusCycleRoot(false);
        field.setFocusable(false);
        gbc.gridy = j;
        gbc.gridx = i;

        column.add(field);
        tablePanel.add(field, gbc);
    }
    table.add(column);
}

1 个答案:

答案 0 :(得分:2)

您可以这样创建javax.swing.JTable

JTable table = new JTable(999,999); // creates a 999*999 table
TableCellEditor tce = table.getCellEditor();
// use tce to follow user

,并使用tce来跟踪用户对哪个单元格所做的操作。

有关javax.swing.JTable的更深入的教程,请参见How to Use Tables