更改 JTextField 启用的背景颜色

2023-12-02

我有一个问题JTextField背景颜色。如何在启用的文本字段中更改它(编辑时)?setBackground仅适用于禁用的文本字段。UIManager.put可以更改窗口中所有文本字段的背景,但我只想对其中一个文本字段执行此操作。


有多种方法可以实现此目的,但基本思想是,当字段获得焦点时,您想要将字段背景颜色设置为其他颜色,当它失去焦点时,您想要重置它......

FocusChange

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class FocusedField {

    public static void main(String[] args) {
        new FocusedField();
    }

    public FocusedField() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JTextField field1 = new JTextField(20);
                JTextField field2 = new JTextField(20);

                FocusListener highlighter = new FocusListener() {

                    @Override
                    public void focusGained(FocusEvent e) {
                        e.getComponent().setBackground(Color.GREEN);
                    }

                    @Override
                    public void focusLost(FocusEvent e) {
                        e.getComponent().setBackground(UIManager.getColor("TextField.background"));
                    }
                };

                field1.addFocusListener(highlighter);
                field2.addFocusListener(highlighter);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new GridBagLayout());
                GridBagConstraints gbc = new GridBagConstraints();
                gbc.insets = new Insets(4, 4, 4, 4);
                gbc.gridwidth = gbc.REMAINDER;
                frame.add(field1, gbc);
                frame.add(field2, gbc);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}

我很想编写一个简单的单例“管理器”,它允许您根据需要注册和取消注册字段。

您也许还可以通过附加一个来实现类似的目标PropertyChangeListener to the KeyboardFocusManager,这将允许您基本将此突出显示概念应用于任何程序中的所有字段,而无需更改任何代码,但这取决于您的要求

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 JTextField 启用的背景颜色 的相关文章

