Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA AWT] Repaint JFrame

    Buongiorno,

    semplice JFrame con GridLayout, compopsto di un JButton, una JTextfield e una JLabel.

    codice:
    button = new JButton(TITLE);
    button.addActionListener(new Listener());
    
    textfield = new JTextField();
    
    belowLabel = new JLabel(LABEL_DEFAULT_TEXT);
    Il listener prevede che, una volte premuto il bottone, cambi il testo della label

    codice:
    public void actionPerformed (ActionEvent e) {
    	if ("".equals(textfield.getText())) {
    		belowLabel.setText(NO_TEXT_ERROR);
    	} else {
    		belowLabel.setText(TEXT_OK);
    	}
    }
    L'actionPerformed viene correttamente invocato alla pressione del bottone, eppure il testo della Jlabel non cambia.

    Perchè?

    Buona giornata.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    belowLabel, la textfield, NO_TEXT_ERROR e TEXT_OK sono visibili da dentro il Listener?
    Viene generata qualche eccezione?

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Il Listener è una classe interna da me scritta in questo modo:

    codice:
    public class Listener implements ActionListener {
    
    	public void actionPerformed (ActionEvent e) {
    		if ("".equals(textfield.getText())) {
    			belowLabel.setText(NO_TEXT_ERROR);
    		} else {
    			belowLabel.setText(AGGATT_OK);
    		}
    	}
    
    }
    belowLabel è un campo private.

    Non vengono generate eccezioni.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class MioFrame extends JFrame {
    
       private class Listener implements ActionListener {
          public void actionPerformed(ActionEvent ee) {
             if ("".equals(textfield.getText())) {
                belowLabel.setText("NO_TEXT_ERROR");
             } else {
                belowLabel.setText("AGGATT_OK");
             }
          }
       }
    
       private JButton button;
       private JTextField textfield;
       private JLabel belowLabel;
    
       public MioFrame() {
          Container c = getContentPane();
          c.setLayout( new GridLayout(3, 1) );
    
          button = new JButton("Clicca");
          button.addActionListener( new Listener() );
    
          textfield = new JTextField();
    
          belowLabel = new JLabel();
    
          c.add( button );
          c.add( textfield );
          c.add( belowLabel );
    
          setDefaultCloseOperation( EXIT_ON_CLOSE );
          setSize(300, 300);
          setTitle("Prova");
          setVisible( true );
       }
    
       public static void main(String[] args) {
          SwingUtilities.invokeLater( new Runnable() {
             public void run() {
                MioFrame mf = new MioFrame();
             }
          });
       }
    }
    Funziona... ho usato delle stringhe fisse, ma fossero state degli oggetti String dichiarati a livello della classe funzionerebbe lo stesso...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Il repaint del componente o direttamente del JFrame lo invochi ?

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.