Salve a Tutti, ecco il mio nuovo dilemma!!
Dunque....
La classe FrameB() e un JFrame ( public class FrameB extends JFrame...... )
istanziata nella classe main: FrameB home = new FrameB();
In FrameB() un JButton apre una JDialog in setModal(true) senza istanziarla,
cioè: if (e.getSource().equals(openBtn)) { new FrameB1(); }
Nella JDialog ( public class FrameB1 extends JDialog...... ) vi sono diversi
componenti grafici, di cui i più importanti sono....
un "local" JPanel container impostato come setContent() della JDialog
............................|
............................|-> "field private" JScrollPane boxScroll
.................................................. .........................|
.................................................. .........................|-> "field private" JPanel box
All'interno di box ho un determinato numero di altri componenti
di tipo campi di testo (JLabel, JTextField etc) il cui numero e contenuto
è soggetto a variazione da parte dell'utente.
In un altro JPanel contenuto da container ho una serie di JButton
tra cui uno che salva i dati inseriti, o meglio:
codice:
if (e.getSource().equals(salva)) {
boolean modifiche = new Controlli(indiceA, indiceB, tempA.getText(), tempB.getText()).get();
if (modifiche) { dispose(); }
}
.... li manda alla classe Controlli che esegue dei controlli e restituisce una boolean
che se true chiude il JDialog.
Quello che vorrei realizzare e ridisegnare il JPanel box anziché chiuderlo
dopo le operazioni avviate dal JButton salva ma non ci riesco!!
Ho provato richiamando un metodo del tipo:
codice:
private void redraw() {
scrollBox.remove(box);
scrollBox.add(newBox());
scrollBox.validate();
}
... ma non funziona.
Ho provato anche ad aggiungere un ascoltatore sulla chiusura
nella classe FrameB su FrameB1, che in parte funziona, cioè mi
rileva la chiusura ma non so per quale motivo me la rileva due
volte!! ridisegnandomi così di fatto invece che uno, due nuovi
JDialog!! Per non dire poi che nella classe dell'event mi va in un
loop senza fine, ma di sicuro avrò sbagliato a progettare il codice!!
Forse la JDialog non si presta a metodi di "ridisegno" e dovrei usare
al suo posto un JFrame ed inventarmi un metodo per renderlo modal!!
Chiedo suggerimenti a Voi esperti del linguaggio.
Ciao