ciao ragazzi
come faccio a richiamare una classe premendo un bottone...
cioè su uan form ho un botton con un evento che se pigiato mi deve richiamare un'altra classe
ciao ragazzi
come faccio a richiamare una classe premendo un bottone...
cioè su uan form ho un botton con un evento che se pigiato mi deve richiamare un'altra classe
codice:nomeclasse c=new costruttoreclasse(eventuali parametri);
Cosa intendi per "richiamare una classe"??? Eseguire un metodo di quella classe?? (che sarebbe la cosa più ovvia)Originariamente inviato da gax80
ciao ragazzi
come faccio a richiamare una classe premendo un bottone...
cioè su uan form ho un botton con un evento che se pigiato mi deve richiamare un'altra classe
Poi cosa non ti è chiaro: come gestire l'evento del pulsante o altro??
io ho su una form un bottone che mi apre un altro frame, e il codice di questo frame lho inserito nella classe principale, invece vorrei fare un'altra classe che, una volta premuto il tasto, mi richiami quetsa classe...vorrei fare questo perchè dovrò aprire molti frame e nn mi va di riscrivere il codice nella classe principale..
quindi ricapitolando premo un bottone che mi chiama una classe che ha le impostazione generali di un fremo...
la domanda è...come faccio da un addActionListener richiame questa classe?
ti ringrazio...
nella classe dove hai il bottone crei un'istanza dell'altra classe
poi nel listener farai c.show()codice:nomeclasse c=new costruttoreclasse(eventuali parametri);
Il concetto è giusto ma bisogna usare il metoto
Per chè show() è stato "tolto" nelle nuove versioni di java...codice:c.setVisible(true);
Ciao.
Il mio è un problema + sottile. Probabilmente basterà il classico uovo di colombo..
Ho la suddetta classe swing che implementa solamente JFrame
Devo richiamare in JDialogButtonListener (ovviamente altra classe che vi riporterò sotto) il metodo setVisible su dialog (JDialog inizialmente invisibile dichiarata nella classe qui sopra.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); } }
Questo è JDialogButtonListener:
Eclipse ovviamente mi dice che dialog non è risolvibile (è private e non passo alcun parametro, in quanto non si può, a JDialogButtonListener).....codice:import java.awt.event.*; public class JDialogButtonListener implements ActionListener { public void actionPerformed(ActionEvent e){ dialog.setVisibile(true); } }
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.
You Only Fantasize, I Do.
Puoi implementare la seconda classe all'interno dell'altra come una classe annidata...in questo modo non dovresti più avere il problema.
Ciao.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); } public class JDialogButtonListener implements ActionListener { public void actionPerformed(ActionEvent e){ dialog.setVisibile(true); } } }
A questi punti direi che è anche l'unica.
Per come è strutturata l'interfaccia ActionListener direi che non si può creare una sua implementazione in una classe a se stante, se questa ha come action una azione su un oggetto esterno.
You Only Fantasize, I Do.