Проблема связана с вашим классом TableModel.
Когда вы создаете экземпляр TableModel, вам следует добавить данные в TableModel.
Вместо этого вы добавляете свои данные в другую модель внутри вашей TableModel:
DefaultTableModel model=new DefaultTableModel()
Таким образом, при создании новой JTable с помощью TableModel ничего не отображается, поскольку все данные содержатся внутри именованной модели DefaultTableModel, а не в вашем экземпляре TableModel.
Вам не нужен следующий код:
DefaultTableModel model=new DefaultTableModel()
{
public Class<?> getColumnClass(int column)
{
switch(column)
{
case 0: // |This is the first column
return Boolean.class; // |First column is set to Boolean as it will contain check boxes
case 1: // |This is the second column
return String.class; // |Second column set to String as it will contain strings
default:
return String.class; // |The table is set to String as default
}
}
};
И вместо
model.addColumn("Select"); // |Column for Check boxes
model.addColumn("Bigrams"); // |Column for Bigrams
Вам просто нужно добавить данные в ваш экземпляр TableModel:
addColumn("Select"); // |Column for Check boxes
addColumn("Bigrams"); // |Column for Bigrams
Я не понимаю, зачем вам вообще расширять DefaultTableModel, следующий код будет работать нормально и будет намного проще:
import javax.swing.*;
import java.awt.*;
public class BiogramTable extends JFrame {
public BiogramTable() {
JTable selectionTable = new JTable(
new Object[][]{
{ true, "Foo" },
{ false, "Bar"}
},
new Object[]{"Select", "Biagrams"}
);
JScrollPane scroll = new JScrollPane(selectionTable);
getContentPane().add(scroll, BorderLayout.CENTER);
JProgressBar bar = new JProgressBar(0, 10);
bar.setStringPainted(true);
getContentPane().add(bar, BorderLayout.SOUTH);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] arg) {
new BiogramTable();
}
}