Witam!
Mam następujący problem. Mam klase WindowMain z JFrame (okno glowne aplikacji), w ktorym znajduje się tabela JTable. Mam własny tablemodel, jako ze tabela jest wypelniana wartosciami z arraylist. Po kliknieciu guziczka Dodaj w WindowMain wyskakuje kolejne okienko WindowAdd z JDialog, w ktorym to znajdują się trzy textFieldy, które wypełniam i i po kliknieciu Dodaj powinno mi dodać książke do biblioteki. Ksiazka sie dodaje się lecz tabela nie odświeża się. Nowa pozycja pojawia się dopiero po kliknięciu guziczka R w WindowMain ktory wywoluje fireTableDataChange() na tablemodelu mimo ze guziczek Dodaj tez to wywoluje. Zamieszczam kody źródłowe.
WindowMain to główne okno zawiera jeden obiekt typu BookStore ksiegarnia. Z kolei Ksiegarnia zwiera ArrayList<Book> books.
WindowMain.java
...
JButton butAdd = new JButton("Dodaj");
butAdd.setBounds(10, 10, 70, 25);
butAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
WindowAdd.main(ksiegarnia);
tmb.fireTableDataChanged();
}
});
frmKsiegarnia.getContentPane().setLayout(null);
frmKsiegarnia.getContentPane().add(butAdd);
...
}
WindowAdd.java
public class WindowAdd extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textFieldTitle;
private JTextField textFieldAuthor;
private JTextField textFieldYear;
private static BookStore ksiegarnia;
/**
* Launch the application.
*/
public static void main(BookStore ksiegarnia) {
WindowAdd.ksiegarnia=ksiegarnia;
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
WindowAdd frame = new WindowAdd();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public WindowAdd() {
...
JButton buttonAdd = new JButton("Dodaj");
buttonAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
ksiegarnia.addBook(textFieldTitle.getText(),textFieldAuthor.getText(),Integer.valueOf(textFieldYear.getText()));
dispose();
}
});
buttonAdd.setBounds(96, 104, 89, 23);
contentPane.add(buttonAdd);
...
}
}