我的 table 程序有问题。有人能告诉我如何解决吗?
I have a problem with my table program. Could one tell me how to solve it?
我们必须制作一个有点像 excel 的程序。现在我遇到了问题,因为我想创建一个包含 999 列和 999 行的字段。我已经尝试过仅在 999*999 JTextField
进行控制,但这显然需要很长时间,而且我得到一个异常,即没有剩余内存。我怎样才能做得更好?我应该尝试只渲染这些正在使用的文本字段还是有更好的方法来制作 table?
这是我的代码:
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);
}
您可以这样创建 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
的更多 in-depth 教程,请参阅 How to Use Tables
我们必须制作一个有点像 excel 的程序。现在我遇到了问题,因为我想创建一个包含 999 列和 999 行的字段。我已经尝试过仅在 999*999 JTextField
进行控制,但这显然需要很长时间,而且我得到一个异常,即没有剩余内存。我怎样才能做得更好?我应该尝试只渲染这些正在使用的文本字段还是有更好的方法来制作 table?
这是我的代码:
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);
}
您可以这样创建 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
的更多 in-depth 教程,请参阅 How to Use Tables