Witam,
piszę teraz aplikację na zajęcia i natrafiłem na pewien problem nie rozumie jak działa JTable + ModelTable z ArrayList. Z tego co udało mi się znaleźć w internecie to tutoriale jak to się robi ale zazwyczaj za pomocą tablicy Object[][] albo wektora i większość osób które odpowiadały na to pytanie odsyłała do tutoriali. Poczytałem troszkę i skleciłem coś takiego krótki przykład. Który nie działa ale może chociaż trochę przypomina to jak to powinno być. Bardzo proszę o porady, poprawki tego co skleciłem.
Klasa ModelTabeli:
package Tabelka;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ModelTabeli extends AbstractTableModel {
private String[] columnNames = {"ID","Nazwa","Producent","Ilosc"};
private ArrayList<List<String>> listy =new ArrayList<List<String>>();
private static final long serialVersionUID = 1L;
public ModelTabeli(ArrayList<List<String>> listy) {
this.listy=listy;
}
public ModelTabeli(){};
public void dodajListe(List<String> lista){
listy.add(lista);
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return columnNames.length;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return this.listy.size();
}
@Override
public Object getValueAt(int wiersz, int kolumna) {
Object obiekt=null;
obiekt = listy.get(wiersz).get(kolumna);
return obiekt;
}
}
Klasa Tabela (okno z komponentem JTable):
package Tabelka;
import java.awt.Color;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Tabela extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1;
private JTable tabela;
private JScrollPane suwak;
ModelTabeli model=new ModelTabeli();
//Object[][] obiekt = {
// {"szymon","dupa"},
//{"karolina","nogi"}
//};
List<String> lista1 = new ArrayList<String>();
List<String> lista2 = new ArrayList<String>();
public void pokazOknoAdmina() throws RemoteException
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600,600);
setTitle("Okno administratora");
setLayout(null);
setVisible(true);
lista1.add("Szymon");
lista1.add("Fiałkowski");
lista2.add("Karolina");
lista2.add("Polinska");
model.dodajListe(lista1);
model.dodajListe(lista2);
suwak = new JScrollPane(tabela);
suwak.setSize(300, 400);
suwak.setLocation(230, 50);
tabela.setBackground(new Color(0,252,255)); tutaj wywala błąd a jak to usunę to błędu nie ma program się odpala ale żadnej tabelki nie wiedać
suwak.setVisible(true);
add(suwak);
}
}
I wywala błędy:
Exception in thread "main" java.lang.NullPointerException
at Tabelka.Tabela.pokazOknoAdmina(Tabela.java:50)
at Tabelka.Glowny.main(Glowny.java:9)
I jak się odpala bez błędu to zauważyłem że, chwile po odpaleniu jest gole okno a jak je zminimalizuje i przywrócę z powrotem to pojawia się ramka od tabelki.