Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [JAVA]Creare Eventi

  1. #1

    [JAVA]Creare Eventi

    Salve a tutti
    Mi presento sono StregaBaba (naturalmente non mi chiamo davvero così).
    Ebbene si sono una girl VVoVe: che frequenta una facoltà di informatica...

    Passo subilto al dunque, devo creare un software per l'università e ho un solo misero mese e ho scelto come linguaggio di programmazione Java...
    E sono intenta ad impararlo nel più breve tempo possibile.

    Sto cercando di iparare le interfaccie grafiche, eventi e poi passerò alla definizione vera e propria dell'inferfaccia e cercherò successivamente di implementare i metodi.
    Innanzitutto vi dico che sto usando JBuilder 2007 derivato da Eclipse, e volevo sapere se creo una gui da codice poi come posso vederlo in anteprima in modo da poter modificare le posizioni degli elementi nella finestra in modo semplice con il mouse senza utilizzare coordinate?

    Poi:
    Vi posto 3 classi che ho creato:
    codice:
    package provaSwing;
    import javax.swing.*;
    import java.awt.*;
    public class HelloWorldMain {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		/*
    		 * Il main in questo caso instanzia solo la memoria per l'oggetto
    		 */
    		new HelloWorld();
    
    	}
    
    }
    codice:
    package provaSwing;
    //Importo le librerie Swing
    import javax.swing.*;
    import java.awt.*;
    //Questa classe è estesa dalla classe Jframe che gestisce i Frame
    public class HelloWorld extends JFrame {
    	
    	/*
    	 * Questo è il costruttore di classe che viene instanziato alla creazione
    	 * dell'oggetto in modo che la GUI sia creata in automatico quando è
    	 * creato l'oggetto
    	 */
    	public HelloWorld() {
    		this.setSize(300,100);
    		//IMPORTANTE per chiudere il frame
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("Hello World");
    		/*
    		 * Creo l'oggetto p1 istanziato dalla classe che crea il panel con 
    		 * la label all'interno a faccio ADD sul Frame di quel Panel
    		 */
    		HelloPanel p1 = new HelloPanel();
    		this.add(p1);
    		
    		
    		
    		this.setVisible(true);
    		
    	}
    }
    codice:
    package provaSwing;
    import javax.swing.*;
    import java.awt.*;
    public class HelloPanel extends JPanel{
    	
    	
    	public HelloPanel() {
    		/*
    		 * Dato che la classe è un estensione di JPanel il Panel viene
    		 * Creato dal costruttore quando viene istanziata la classe
    		 * con this.add aggiungo al Pannelloo (this si riferisce al Panel)
    		 * la label.
    		 */
    		JButton Button1 = new JButton();
    		JLabel l = new JLabel();
    		l.setText("FANCULO");
    		Button1.setText("Ciao");
    		this.add(l);
    		this.add(Button1);
    		}

    Lasciate perdere i commenti da idiota
    :quote:

    Allora voglio separare la gui dalle funzioni..è questo dove voglio arrivare..
    Allora ho creato una classe che gestisce il Panel e contiene una Label e un Button, una che Crea un Frame e richiama il Panel, e poi il main che invoca il Frame il quale, secondo il costruttore, aziona tutto!

    Adesso però non riesco a gestire gli eventi...

    Cioè come ho detto sopra vorrei SEPARARE gui da implementazione delle funzioni, ma non capisco come fare...
    Ho letto su Java for Dummies (vedete come sono ridotta) che:

    1)Bisognerebbe creare i button come private, ma se lo faccio non funziona più nulla
    2)NON HO CAPITO UN TUBO degli actionlistener, actionperformed!!!

    cioè come devo fare per creare in quel codice un bottone che faccia qualcosa!

    VI RINGRAZIO
    e vi prego aiutatemi che sono disperata!

    EDIT:
    Oppure non è sbagliato creare una classe che abbia al suo interno fram panel e button?

  2. #2
    Allora per l'Action ho risolto così vedendo un esempio ma vorrei cmq più chiarimenti in merito alle domande poste nel post sopra.
    Ecco la classe che gestisce l'evento

    codice:
    package provaSwing;
    import javax.swing.*;
    import java.awt.event.*;
    public class Button1Event implements ActionListener {
    	
    	private int click = 0;
    	
    	   public void actionPerformed(ActionEvent e) {
    /*
    		     if (e.getSource()==Button1) {
    		    	 click++;
    		    	 if (click == 1){
    		    		 Button1.setText("sono stato clickato");
    		    	 }else
    		    		 Button1.setText("sono stato clickato "+click "volte");
    		     }
    */
    		   }
    	   
    }
    Vedete la parte commentata?
    Allora se inserisco un semplice println funge, ma se uso quel codice no, perche non riconosce l'oggetto Button1 che ho creato nella classe HelloWorldPanel, che trovate sopra, come posso risolvere?

    EDIT:
    Siccome non posso editare sopra posto qua il nuovo codice che pare da un libro più corretto, in cui Button1 è private:
    codice:
    package provaSwing;
    import javax.swing.*;
    import java.awt.event.*;
    public class HelloPanel extends JPanel {
    	
    	private JButton Button1 = new JButton(); 
    	
    	public HelloPanel() {
    		/*
    		 * Dato che la classe è un estensione di JPanel il Panel viene
    		 * Creato dal costruttore quando viene istanziata la classe
    		 * con this.add aggiungo al Pannelloo (this si riferisce al Panel)
    		 * la label.
    		 */
    		Button1Event bevent1 = new Button1Event();
    		Button1.addActionListener(bevent1);
    		JLabel l = new JLabel();
    		l.setText("FANCULO");
    		Button1.setText("Ciao");
    		this.add(l);
    		this.add(Button1);
    		}
    
    }

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 © 2025 vBulletin Solutions, Inc. All rights reserved.