Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    7

    [JAVA] JTextField resettare on click

    Ciao a tutti!
    volevo sapere se c'era un metodo per resettare on click il valore di default di un JTextField.

    esempio:
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class test extends JFrame{
    
    	public test(){
    		super("test login");
    		JTextField utente=new JTextField("inserisci il nome utente");
    		JLabel lbu=new JLabel("Utente");
    		lbu.setLabelFor(utente);
    		JPasswordField password=new JPasswordField("password");
    		JLabel lbp=new JLabel("Password");		
    		lbp.setLabelFor(password);
    		JButton btn=new JButton("Accedi");
    		setLayout(new FlowLayout());
    		utente.addMouseListener(new MouseListener() {
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("click utente");
    			}
    			public void mousePressed(MouseEvent e) {}
    			public void mouseReleased(MouseEvent e) {}
    			public void mouseEntered(MouseEvent e) {}
    			public void mouseExited(MouseEvent e) {}
    		});
    		
    		password.addMouseListener(new MouseListener() {
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("click password");
    			}
    			public void mousePressed(MouseEvent e) {}
    			public void mouseReleased(MouseEvent e) {}
    			public void mouseEntered(MouseEvent e) {}
    			public void mouseExited(MouseEvent e) {}
    		});
    
    		btn.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e) {
    		    	System.out.println("click bottone");
    		    }
    		}); 
    		add(lbu);
    		add(utente);
    		add(lbp);
    		add(password);
    		add(btn);
    		pack();
    		setVisible(true);
    	}
    	public static void main(String[]args){
    		new test();
    	}
    }
    in questo esempio ho messo che cliccando su una JTextField mi stampa sulla mia shell un messaggio, ma è possibile fare in modo che mi cancelli la stringa che ho messo di default?
    in modo tale che l'utente cliccando deve solo inserire il suo username/password evitando di cancellare la scritta esistente.
    ho provato a guardare sulle API ma non ho trovato nulla.

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

    Re: [JAVA] JTextField resettare on click

    Originariamente inviato da guguz
    in questo esempio ho messo che cliccando su una JTextField mi stampa sulla mia shell un messaggio, ma è possibile fare in modo che mi cancelli la stringa che ho messo di default?
    in modo tale che l'utente cliccando deve solo inserire il suo username/password evitando di cancellare la scritta esistente.
    Più che "al click", sarebbe più utile/valido "quando riceve il focus" (tieni presente che l'utente può anche usare il tab per "navigare" tra i componenti!). Quindi un FocusListener. E comunque a prescindere dall'evento, basta che invochi setText("") sul componente di testo, di cui chiaramente devi tenerti il reference da qualche parte o rintracciarlo dalla "sorgente" dell'evento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    7
    codice:
    import java.awt.*;
    
    import java.awt.event.*;
    
    import javax.swing.*;
    
    
    
    public class test extends JFrame{
    
    	boolean rstUtente=true;
    
    	boolean rstPassword=true;
    
    	JTextField utente;
    
    	JPasswordField password;
    
    
    
    	public test(){
    
    		super("test login");
    
    		utente=new JTextField("inserisci il nome utente");
    
    		JLabel lbu=new JLabel("Utente");
    
    		lbu.setLabelFor(utente);
    
    		password=new JPasswordField("password");
    
    		JLabel lbp=new JLabel("Password");		
    
    		lbp.setLabelFor(password);
    
    		JButton btn=new JButton("Accedi");
    
    		setLayout(new FlowLayout());
    
    		utente.addFocusListener(new FocusListener() {
    
    			public void focusGained(FocusEvent e) {
    
    				if(rstUtente){
    
    					utente.setText("");
    
    					rstUtente=false;
    
    				}
    
    			}
    
    			public void focusLost(FocusEvent e) {}
    
    		});
    
    		
    
    		password.addFocusListener(new FocusListener() {
    
    			public void focusGained(FocusEvent e) {
    
    				System.out.println("8==D");
    
    				if(rstPassword){
    
    					System.out.println("8=======D");
    
    					password.setText("");
    
    					rstPassword=false;
    
    				}
    
    			}
    
    			public void focusLost(FocusEvent e) {}
    
    		});
    
    
    
    		btn.addActionListener(new ActionListener(){
    
    			public void actionPerformed(ActionEvent e) {
    
    		    	System.out.println("click bottone");
    
    		    }
    
    		}); 
    
    		add(lbu);
    
    		add(utente);
    
    		add(lbp);
    
    		add(password);
    
    		add(btn);
    
    		pack();
    
    		setVisible(true);
    
    	}
    
    	public static void main(String[]args){
    
    		new test();
    
    	}
    
    }
    ho fatto una cosa del genere, però appena avvio il programma il cursore si posiziona direttamente sul primo JTextField eliminando la scritta...come mai?

  4. #4
    Originariamente inviato da guguz
    ho fatto una cosa del genere, però appena avvio il programma il cursore si posiziona direttamente sul primo JTextField eliminando la scritta...come mai?
    Devi spostare il focus su un altro componente.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    7
    ok!
    ho aggiunto:
    codice:
    btn.requestFocusInWindow();
    prima del
    codice:
    setVisible(true);
    e funziona!

    c'è un altro metodo per cambiare il focus iniziale?

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.