Problemas com JFrame!

3 respostas
M

Olá pessoal, estou de volta e com uma nova dúvida …

Tô fazendo um arquivo com Swing, ele está quase completo e só precisa de alguns ajustes … e preciso de ajuda …

1 - Eu quero centralizar o JFrame no centro da tela …
Problemas - Eu consegui alguns métodos na classe Toolkit - awt - que retorna a largura da tela e também retorna sua altura, ambas como double. Mas quando vou usar a expressão para centralizar o JFrame,
" x = ( largura_da_tela - largura_do_frame ) / 2 " e " y = ( altura_da_tela - altura_do_frame ) / 2 ", ambas como valor resultante em inteiro, pois o método que serve para “setar” a localização do frame, setLocation( x, y ), aceita somente argumentos inteiro. Mesmo eu mudando, fazendo coerção ou convertendo as dimensões da tela( double )para variáveis inteiras ocorre erro, e variáveis aleatórias ( que foram sempre inteiras ), o método setLocation aceita normalmente. Quando coloco os valores que retorna o valor da tela eles requerem que a variável inteira seja static e quando coloco static acusa um erro que as variáveis que retornam os valores da tela não podem ser referenciadas em membros static. O que eu faço ?

2 - Quero limitar o JTextField …
Problemas - não conheço nenhum método que faça isso, só tenho a idéia de que posso o KeyListener e o método getKeyChar() para retornar o número de caracteres pressionados e guardar numa variável e ao exceder o número de caracteres, ocorrer um consumo do método ( consume() ) . O que devo fazer, procurar um métodos que faça isso pra mim ( a melhor saída ) ou utilizar esse algoritmo que consumirá mais da minha memória( tamanho de arquivo ) e estarei “reinventando a roda” porque imagino que exista esse método ?

3 Respostas

Paulo_Silveira

sobre o TextField, o Gilmar acabou de dar a solucao passo a passo aqui nesse Thread

http://www.guj.com.br/forum/viewtopic.php?t=447

C

Centraliza um JFrame na tela :

public void centralizeFrame()
    {
        int x,y;
        Rectangle scr  = this.getGraphicsConfiguration().getBounds();
        Rectangle form = this.getBounds();
        x = (int) ( scr.getWidth() - form.getWidth() ) / 2;
        y = (int) ( scr.getHeight()- form.getHeight()) / 2;
        this.setLocation( x , y );
    }
"this" é uma subclasse de JFrame.

----------8<-------------------------------------------------------------------

Solução ( simples ) para limitar o tamanho do JTextField em caracteres,
é claro que é só um exemplo, pois a classe final deve ser mais sofisticada.

public class myTextField extends JTextField {
     int maxSize = -1;

     public myTextField(int cols) {
         super(cols);
     }

     public void setMaxWidth( int max )
     {
          maxSize = max;
     }

     protected Document createDefaultModel() {
 	      return new myOwnDocument();
     }
 
     static class UpperCaseDocument extends PlainDocument {
         public void insertString(int offs, String str, AttributeSet a) 
 	          throws BadLocationException 
         {
 
 	          if ( maxSize != -1   &&  
                               this.getText().lenght() > maxSize )
                          {
 		      return;
 	          }
 	          super.insertString(offs, str , a);
         }
     }
 }
Espero que ajude.

[]'s
Claudio Gualberto.

L

Para centralizar uma JFrame no centro da tela:

setLocationRelativeTo( null );

:wink:

Criado 1 de novembro de 2002
Ultima resposta 17 de set. de 2007
Respostas 3
Participantes 4