Для изменения цвета вы должны ввести FocusListener
, который устанавливает переднем плане setForeground()
. Если вы хотите иметь строку текущего содержимого JTextField
, вы можете достичь этого с помощью DocumentListener
до базового Document
.
Смотрите этот код в качестве примера (я использую синий и красный цвет и сохранить значение Текст tf
в String
содержания):
JTextField tf = new JTextFiedl();
tf.addFocusListener(new FocusListener()
{
@Override
public void focusGained(FocusEvent fe)
{
tf.setForeground(INACTIVE_COLOUR);
}
@Override
public void focusLost(FocusEvent fe)
{
tf.setForeground(ACTIVE_COLOUR);
}
});
Полный рабочий пример здесь:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TF
{
private final Color ACTIVE_COLOUR = Color.BLUE;
private final Color INACTIVE_COLOUR = Color.RED;
private String content; //text of the text field is stored here
private JTextField tf;
private JTextField lbl;
public TF()
{
JFrame mainFrame = new JFrame("Window");
tf = new JTextField("Hint");
lbl = new JTextField("click here to change focus");
tf.setForeground(ACTIVE_COLOUR);
setListeners();
mainFrame.add(tf, BorderLayout.NORTH);
mainFrame.add(lbl, BorderLayout.SOUTH);
mainFrame.pack();
mainFrame.setVisible(true);
}
private void setListeners()
{
tf.addFocusListener(new FocusListener()
{
@Override
public void focusGained(FocusEvent fe)
{
tf.setForeground(INACTIVE_COLOUR);
}
@Override
public void focusLost(FocusEvent fe)
{
tf.setForeground(ACTIVE_COLOUR);
}
});
tf.getDocument().addDocumentListener(new DocumentListener()
{
@Override
public void removeUpdate(DocumentEvent de)
{
content = tf.getText();
}
@Override
public void insertUpdate(DocumentEvent de)
{
content = tf.getText();
}
@Override
public void changedUpdate(DocumentEvent de)
{
content = tf.getText();
}
});
}
public static void main(String[] args)
{
TF tf = new TF();
}
}
Чтобы сохранить содержимое, написанное пользователем просто использовать 'GetText()' Чтобы изменить цвет шрифта, когда пользователь пишет просто использовать 'OnClick' событие и изменить цвет – SaintLike
Это может быть полезно: http://help.aliexpress.com/new_user_guide.html //stackoverflow.com/questions/10506789/how-to-display-faint-gray-ghost-text-in-a-jtextfield/10507193#10507193 –
Спасибо вам всем! – user2144555