我们必须制作一个有点像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);
}
答案 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