PDA

Visualizza la versione completa : [JAVA] Ascoltare un evento


Devil01
08-12-2005, 19:29
Ciao a tutti,
ho un problema vorrei catturare un evento dentro un altro evento
cioe dalla pressione di un JMenuItem catturare l'evento e aprire una JDialog e fin qui tutto bene ora nella JDialog ho un JButton e non riesco a catturare l'evento del JButton e non ho mi restituisce nessun errore sia in compilazione che a runtime ora vi posto il codice.


class SuperClass.....{

public void JMenuExample() {
Modifica.add(Aggiungi);
Modifica.add(Elimina);
barra.add(Modifica);
Aggiungi.addActionListener(new AscoltaAggiungi());
setJMenuBar(barra);
}

class AscoltaAggiungi implements ActionListener{

public void actionPerformed(ActionEvent e){
System.out.println("Ciaooo");//Questo lo stampa
JDialog dialog = new JDialog(frame, "Inserire dati nella tabella", true);
JTextField nome_film = new JTextField(20);
JTextField regista = new JTextField(20);
JButton Salva = new JButton("Salva");
JLabel Film = new JLabel("FILM:");
JLabel Regista = new JLabel("REGISTA:");
dialog.add(Film);
dialog.add(nome_film);
dialog.add(Regista);
dialog.add(regista);
dialog.add(Salva);
dialog.setLayout(new FlowLayout(FlowLayout.LEFT));
dialog.pack();
dialog.setVisible(true);
Salva.addActionListener(new AscoltaSalva());
}

}

class AscoltaSalva implements ActionListener {
public void actionPerformed(ActionEvent e){
System.out.println("Prova");//Qui non mi restituisce l'output
}
}
}
Forse sbaglio il metodo di implementazione dei vari componenti
help please :dh: ciao

Matteo982
08-12-2005, 20:48
Prova a mettere la classe AscoltaSalva dentro alla classe AscoltaAggiungi dopo il metodo actionPerformed...

AlteCoste
08-12-2005, 21:30
ciao sono uno studente di ing. inf.
ho visto il codice che hai inserito e ho rifatto il tuo esercizio:
Devi prendere il metodo getContentPane() dall'ogetto dialog, che ti
da il pannello su cui dopo puoi fare la add(Component c)!
di seguito ti invio una versione funzionante del software
distinti saluti ;-)
by Armentaker



import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SuperClass extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JButton jButton1 = new JButton();
JPanel Aggiungi;
public SuperClass() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}

void jbInit() throws Exception {
Aggiungi=new JPanel();
jButton1.setText("jButton1");
this.getContentPane().add(Aggiungi);
Aggiungi.add(jButton1, null);
jButton1.addActionListener(new AscoltaAggiungi());

}

class AscoltaAggiungi implements ActionListener {

public void actionPerformed(ActionEvent e) {
System.out.println("Ciaooo"); //Questo lo stampa

JDialog dialog = new JDialog();
JTextField nome_film = new JTextField(20);
JTextField regista = new JTextField(20);
JButton Salva = new JButton("Salva");
JLabel Film = new JLabel("FILM:");
JLabel Regista = new JLabel("REGISTA:");
dialog.getContentPane().add(Film);
dialog.getContentPane().add(nome_film);
dialog.getContentPane().add(Regista);
dialog.getContentPane().add(regista);
dialog.getContentPane().add(Salva);
dialog.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
dialog.pack();
dialog.show();
Salva.addActionListener(new AscoltaSalva());
}

class AscoltaSalva
implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Prova"); //Qui non mi restituisce l'output
}
}
}
public static void main(String a[]){
SuperClass r=new SuperClass();
r.show();
}
}

Matteo982
08-12-2005, 23:09
Beh se vogliamo essere proprio precisi il metodo show meglio sostituirlo con il metodo setVisible(true)! :zizi:
Comunque il codice che ha scritto dovrebbe essere abbastanza corretto (dico dovrebbe perch manca tutto il resto)...se prova ad includere la classe del secondo ascoltatore in quella del primo come ho suggerito sopra magari gli funziona solo spostando una parentesi graffa...per cos poco vale la pena di tentare! :D

Ciao. :ciauz:

Loading