Cześć,
mam problem z wyświetlaniem elementów z listy na JTable.
Oto mój kod:
(...)
@SuppressWarnings("serial")
public class GUI extends JFrame implements ActionListener {
private JTabbedPane tabbedPane;
private JPanel panel1, panel2, panel3;
private JButton next, generate, back, save;
private JTextField nameField, surnameField, idField;
@SuppressWarnings("rawtypes")
private JComboBox semestrBox, degreeBox, departmentBox;
(...)
public static String[] kolumnyTab = {"Imie", "Nazwisko", "Nr indeksu", "Wydział", "Semestr"};
public String imie, nazwisko, wydzial, semestr, stopien;
public int nrIndeksu;
private List<Student> s = new ArrayList<Student>();
public GUI (){
setTitle ("Obsługa sprawy");
setSize(400, 500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
page1();
page2();
page3();
tabbedPane = new JTabbedPane();
tabbedPane.addTab( "Załóż sprawę", panel1 );
tabbedPane.addTab( "Wypełnianie", panel2 );
tabbedPane.addTab( "Lista spraw", panel3 );
topPanel.add( tabbedPane, BorderLayout.CENTER );
}
(...)
private void page3() {
panel3 = new JPanel();
panel3.setLayout( null );
(...)
JTable table = new JTable(s.toArray(new Object [][]{}), kolumnyTab);
JScrollPane scPane = new JScrollPane (table);
scPane.setBounds(10, 100, 360, 240);
panel3.add(scPane, BorderLayout.CENTER);
(...)
}
public void actionPerformed(ActionEvent e) {
(...)
if (e.getSource() == generate){
imie = nameField.getText();
nazwisko = surnameField.getText();
nrIndeksu = Integer.parseInt(idField.getText());
s.add(new Student (imie, nazwisko, nrIndeksu, wydzial, semestr));
panel3.repaint();
(...)
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI grafika = new GUI ();
grafika.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Próbowałem tak:
TableModel tableModel = new DefaultTableModel(s.toArray(new Object[][] {}), kolumnyTab);
JTable table = new JTable(tableModel);
I tak:
JTable table = new JTable(s.toArray(new Object [][]{}), kolumnyTab);
I nie działa, tzn. elementy dodają się do listy poprawnie (wyświetlam je po dodaniu za pomocą metody toString()), ale nie dodają się one do JTable.
Bardzo proszę o pomoc.
Z góry dziękuję i pozdrawiam.