Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [JAVA] Gestione eventi

  1. #1
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    [Java]Gestione eventi

    Ave populus
    ho scritto questo codice seguendo questa guida, codice che dovrebbe scatenare un evento al click sul bottone:
    codice:
    public class pdv implements ActionListener 
    {
    ...
       JButton b_OK = new JButton("Login");
       b_OK.addActionListener(this);
       b_OK.setBounds(100, 90, 80, 20);
       b_OK.setToolTipText("Clicca per effettuare il login");
       frame.getContentPane().add(b_OK);
       frame.setVisible(true);
    }
    ...
    public void actionPerformed(ActionEvent ae) 
    {
       l_usr.setText("TESTO DI PROVA");
    }
    ma non và (senza dare comunque errori)
    come mai???

  2. #2
    l_usr.setText("TESTO DI PROVA");
    Ma questo oggetto (che suppongo un JTextField) dove l'hai dichiarato?

  3. #3
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da eumene
    Ma questo oggetto (che suppongo un JTextField) dove l'hai dichiarato?
    Non è un JTextField, bensì una JLabel cmq l'ho dichiarato qua:
    codice:
    public class pdv implements ActionListener 
    {
       public static void createAndShowGUI() {
          ...
          JLabel l_usr = new JLabel("Username:");
          l_usr.setBounds(5, 35, 70, 20);
          frame.getContentPane().add(l_usr);
    
          JButton b_OK = new JButton("Login");
          b_OK.addActionListener(this);
          b_OK.setBounds(100, 90, 80, 20);
          b_OK.setToolTipText("Clicca per effettuare il login");
          frame.getContentPane().add(b_OK);
          frame.setVisible(true);
       }
    }
    ...
    public void actionPerformed(ActionEvent ae) 
    {
       l_usr.setText("TESTO DI PROVA");
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ad acionPeformed attaccaci pure un System.out.println("Fatto");

    Se si vede il messaggio in console, magari c'è da rivalidare il container (sempre in actionPerformed ci metti frame.validate() dove frame è il container della tua interfaccia grafica - JFrame per intenderci).
    Ciao.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    ho scritto così:
    codice:
    public class pdv implements ActionListener 
    {
       public static void createAndShowGUI() {
          ...
          JLabel l_usr = new JLabel("Username:");
          l_usr.setBounds(5, 35, 70, 20);
          frame.getContentPane().add(l_usr);
    
          JButton b_OK = new JButton("Login");
          b_OK.addActionListener(this);
          b_OK.setBounds(100, 90, 80, 20);
          b_OK.setToolTipText("Clicca per effettuare il login");
          frame.getContentPane().add(b_OK);
          frame.setVisible(true);
       }
    }
    ...
    public void actionPerformed(ActionEvent ae) 
    {
       System.out.println("TESTO DI PROVA");
    }
    ma, in compilazione, dà questo errore (la linea interessata è quella boldata):
    pdv.java:68: non-static variable this cannot be referenced from a static context

    b_OK.addActionListener(this);
    ^
    1 error
    ho allora provato a dichiarare non static la void createAndShowGUI() così:
    codice:
    public class pdv implements ActionListener 
    {
       public void createAndShowGUI() {
          ... 
       }
    }
    ma dà quest'altro errore:
    pdv.java:78: non-static method createAndShowGUI() cannot be referenced from a st
    atic context
    javax.swing.SwingUtilities.invokeLater(new Runnable() { public v
    oid run() { createAndShowGUI(); } });

    ^
    1 error
    allora ho eliminato la dichiarazione static del metodo main, ed ora compila, ma in esecuxzione dice Exception in thread "main" java.lang.NoSuchMethodError: main

  6. #6
    Ciao... mi sto avvicinando a java e vorrei capire anke io... posso kiederti di copiare tt il listato... xkè una prova simile io l ho vista ma in modo diverso... così spero anke d aiutarti...!

  7. #7
    L'untimo errore significa ke manca il metodo main

  8. #8
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da SilverJava
    ... posso kiederti di copiare tt il listato...
    codice:
    import java.awt.*;
    import java.sql.*;
    import java.util.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class pdv implements ActionListener 
    {
    	/* ----------------------------------------------- */
    	static Calendar calendar = new GregorianCalendar();
    	static int sett = calendar.get(Calendar.DAY_OF_WEEK) - 1; 
    	static String a_s[] = {"Domenica","Lunedì","Martedì","Mercoledì",
    "Giovedì","Venerdì","Sabato"};
    	static String g = Integer.toString(calendar.get
    (Calendar.DAY_OF_MONTH)); 
    	static int mese = calendar.get(Calendar.MONTH);
    	static String a_m[] = {"gennaio","febbraio","marzo","aprile","maggio","giugno",
    "luglio","agosto","settembre","ottobre","novembre","dicembre"};
    	static String a = Integer.toString(calendar.get
    (Calendar.YEAR));
    
    	static String hh = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));
    	static String mm = Integer.toString(calendar.get(Calendar.MINUTE));
    	
    	static String s = a_s[sett];
    	static String m = a_m[mese];
    	
    	static String data = s + " " + g + " " + m + " " + a;
    	/* ----------------------------------------------- */	
    	static int CENTER = 0;
    	static String version = "1.0.0";
    	
    	public static void createAndShowGUI() 
    	{			
    		JFrame.setDefaultLookAndFeelDecorated(true);
    		
    		JFrame frame = new JFrame
    ("Gestione - " + version);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setResizable( false );
    		frame.setSize(280, 200);
    		frame.setLocation(400, 300);
    		frame.addNotify();
    		frame.getContentPane().setLayout( null ); 
    			
    		JLabel l_label = new JLabel(data);
    		l_label.setBounds(65, 10, 150, 20);
    		l_label.setFont(l_label.getFont().deriveFont(Font.BOLD));
    		l_label.setHorizontalTextPosition(CENTER);
    		l_label.setToolTipText("Questa label 
    visualizza la data odierna");
    		frame.getContentPane().add(l_label);
    		
    		JLabel l_usr = new JLabel("Username:");
    		l_usr.setBounds(5, 35, 70, 20);
    		frame.getContentPane().add(l_usr);		
    			
    		JLabel l_pwd = new JLabel("Password:");
    		l_pwd.setBounds(5, 60, 70, 20);
    		frame.getContentPane().add(l_pwd);
    	
    		JTextField t_usr = new JTextField();
    		t_usr.setBounds(75, 35, 190, 20);
    		t_usr.setToolTipText("Scrivi qui il 
    tuo username");
    		frame.getContentPane().add(t_usr);
    			
    		JPasswordField p_pwd = new JPasswordField();
    		p_pwd.setBounds(75, 60, 190, 20);
    		p_pwd.setToolTipText("Scrivi qui la 
    tua password");
    		frame.getContentPane().add(p_pwd);
    		
    		JButton b_OK = new JButton("Login");
    		//b_OK.addActionListener(this);
    		b_OK.setBounds(100, 90, 80, 20);
    		b_OK.setToolTipText("Clicca per effettuare 
    il login");
    		frame.getContentPane().add(b_OK);
    		b_OK.setMnemonic(KeyEvent.VK_L);
    		
    		frame.setVisible(true);
    	}
    
    	public static void main(String[] args) 
    	{
    		javax.swing.SwingUtilities.invokeLater
    (new Runnable() { public void run() 
    { createAndShowGUI(); } });
    	}
    	
    	public void actionPerformed(ActionEvent ae) 
    	{
    		System.out.println("PIPPO");
    	}
    }
    ho commentato il codice di cui sopra, così almeno funziona (anche se senza eventi)

  9. #9

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ah... chi è quel this che passi come parametro all addActionListener?! Quello è il tuo problema! Non trova niente di valido in quel this (la tua class non estende nessuna classe con capacità grafiche, detta in soldoni). Ci sono alcune possibili soluzioni: la più semplice (ed onestamente quella più naturale nel tuo caso) è fare in modo che la tua classe estenda JFrame

    codice:
    public class pdv extends JFrame implements ActionListener {
    e poi fai un costruttore

    codice:
    public pdv() {
      super("Gestione - " + version);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      //blah blah blah
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.