Mudar o cursor

Tem como mudar o curso de uma JTextFeld, colocar ele de uma forma que fique mais visivel?

Desculpe mas não entendi ?

Tem sim.

Se você quer mudar o cursor do mouse, utilize o método setCursor(Cursor c) que o jTextField herda da classe componente.

Você pode, por exemplo, colocar um cursor já pré-definido. Um exemplo é:

jTextField1.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

Este código fará que o cursor do mouse fique como o default (seta) quando estiver encima do textfield.

Para maiores informações olhe a documentação on-line:

http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Component.html#setCursor(java.awt.Cursor)

Caso você queira mudar o cursor de texto dentro do jTextField (caret), você deve utilzar o método setCaret(Caret c), ou set caretColor(Color c) herdados da classe JTextComponent.

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/JTextComponent.html

Espero ter ajudado…

Até mais,

GH

Obrigado pela dica vou tentar usar o setCaret(), mas deixa eu explicar melhor a minha duvida.

Minha ideia trocar o cursor que fica piscando dentro da JTextField, eu preciso usuar um curso que chame mais a atenção.

O que eu preciso acho que realmente e o setCaret() mas eu não estou conseguindo usar. Aquem sabe como usar?

Cara, tenta criar uma classe que “extende” DefaultCaret. Você deve sobrescrever os métodos paint e damage.

Um exemplo de um cursor BEM visível:

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
/**
 *
 * @author Guilherme Hermeto
 */
public class MeuCursor extends DefaultCaret{
    
    /** Creates a new instance of MeuCursor */
    public MeuCursor() {
    }

    int charLargura = 0;
    int charAltura = 0;

    public void paint(Graphics g)
    {
        try {
            JTextComponent c = getComponent();
            int dot = getDot();
            Rectangle r = c.modelToView(dot);
            g.setColor(c.getCaretColor());
            g.drawRect( r.x, r.y, charLargura, charAltura );
            Color temp= g.getColor();
            g.setColor(Color.MAGENTA);
            g.fillRect(r.x, r.y, charLargura, charAltura);
            g.setColor(temp);
            
        }
        catch (BadLocationException e) {
        }
    }
    
    public synchronized void damage(Rectangle r)
    {
    
    Font f = getComponent().getFont();
    FontMetrics fm = getComponent().getFontMetrics( f );
    charLargura = fm.charWidth( 'k' );
    charAltura= fm.getHeight();

    x = r.x - 2;
    y = r.y - 2;
    width = charLargura + 4;
    height = charAltura + 4;
    repaint();
    }
    
    
}

Depois você pode usar:

textField.setCaret(new MeuCursor());

Para maiores informações olhe:

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/DefaultCaret.html

Até mais,

GH

Alguem sabe se tem como colocar um dos cursores do Windows que tem a extensao “ani” ou “cur”?

Ficaria grato se alguem pudesse me informar, pois eu nao estou conseguindo :smiley:

Já tentou no construtor carregar uma imagem, armazená-la em um campo e usar o método drawImage. Algo como:

public class MeuCursor extends DefaultCaret{
    
    private Image imagem;

    public MeuCursor() {
        imagem = new ImageIcon("caminho").getImage();
    }

    public void paint(Graphics g)
    {
        try {
            .........
            g.drawImage(imagem, posX, posY, largura, altura, null);
            
        }
        catch (BadLocationException e) {
        }
    }
    
......    
    
}