Как видно из заголовка, в мою таблицу добавляются пустые ячейки, когда я что-то добавляю в базовый список.
Основной класс:
import javax.swing.SwingUtilities;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MainFrame frame = new MainFrame();
}
});
}
}
Класс MainFrame:
import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JTable;
public class MainFrame extends JFrame {
private JTable table;
private ArrayList<String> strings;
public MainFrame() {
setTitle("Stack Overflow");
setSize(800, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setVisible(true);
strings = new ArrayList<String>();
table = new JTable(new TableModel(strings));
add(table,BorderLayout.CENTER);
for (int i = 0; i < 10; i++) {
strings.add("data");
}
}
}
AbstractTableModel Class:
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TableModel extends AbstractTableModel {
private String[] colNames = {"Col1","Col2"};
private List<String> strings;
public TableModel(List<String> strings) {
this.strings = strings;
}
@Override
public String getColumnName(int column) {
return colNames[column];
}
@Override
public int getRowCount() {
return strings.size();
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public String getValueAt(int rowIndex, int columnIndex) {
if (rowIndex*2 + columnIndex >= strings.size()) return "";
return strings.get(rowIndex*2 + columnIndex);
}
}
Есть ли лучший способ получить элементы из моего 1D массива, чтобы таблица заполнялась слева направо, сверху вниз (без лишних пустых ячеек)?
Почему эта проблема все равно возникает?
Результат: