Qdo isso acontece no meu formulario, e eu trago os dados preenchidos ja do banco, fica visivel a parte final do texto… eu queria que a parte inicial do texto ficasse visivel…
como faço isso?
Qdo isso acontece no meu formulario, e eu trago os dados preenchidos ja do banco, fica visivel a parte final do texto… eu queria que a parte inicial do texto ficasse visivel…
como faço isso?
setScrollOffset()
não tenho certeza mas acho q é isso.
nha… funfou mas só se eu setar isso DEPOIS que o texto ja tá lá… =(
axei que tinha como deixar setado e qqer texto que entrasse ia obedecer isso…
vou ter que estender JTextField e alterar o evento de qdo o conteudo do campo é alterado, pra fazer esse alinhamento depois?
:roll:
cria um listener… ou então sai colando o método onde tiver acesso ao seu jTextfField
ixi… copy&pase nem rola senao todo carregamento de dados no form vai ser isso =/… vou ver aqui qual listener se encaixa…
pra quem quiser que seu TextField exiba sempre o inicio do texto ( e nao o final, default)… ta aqui um comportamento que fica bom:
Extenda JTextField… faça sua classe implementar PropertyChangeListener para alinhar o texto no inicio qdo mudar o valor ( mudanca de foco nao fica legal… negocio e capturar a mudanca de valor do conteudo)…
Tem um porém: qdo vc alterar o conteudo do campo num setText(), o evento nao é disparado… pra isso, sobrescrevi o setText() na minha classe, adicionando a instrução:
public void setText( String string ) {
super.setText( string );
[b]this.setCaretPosition( 0 );[/b]
}
segue abaixo o codigo da classe:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.BorderFactory;
import javax.swing.JTextField;
import javax.swing.JFormattedTextField;
import javax.swing.border.Border;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
// public class SpdField extends JFormattedTextField implements PropertyChangeListener, FocusListener {
public class SpdField extends JFormattedTextField implements PropertyChangeListener {
// private static Color defaultBackground = Color.WHITE;
// private static Color focusedBackground = new Color ( 248, 248, 233 );
// private static Border defaultBorder = BorderFactory.createLineBorder (Color.DARK_GRAY);
// private static Border focusedBorder = BorderFactory.createLineBorder(Color.DARK_GRAY, 1);
private static final long serialVersionUID = 1L;
public SpdField() {
setFont(Fonte.getFontPadrao());
addPropertyChangeListener( this );
// addFocusListener( this );
}
public SpdField(int cols) {
setFont(Fonte.getFontPadrao());
addPropertyChangeListener( this );
// addFocusListener( this );
}
// public void focusGained(FocusEvent e) {
// defaultBackground = getBackground();
// defaultBorder = getBorder();
// setBackground (focusedBackground);
// setBorder(focusedBorder);
// }
//
// public void focusLost(FocusEvent e) {
// setBackground (defaultBackground);
// setBorder(defaultBorder);
// }
public void setText( String string ) {
super.setText( string );
this.setCaretPosition( 0 );
}
protected Document createDefaultModel() {
return new UpperCaseDocument();
}
static class UpperCaseDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
public void propertyChange(PropertyChangeEvent e) {
if ( e.getPropertyName().equalsIgnoreCase("value")) {
setScrollOffset( 0 );
}
}
}