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
개체를 만들려고합니다. 여기 코드는 다음과 같습니다
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
[Ljava.lang.Object; cannot be cast to java.util.ArrayList
내가 DefaultTableModel
교체 좋아하고 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);
}
}
내가 주요 방법이 클래스를 사용하려고
, 나는 예외를받을 수 있습니다. 당신의getValueAt()
방법에서