У меня проблема с моей настольной программой.Можно ли мне сказать, как это решить? - PullRequest
1 голос
/ 20 мая 2019

Мы должны сделать программу, которая немного похожа на 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 Ответ

2 голосов
/ 20 мая 2019

Вы можете создать 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 с см. В Как использовать таблицы

...