0
DBのデータを持つJTable
を示すGUIアプリケーションを使用したプロジェクトがあります。私はDefaultTableModel
オブジェクトを使用しています。私のコードは次のとおりです。ArrayListTableModelを使用したJTable
Facade facade = new Facade();
ArrayList<Suppliers> suppliers = facade.getAllSuppliers();
JFrame frame = new JFrame("JTable Data");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 600);
Container content = frame.getContentPane();
content.setLayout(new BorderLayout());
JTable table = new JTable();
ArrayList<Object[]> list = new ArrayList<Object[]>();
for(int i = 0; i < suppliers.size(); i++)
{
list.add(new Object[]
{
suppliers.get(i).getId(),
suppliers.get(i).getName(),
suppliers.get(i).getStreet(),
suppliers.get(i).getCity(),
suppliers.get(i).getState(),
suppliers.get(i).getZip(),
});
}
table.setModel(new DefaultTableModel(list.toArray(new Object[][]{}),
new String[]{"id", "name", "street", "city", "state", "zip"}));
JScrollPane scrollList = new JScrollPane(table);
content.add(scrollList, BorderLayout.CENTER);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
今、私はArrayList
オブジェクトを提供する機能でArrayListTableModel
オブジェクトを作成します。ここでは、コードされています。私は、メインメソッドでこのクラスを使用しようとすると、私は例外を
public class ArrayListTableModel extends AbstractTableModel {
private ArrayList rows;
private String[] columnNames = {};
/**
*
* @param columnNames
* @param rows
*/
public ArrayListTableModel(String[] columnNames, ArrayList rows) {
this.columnNames = columnNames;
this.rows = rows;
}
@Override
public String getColumnName(int column) {
if (columnNames[column] != null) {
return columnNames[column];
} else {
return "";
}
}
@Override
public int getRowCount() {
return rows.size();
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public Object getValueAt(int aRow, int aColumn) {
ArrayList row = (ArrayList) rows.get(aRow);
return row.get(aColumn);
}
}
受け取る:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
[Ljava.lang.Object; cannot be cast to java.util.ArrayList
私はDefaultTableModel
を交換し、ArrayListTableModel
を使いたいと思います。あなたgetValueAt()
方法において