gpt4 book ai didi

java - JTextField:更改前景色并保存内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:03 25 4
gpt4 key购买 nike

我有一个包含一些 JTextFields 的框架,供用户插入一些值。当窗口打开时,文本字段以灰色写入用户应在该容器中写入的内容,例如“以秒为单位的值”...

当用户开始在 JTextFields 中书写时,我想将这些字母的颜色(我认为是前景)更改为深色,并保存到 String 用户写了什么。

最佳答案

对于颜色变化,您必须实现一个 FocusListener,它使用 setForeground() 设置前景。如果您想获得 JTextField 当前内容的字符串,您可以使用底层 DocumentDocumentListener 来实现。

以这段代码为例(我使用蓝色和红色作为颜色,并将 tf 的 Text 值存储在 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();
}
}

关于java - JTextField:更改前景色并保存内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com