JFormattedTextField não Recebe o Foco

8 respostas
C

Bom dia pessoal,

Depois de exaustivas pesquisas e nenhum sucesso eu resolvi pedir a ajuda de vocês. O problema é o seguinte: Utilizo o NetBeans 6.1 e num programa que estou desenvolvendo eu coloquei num JFrame um Jpanel, e dentro dele um JFormattedTextField (Formatado como “######”). Já havia notado que na inicialização do frame ele não recebia foco mas não me importei muito naquele momento pois, pelo fato dos outros campos ficarem bloqueados para a edição, o foco acabava “caindo” no campo formatado. Pois bem, depois que eu faço a gravação dos dados e passo o foco através do RequestFocus() para esse Componente o foco simplesmente some. Alguém poderia me ajudar?

Desde já agradeço muito.

8 Respostas

C

Alguém pode me ajudar?

Valeu

C

Alguma sugestão.

Guevara

Acho que se vc postasse o código iria ser mais fácil descobrir o motivo.

C

Qual parte do código vc sugere que eu post. Eu não coloquei porque não acho que seja simplesmente um requestFocus() que não funciona. Aceito sugestões.

WendersonLP

coloque a class que você está utilizando, o JFram, JPanel e JFormattedTextField

rodrigo_rosalin
JFormattedTextField.setFocusLostBehavior(JFormattedTextField.COMMIT); // tenta inicializar o componente com este comando
JFormattedTextField.requestFocus(); //depois chame normalmente o requestFocus()

verifique também se o componente não esta setado para Enabled(false)

WendersonLP

olha só, eu fiz um pequeno programa aqui,
veja se você consegue tirar alguma coisa dele, tá bom?

import java.text.*;
 import javax.swing.*;
 import javax.swing.text.*;
 import java.awt.*;
 import java.awt.event.*;
 

public class MyFormatted extends JFrame {
        
    private JFormattedTextField formatter;
    private MaskFormatter mask;
    private JButton button1, button2;
    private JLabel label1, label2;
    private JPanel panel;
    
    public MyFormatted(){
    	super( "My Formatter" );
    	
    	panel = new JPanel();
    	
    	label1 = new JLabel( "Tytep something: " );
    	label2 = new JLabel( "          " );
    	
    	try{
    		mask = new MaskFormatter( "********************" );
    	}
    	catch( ParseException e ){}
    	
    	formatter = new JFormattedTextField( mask );
    	formatter.requestFocus();
    	
    	button1 = new JButton( "Clear" );
    	button1.addActionListener( 
    		new ActionListener(){
    			public void actionPerformed( ActionEvent e ){
    				label2.setText( " get: " + formatter.getText() );
    				formatter.setText( "" );
    				formatter.requestFocus();
    			}
    		}
    	);
    	
    	button2 = new JButton( "Exit" );    	
    	button2.addActionListener(
    		new ActionListener(){
    			public void actionPerformed( ActionEvent e ){
    				System.exit( 0 );
    			}
    		}
    	);
    	panel.add( label1 );
    	panel.add( formatter );
    	panel.add( button1 );
    	panel.add( label2 );
    	panel.add( button2 );
    	
    	getContentPane().add( panel );
    	getContentPane().setVisible( true );
    	
    	
    }
    	
    public static void main(String[] args) {
        MyFormatted app = new MyFormatted();
        app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        app.pack();
        app.show();
    }
}
M

Uma sugestão: na linha 67, use o método setVisible(true) ao invés de show() que está depreciado.

Criado 20 de junho de 2009
Ultima resposta 23 de jun. de 2009
Respostas 8
Participantes 5