我有一个框架,其中包含一些JTextFields
,用户可以在其中插入一些值。
当窗口打开时,文本字段的灰色背景中已经写入了用户应该在该容器中写什么,例如“秒值”...
我希望在用户开始在JTextFields
中输入时将这些字母(我认为是前景)的颜色更改为深色,并将用户输入的内容保存到String
中。
我有一个框架,其中包含一些JTextFields
,用户可以在其中插入一些值。
当窗口打开时,文本字段的灰色背景中已经写入了用户应该在该容器中写什么,例如“秒值”...
我希望在用户开始在JTextFields
中输入时将这些字母(我认为是前景)的颜色更改为深色,并将用户输入的内容保存到String
中。
FocusListener
,并使用 setForeground()
来设置前景色。如果你想获取 JTextField
当前内容的字符串,可以通过向底层的 Document
添加 DocumentListener
实现。
以下代码作为示例(我使用蓝色和红色作为颜色,并将 tf
的文本值存储在字符串变量 content
中):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
事件并更改颜色。 - SaintLikeFocusListener
而不是OnClickListener
,因为这样你可以轻松处理失去焦点的事件。 - Daniel Lerps