Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di gax80
    Registrato dal
    May 2006
    Messaggi
    631

    chiamare una 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



  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    codice:
    nomeclasse c=new costruttoreclasse(eventuali parametri);

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: chiamare una classe

    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
    Cosa intendi per "richiamare una classe"??? Eseguire un metodo di quella classe?? (che sarebbe la cosa più ovvia)
    Poi cosa non ti è chiaro: come gestire l'evento del pulsante o altro??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di gax80
    Registrato dal
    May 2006
    Messaggi
    631
    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...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    nella classe dove hai il bottone crei un'istanza dell'altra classe
    codice:
    nomeclasse c=new costruttoreclasse(eventuali parametri);
    poi nel listener farai c.show()

  6. #6
    Il concetto è giusto ma bisogna usare il metoto

    codice:
    c.setVisible(true);
    Per chè show() è stato "tolto" nelle nuove versioni di java...

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  7. #7
    Utente di HTML.it L'avatar di gax80
    Registrato dal
    May 2006
    Messaggi
    631
    ok grazie tante

  8. #8
    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.

    You Only Fantasize, I Do.

  9. #9
    Puoi implementare la seconda classe all'interno dell'altra come una classe annidata...in questo modo non dovresti più avere il problema.

    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);
    	}
             }
    }
    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  10. #10
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.