Estabilizando JTextArea tem como?

4 respostas
renatorudolf

Boa noite pessoal,

Tenho um JTextArea e na medida q vou escrevendo nele, ele vai aumentando de tamanho.
Tem algum jeito de estabilizar meu JTextArea ?

abc

4 Respostas

ViniGodoy
  1. Coloque-o num gerenciador de layout que fixe um tamanho (centro de um BorderLayout, num GridLayout, num GridBagLayout ou no MigLayout);
  2. Coloque-o sobre um JScrollPane;
renatorudolf

Entao viny Godoy, estou utilizando o gerenciador MigLayout.
Achei o erro, valew.

renatorudolf

Consigo limitar a quantidade de caracteres num JTextArea ?

Ironlynx
Consigo limitar a quantidade de caracteres num JTextArea ?
Consegue.Um exemplo + ou -:
import javax.swing.JTextArea;   
import java.awt.Color;
import javax.swing.*;
import java.awt.event.*;   
  
public class LimitedTextArea extends JTextArea{      
	private static final long serialVersionUID = 95846263197821771L;
	private int maxLength=0;   
  
    public LimitedTextArea(int rows,int columns,int maxLength){   
        super(rows,columns);   
        this.maxLength = maxLength;   
        this.addKeyListener(new LimitedKeyListener());
        this.setLineWrap(true);//ativa quebra de linha   
        this.setWrapStyleWord(true); //só quebra palavras inteiras
        this.setBackground(Color.WHITE);
        this.setForeground(Color.BLUE);
        this.setToolTipText("Digitar no máximo 160 caracteres!");
        
        Action[] actions = this.getActions();  
        for( Action currentAction : actions ){  
         if( currentAction.toString().contains("InsertBreakAction") ){  
                currentAction.setEnabled( false );     
            }  
         }  
        
    }   
       
    public void setMaxLength(int maxLength){   
        this.maxLength= maxLength;   
        update();   
    }   
       
    private void update(){   
        if (getText().length()>maxLength){   
            setText(getText().substring(0,maxLength));   
            setCaretPosition(maxLength);   
        }   
    }   
       
    public void setText(String arg0){   
        super.setText(arg0);   
        update();   
    }   
       
    public void paste(){   
        super.paste();   
        update();   
    }   
       
    //Classes Internas   
    private class LimitedKeyListener extends KeyAdapter{   
        private boolean backspace= false;   
           
        public void keyPressed(KeyEvent e){   
            backspace=(e.getKeyCode()==8);   
        }   
           
        public void keyTyped(KeyEvent e){   
            if (!backspace&&getText().length()>maxLength-1){   
                e.consume();   
            }   
        }   
    }   
}
Criado 15 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 4
Participantes 3