随机推荐

  • 在egrep中匹配As后跟相同数量的B

    假设我想匹配一个具有完全相同数量的字符 A 和 B 的模式 这样正好有 n 个 A 后跟 n 个 B 例如 可以匹配以下字符串 AB AABB AAABBB 另一方面 这些字符串无法匹配 BA AAABB AABBB ABAB 为了解决这个
  • SVN 提交未完成

    当我在 svn 中提交文件时 我经常遇到这样的情况 在传输完所有文件后 svn 将挂起 然后最终超时并出现错误svn E175012 Connection timed out 当我上传超过 20 个文件时 似乎会发生这种情况 我相信这是在所
  • C - 将字符串拆分为字符串数组

    我不完全确定如何在 C 中执行此操作 char curToken strtok string curToken ls l we will say I need a array of strings containing ls l and N
  • c++ static_assert 在“if constexpr 语句”的两个分支上均失败

    我试图在编译时确定特定类型是否属于类型标准 对 当我编译下面的代码时 两个分支 即 HERE1 和 HERE2 上的断言均失败 如果我删除 static asserts 并取消注释打印 我会得到我所期望的 这是 HERE1 的is pair
  • 使用三角形网格纹理,无需读/写图像文件

    这是上一个问题的后续 请参阅在javafx上为三角形网格中的各个三角形着色 我认为这本身就是另一个话题 有没有一种方法 使用javafx 可以让我不必实际将图像文件写入磁盘 或外部设备 来使用纹理 换句话说 我可以使用特定的纹理而不必使用图
  • 加载网页,执行其 JavaScript 并将生成的 HTML 转储到文件

    我需要加载一个网页 执行其 JavaScript 以及标签中包含的所有 js 文件 并将生成的 HTLM 转储到文件中 这需要在服务器上完成 我已经尝试过使用node js和zombie js 但它似乎太不成熟 无法在现实世界中工作 通常
  • C# 在特定情况下使用小数位格式化百分比

    在我正在构建的应用程序中 我需要按以下方式格式化百分比 00012 gt 0 01 0012 gt 0 12 012 gt 1 2 12 gt 12 1 12 gt 112 小于 1 的百分比应显示 2 位小数 任何 1 或大于 1 的值都
  • 动态加载数据到Gridview

    当我在 gridview 上工作时 我遇到了以下问题 任何帮助将不胜感激 当我将数据加载到 gridview 时 它仅加载数组的前 3 个项目 但还有 18 个项目需要加载 为什么它不加载其他 15 个项目 Log i 显示了我的 LogC
  • 使用 .AddIdentityServerJwt() 时,.NET Core Razor Pages 应用程序的身份验证不适用于没有“/Identity”路由的视图

    使用 NET Core 3 1 框架 我尝试使用以下设置配置 Web 平台 Razor Pages 应用程序 充当平台的登陆页面 具有平台广告 cookie 同意 隐私政策 联系人以及身份附带的页面 例如登录 注册 管理帐户 等功能 页面
  • 如何在 htaccess 中的 #ancors 和 ?queries 之前从 ulrs 中删除 *.php、index.php 和尾部斜杠

    我无法为我的问题找到令人满意的答案 已经上网冲浪三天了 但没有发现任何实际有效的东西 我的网站结构如下 data controllers helpers partials layouts images javascripts stylesh
  • Scrapy 获取网站时出现错误“DNS 查找失败”

    我正在尝试使用 Scrapy 获取 DNS 查找失败 网站上的所有链接 问题是 每个没有任何错误的网站都打印在解析对象方法 但当 url 返回 DNS 查找失败时 回调parse obj 没有被调用 我想获取所有出现错误的域 DNS 查找失
  • 使用 Python ssl 库时“SSLError: [SSL] PEM lib (_ssl.c:2532)”是什么意思?

    我正在尝试使用 Python 3 asyncio 模块连接到另一方并收到此错误 36 sslcontext ssl SSLContext ssl PROTOCOL TLSv1 gt 37 sslcontext load cert chain
  • 查询返回特定值在字符串中出现的次数?

    好吧 我有两张桌子 表 1 具有参考数字列 A 第二列具有随机性字符串 B Table2 只有一列 其中的值列表可能位于也可能不位于 Table1 的字符串中 dbo Tbl 1 A B 24 BLUE KITTEN WHITE PINK
  • TornadoFX 未解决的 JavaFx

    我想创建一个应该是桌面应用程序的新项目 为此 我选择了 Kotlin 语言和 TornadoFX 框架 我已经安装了TornadoFX插件并创建了一个新的 Ttornadofx gradle project Intellij 的基本设置是成
  • 非动态自定义 HTTP 标头

    根据这个Ogg 媒体上的 Mozilla 文章 媒体在浏览器中可以更加无缝地工作X Content Duration标题 给出该片段的长度 以秒为单位 假设我将该长度存储在某个地方 当然在数据库中 也许也在文件名本身中 video file
  • 数据库陷入“正在恢复”状态

    我备份了一个数据库 BACKUP DATABASE MyDatabase TO DISK MyDatabase bak WITH INIT overwrite existing 然后尝试恢复它 RESTORE DATABASE MyData
  • 我想处理ios中的通话状态

    我想获取电话的状态 无论是已拨 已连接还是已断开 我尝试了自己 但无法获得状态 NSString phoneNumber telprompt stringByAppendingString 9723539389 UIApplication
  • 剧作家:可以为 1 次测试指定工作人员数量或浏览器吗?

    我的套件设置为使用 3 个工作线程 2 个桌面和 2 个移动设备 针对 4 个浏览器运行 我有一个测试 我需要要么不并行运行 要么限制只在一个桌面浏览器中运行 那可能吗 我需要这样做的原因是测试正在触发一个可能需要几秒钟才能运行的事件 运行
  • 通过 gmail 在 CodeIgniter 中发送电子邮件

    我正在按照教程使用 gmail 发送电子邮件 但是我得到的页面只是挂起 甚至没有加载错误 我正在使用 MAMP 所以这可能是它不起作用的原因 class Email extends CI Controller public function
  • 更改 JTextField 启用的背景颜色

    我有一个问题JTextField背景颜色 如何在启用的文本字段中更改它 编辑时 setBackground仅适用于禁用的文本字段 UIManager put可以更改窗口中所有文本字段的背景 但我只想对其中一个文本字段执行此操作 有多种方法可