当前位置: 首页 > 知识库问答 >
问题:

自动更新JTextField的背景颜色

云胤
2023-03-14

我制作了一个JTextField,我希望它的背景是红色的,当它没有字符时,一旦一个字符被写入,就会自动变为绿色。

我试过这个密码

textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);

但它不会自动更新它。

谢谢

共有2个答案

吕华彩
2023-03-14
 import java.awt.*;
 import javax.swing.*;
class m extends  JFrame
{
JTextField t;
public m()
{
    setVisible(true);
    setSize(1000,1000);
    setLayout(null);
    t =new JTextField();
    t.setBounds(100,100,100,100);
    add(t);
    Timer t1=new Timer(100,new ActionListener(){
    public void actionPerformed(ActionEvent e)
        {
        if(t.getText().equals(""))
        {
            t.setBackground(Color.red);
        }
        else
            { 
        t.setBackground(Color.GREEN);
        }

        }
            }
        );
        t1.start();

}

public static void main (String[] args) {
    new m();
    }
  }
刘焱
2023-03-14

你应该添加文档监听器

textfield.getDocument().addDocumentListener(this);

@Override
    public void insertUpdate(DocumentEvent e) 
    {
        textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);
    }

    @Override
    public void removeUpdate(DocumentEvent e) 
    {
        textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);
    }

    @Override
    public void changedUpdate(DocumentEvent e) 
    {
        textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);    
    }

还可以尝试设置Textfield的不透明属性。

textField1.setOpaque(True)
 类似资料:
  • 我正在使用RangeSeekBar为3种情况设置一些值(即绿色=OK,琥珀色=警告,红色=撤离)...我正在使用xml绘图来设置背景 我知道我可以通过编程更改渐变,但如何缩小起始颜色并增加结束颜色?有人能解决这个问题吗? 谢谢

  • 问题内容: 我对背景色有疑问。如何在启用的文本字段中进行更改(编辑时)?仅适用于禁用的文本字段。可以更改窗口中所有文本字段的背景,但我只想对其中一个进行更改。 问题答案: 好的,这是我需要的:

  • 问题内容: 有什么方法可以更改RibbonApplicationMenuEntryPrimary(Flamingo)的背景颜色吗? 我看了看它的javadoc,但找不到方法。 问题答案: 1)请注意,我已检查API;从开始,有很多导入和扩展,它们来自许多不同的方法(这里是我尝试覆盖MetalButtonUI的尝试)。 2)也许更改内置颜色主题会很容易,但是我不建议这样做。 3)我不是Flaming

  • 问题内容: 我有这个课: 问题是当我在JList中选择一个单元格时,我的背景不会变成红色。setText部分有效,但是我无法弄清楚为什么它不会更改单元格的背景颜色。任何人都有任何想法,谢谢! 问题答案: 主要问题是标签默认情况下是不透明的,因此您需要使标签不透明才能绘制背景。 但是您不需要为此创建自定义渲染器。默认渲染器是不透明的。您所需要做的就是设置列表的选择背景属性: 如果您尝试创建一个渲染器

  • 我有一个带有半径和笔划的CardView,但当我以编程方式更改CardView背景时,半径和笔划将丢失,我希望新颜色保留在笔划内。 这是我的cardview xml 这里是我换颜色的地方:

  • 在超文本标记语言中,我什么时候使用颜色,背景颜色和背景标签有什么区别? 有什么区别?