Il mio è un problema + sottile. Probabilmente basterà il classico uovo di colombo..
Ho la suddetta classe swing che implementa solamente JFrame
codice:
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class JButtonExample extends JFrame {
/**
*
*/
private static final long serialVersionUID = -9047187471312379634L;
private JDialog dialog;
private JButton okButton;
private JButton jDialogButton;
public JButtonExample() {
// Top Level Container
super("JButtonExample");
setBounds(10,35,200,70);
getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
// Finestra di Dialogo inizialmente invisibile
dialog = new JDialog(this,"JDialog",false);
dialog.setBounds(250,20,300,100);
dialog.getContentPane().setLayout(new BorderLayout());
dialog.getContentPane().add(BorderLayout.CENTER, new JLabel("Chiudi questa Finestra per continuare",JLabel.CENTER));
dialog.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
// Crazione Pulsanti
okButton = new JButton("OK");
jDialogButton = new JButton("Open Frame");
// Crea Ascoltatori (oberservers)
ActionListener okListener = new OkButtonListener();
ActionListener openActionListener = new JDialogButtonListener();
// Registra gli ascoltatori verso i pulsanti
okButton.addActionListener(okListener);
jDialogButton.addActionListener(openActionListener);
// OkButton come default Button
getRootPane().setDefaultButton(okButton);
//Aggiunge i pulsanti al top level Container
getContentPane().add(okButton);
getContentPane().add(jDialogButton);
setVisible(true);
}
}
Devo richiamare in JDialogButtonListener (ovviamente altra classe che vi riporterò sotto) il metodo setVisible su dialog (JDialog inizialmente invisibile dichiarata nella classe qui sopra.
Questo è JDialogButtonListener:
codice:
import java.awt.event.*;
public class JDialogButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e){
dialog.setVisibile(true);
}
}
Eclipse ovviamente mi dice che dialog non è risolvibile (è private e non passo alcun parametro, in quanto non si può, a JDialogButtonListener).....
Come posso risolvere? Fin'ora ho trovato solo esempi che estendevano una swing ma che nel contempo implementavano Actionlistener, quindi il metodo actionPerformed essendo interno alla classe trova per forza tutti gli elementi.
Spero di essere stato chiaro..e grazie in anticipo a tutti.