java问题AbstractTableModel,表不显示
我正在尝试使用现有的ArrayList绘制一个表。这个论坛的某个人告诉我使用AbstractModelTable
public class prueba2 extends JFrame{
private ArrayList<alumnos> nLista = new ArrayList<alumnos>();
private String[] columnas = {"Nombre","Apellidos","Ciudad"};
public prueba2(){
nLista.add(new alumnos("Alberto","Espina","Malaga"));
nLista.add(new alumnos("Luisa","Sanchez","Madrid"));
nLista.add(new alumnos("Maria","Queixo","Tarragona"));
nLista.add(new alumnos("Alvaro","Gomez","Alicante"));
nLista.add(new alumnos("Pablo","Robles","El ejido"));
TablaAbs abs = new TablaAbs(nLista, columnas);
JTable tabla = new JTable(abs);
add(tabla);
setLayout(null);
setVisible(true);
for(alumnos a: nLista){
System.out.println(a.Frase());
}
}
}
class alumnos{
private String nombre;
private String apellidos;
private String ciudad;
public alumnos(String nombre,String apellidos,String ciudad){
this.nombre = nombre;
this.apellidos = apellidos;
this.ciudad = ciudad;
}
public String Frase(){
return "Nombre " +nombre+ "apellidos " +apellidos+ " Ciudad " +ciudad;
}
}
class TablaAbs extends AbstractTableModel{
private ArrayList aL;
private String[] columnas;
public TablaAbs(ArrayList nLista, String[] columnas){
aL = nLista;
this.columnas = columnas;
}
@Override
public int getRowCount() {
return aL.size();
}
@Override
public int getColumnCount() {
return columnas.length;
}
@Override
public String getColumnName(int column) {
return columnas[column];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return aL.get(rowIndex);
}
}
我试过使用普通数组、ArrayList(在本例中)甚至DefaultTableModel,但不知道我做错了什么。桌子从来没有出现过
# 1 楼答案
正如评论中提到的,使用
setLayout(null)
会给您带来很多问题。特别是用于显示JTable
。解决方案是use a LayoutManager.注意我对代码所做的更改,它可以正常工作。还要注意,我将类的名称从prueba2
更改为Prueba2
。强烈建议遵循标准命名约定-所有类名都应以大写字母开头