Partage
  • Partager sur Facebook
  • Partager sur Twitter

pas de curseur dans le textfield

    9 juillet 2022 à 12:22:27

    bonjour

    dans le code ci dessous,si je le lance, j ai le curseur qui apparait directement dans le jtextfield;

    import java.awt.Color;
    import java.awt.Font;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    public class principal {
    
    	public static void main(String[] args) {
    		JTextField mot=new JTextField();
    		JPanel panel= new JPanel();
    	
    		JLabel label = new JLabel("aa", JLabel.CENTER);
    		Font f14=new Font("Arial", Font.BOLD, 20);
    	    label.setFont(f14);
    		 JFrame pan = new JFrame("saisie rapide");
       	 
       	 pan.setAlwaysOnTop( true );//pour que la fenetre s affiche devant le reste
    	   pan.setContentPane(panel);
    	   pan.setSize(580, 400);// taille de la fenetre
    	   pan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    pan.setLocationRelativeTo(null);
    	    Font gt=new Font("Arial", Font.BOLD, 20);
    	    label.setBounds(20,200, 50, 60);
    		 mot.setFont(gt);//caractristiques case texte entree
    		mot.setBounds(250,200, 100,60);
    	   panel.setLayout(null);
    	   panel.add(label);
    	   panel.add(mot);
    	   
    	  
    	   pan.setVisible(true);
    
    	}
    
    }
    

    par contre si je rajoute un bouton avec cet autre code ,il faut cliquer sur le j textfield  pour avoir le curseur;or moi je voudrais pouvoir rentrer une valeur directement sans cliquer

    package textautosaisieforum;
    
    import java.awt.Color;
    import java.awt.Font;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    public class principal {
    
    	public static void main(String[] args) {
    		JTextField mot=new JTextField();
    		JPanel panel= new JPanel();
    		JButton bouton1 = new JButton("ici");
    	 Font f=new Font("Arial", Font.BOLD, 20);
    		bouton1.setFont(f);
    					  
    		bouton1.setBackground(Color.gray);
    		 bouton1.setForeground(Color.black);
    		bouton1.setBounds(15, 80, 80, 40); //positionnement du bouton en partant du coin gauche x horiz y verti v long ww larg
    		 panel.add(bouton1);
    	
    		JLabel label = new JLabel("aa", JLabel.CENTER);
    		Font f14=new Font("Arial", Font.BOLD, 20);
    	    label.setFont(f14);
    		 JFrame pan = new JFrame("saisie rapide");
       	 
       	 pan.setAlwaysOnTop( true );//pour que la fenetre s affiche devant le reste
    	   pan.setContentPane(panel);
    	   pan.setSize(580, 400);// taille de la fenetre
    	   pan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    pan.setLocationRelativeTo(null);
    	    Font gt=new Font("Arial", Font.BOLD, 20);
    	    label.setBounds(20,200, 50, 60);
    		 mot.setFont(gt);//caractristiques case texte entree
    		mot.setBounds(250,200, 100,60);
    	   panel.setLayout(null);
    	   panel.add(label);
    	   panel.add(mot);
    	   
    	  
    	   pan.setVisible(true);
    
    	}
    
    }

    comment faire d apres vous

    merci


    • Partager sur Facebook
    • Partager sur Twitter
      9 juillet 2022 à 13:50:29

      Mettre le focus sur le textfield probablement.
      • Partager sur Facebook
      • Partager sur Twitter
        9 juillet 2022 à 19:00:00

        merci PXL,mais j avais deja essayé sans succes,peut etre car je m en sert pas comme il faut;si c est le cas ,ou est mon erreur dans le code ci dessous

        package textautosaisieforum;
        
        import java.awt.Color;
        import java.awt.Font;
        
        import javax.swing.JButton;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JPanel;
        import javax.swing.JTextField;
        
        public class principal {
        
        	public static void main(String[] args) {
        		JTextField mot=new JTextField();
        		JPanel panel= new JPanel();
        		JButton bouton1 = new JButton("ici");
        	 Font f=new Font("Arial", Font.BOLD, 20);
        		bouton1.setFont(f);
        					  
        		bouton1.setBackground(Color.gray);
        		 bouton1.setForeground(Color.black);
        		bouton1.setBounds(15, 80, 80, 40); //positionnement du bouton en partant du coin gauche x horiz y verti v long ww larg
        		 panel.add(bouton1);
        	
        		JLabel label = new JLabel("aa", JLabel.CENTER);
        		Font f14=new Font("Arial", Font.BOLD, 20);
        	    label.setFont(f14);
        		 JFrame pan = new JFrame("saisie rapide");
           	 
           	 pan.setAlwaysOnTop( true );//pour que la fenetre s affiche devant le reste
        	   pan.setContentPane(panel);
        	   pan.setSize(580, 400);// taille de la fenetre
        	   pan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        	    pan.setLocationRelativeTo(null);
        	    Font gt=new Font("Arial", Font.BOLD, 20);
        	    label.setBounds(20,200, 50, 60);
        		 mot.setFont(gt);//caractristiques case texte entree
        		mot.setBounds(250,200, 100,60);
        	   panel.setLayout(null);
        	   panel.add(label);
        	   panel.add(mot);
        	   
        	 mot.requestFocus();//c est pas mieux,mais est ce que je l utilise mal
        	   // mot. requestFocusInWindow();//j ai aussi essayé ces 3 lignes a tour de role sans succes
        		 // mot.grabFocus();		
        		 //  mot.setFocusable(true);
        	   pan.setVisible(true);
        
        	}
        
        }
        

        et en plus ,pourquoi il y a besoin de faire un truc comme ca quand je rajoute un bouton ,alors que sans,ca marche

        merci

        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2022 à 10:08:37

          Ca ne marche pas avec un bouton en plus parce que c'est lui qui prend le focus.

          Swing, ainsi que tout autre librairie graphique, doit être considérée comme réactive a des évènements plutôt que par une suite d'instructions,

          ce faisant ca fonctionnera(il y a peut être plus élégant, mais je suis plutôt javafx, swing, je ne connais pas trop):

          pan.addWindowListener(new WindowAdapter() {
          public void windowOpened(WindowEvent e){
          mot.requestFocus();
          }
          });
          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2022 à 18:04:34

            merci

            bon,ca marche quand je crée la fenetre,mais quand je rajoute un actionlistener sur le bouton 1,mon cursueur disparait,surement parce qu il reprend le focus;j ai essayé de palcer la reprise du focus par letextfield un peu partout,y compris dans l action listener,ca ne change plus

            package textautosaisieforum;
            
            import java.awt.Color;
            import java.awt.Font;
            import java.awt.event.ActionEvent;
            import java.awt.event.ActionListener;
            import java.awt.event.WindowAdapter;
            import java.awt.event.WindowEvent;
            import java.awt.event.WindowListener;
            
            import javax.swing.JButton;
            import javax.swing.JFrame;
            import javax.swing.JLabel;
            import javax.swing.JPanel;
            import javax.swing.JTextField;
            
            public class principal {
            
            	public static void main(String[] args) {
            		JTextField mot=new JTextField();
            		JPanel panel= new JPanel();
            		JButton bouton1 = new JButton("ici");
            	 Font f=new Font("Arial", Font.BOLD, 20);
            		bouton1.setFont(f);
            					  
            		bouton1.setBackground(Color.gray);
            		 bouton1.setForeground(Color.black);
            		bouton1.setBounds(15, 80, 80, 40); //positionnement du bouton en partant du coin gauche x horiz y verti v long ww larg
            		 panel.add(bouton1);
            		 bouton1.addActionListener(new ActionListener() {//si je rajoute action listener sur le bouton
            			 //je reperd le curseur
            			    public void actionPerformed(ActionEvent ae) {
            
            			    	 
            			    }
            		 });
            		JLabel label = new JLabel("aa", JLabel.CENTER);
            		Font f14=new Font("Arial", Font.BOLD, 20);
            	    label.setFont(f14);
            		 JFrame pan = new JFrame("saisie rapide");
            		
               	 
               	 pan.setAlwaysOnTop( true );//pour que la fenetre s affiche devant le reste
            	   pan.setContentPane(panel);
            	   pan.setSize(580, 400);// taille de la fenetre
            	   pan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            	    pan.setLocationRelativeTo(null);
            	    Font gt=new Font("Arial", Font.BOLD, 20);
            	    label.setBounds(20,200, 50, 60);
            		 mot.setFont(gt);//caractristiques case texte entree
            		mot.setBounds(250,200, 100,60);
            	   panel.setLayout(null);
            	   panel.add(label);
            	   panel.add(mot);
            	   
            	   pan.addWindowListener((WindowListener) new WindowAdapter() {//avec ca j ai le cursueur a la creation de la fenetre
            		   //mais quand on clic sur le bouton 1,le curseur disparait
            		   public void windowOpened(WindowEvent e){
            		   mot.requestFocus();
            		       }
            		   });
            	   pan.setVisible(true);
            
            	}
            
            }
            

            merci si vous avez une solution a me proposer

            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2022 à 19:38:27

              Ben oui quand on clic sur quelque chose focusable ca prend le focus, c'est le comportement par défaut, si tu veux pas, soit tu met les éléments comme non focusable, soit tu rediriges le focus quand un event de prise de focus est détecte.
              • Partager sur Facebook
              • Partager sur Twitter

              pas de curseur dans le textfield

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown