如何禁用 JButton 而不隐藏其标签?

2024-04-03

我正在使用 netbeans IDE 在 Java 中开发一个项目,我需要禁用特定的 JButton。我为此使用以下代码。

IssuBtn.setEnabled(false);

但禁用后,它不会在 JButton 上显示文本。如何将该文本保留在 JButton 上?


该实验提出的一个答案是“使用非金属的 PLAF”。

import java.awt.*;
import javax.swing.*;

class LookOfDisabledButton {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new BorderLayout(3,3));
                JPanel pEnabled = new JPanel(new GridLayout(1,0,2,2));
                pEnabled.setBackground(Color.green);
                gui.add(pEnabled, BorderLayout.NORTH);

                JPanel pDisabled = new JPanel(new GridLayout(1,0,2,2));
                pDisabled.setBackground(Color.red);
                gui.add(pDisabled, BorderLayout.SOUTH);

                UIManager.LookAndFeelInfo[] plafs = 
                    UIManager.getInstalledLookAndFeels();
                for (UIManager.LookAndFeelInfo plafInfo : plafs) {
                    try {
                        UIManager.setLookAndFeel(plafInfo.getClassName());
                        JButton bEnabled = new JButton(plafInfo.getName());
                        pEnabled.add(bEnabled);
                        JButton bDisabled = new JButton(plafInfo.getName());
                        bDisabled.setEnabled(false);
                        pDisabled.add(bDisabled);
                    } catch(Exception e) {
                        e.printStackTrace();
                    }
                }

                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}

或者,调整中的值UIManager.

import java.awt.*;
import javax.swing.*;

class LookOfDisabledButton {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new BorderLayout(3,3));
                JPanel pEnabled = new JPanel(new GridLayout(1,0,2,2));
                pEnabled.setBackground(Color.green);
                gui.add(pEnabled, BorderLayout.NORTH);

                JPanel pDisabled = new JPanel(new GridLayout(1,0,2,2));
                pDisabled.setBackground(Color.red);
                gui.add(pDisabled, BorderLayout.SOUTH);

                // tweak the Color of the Metal disabled button
                UIManager.put("Button.disabledText", new Color(40,40,255));

                UIManager.LookAndFeelInfo[] plafs = 
                    UIManager.getInstalledLookAndFeels();
                for (UIManager.LookAndFeelInfo plafInfo : plafs) {
                    try {
                        UIManager.setLookAndFeel(plafInfo.getClassName());
                        JButton bEnabled = new JButton(plafInfo.getName());
                        pEnabled.add(bEnabled);
                        JButton bDisabled = new JButton(plafInfo.getName());
                        bDisabled.setEnabled(false);
                        pDisabled.add(bDisabled);
                    } catch(Exception e) {
                        e.printStackTrace();
                    }
                }

                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}

正如克利奥帕特拉指出的那样..

它不是一个解决方案,但可能是一个指向搜索解决方案方向的指针

其中“它”就是我的答案。事实上,我怀疑她的评论找到了真正的原因:

仅猜测:这是由于违反了“one-plaf-only”规则。

我赞同这个猜测。

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

如何禁用 JButton 而不隐藏其标签? 的相关文章

  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • 使用 Eclipse 将具有外部依赖项的 Java 项目导出到 jar

    有没有一种简单的方法可以将 Java 项目 包括其所有外部依赖项 导出到标准 jar 文件 我开发了一个使用多个 Apache 库的 SDK 我希望能够将该项目作为单个 jar 发布 到目前为止我找到的这个问题的答案要求将项目打包为 Run
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • 如果主引用指向 null,WeakReference 或 SoftReference 有何不同

    我正在读关于WeakReference https docs oracle com javase 10 docs api java lang ref WeakReference html and SoftReference https do
  • 如何停止使用扫描仪从标准输入读取多行?

    我正在做一个 JAVA 作业 应该处理多行输入 指令显示 输入是从标准输入读取的 给出了示例输入的示例 one 1 two 2 three 3 我不明白上面的示例输入 从标准输入读取 是什么意思 这是我编写的一个测试程序 它可以消除我的困惑
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 生产者程序中的 kafka 网络处理器错误(ArrayIndexOutOfBoundsException:18)

    我有下面的 kafka Producer Api 程序 我对 kafka 本身是新手 下面的代码从 API 之一获取数据并将消息发送到 kafka 主题 package kafka Demo import java util Propert
  • 使用java在网页中进行字符编码

    如何使用java找出网页中的字符编码类型 打开与 URL 的连接 使用URL openConnection http download oracle com javase 6 docs api java net URL html openC
  • 开发人员实际上是否使用 vim 在 Windows 操作系统上编写代码(Java)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JPA 的 Hibernate 查询提示

    我一直在尝试为所有可以通过设置的提示找到一个明确的资源Query setHint String Object JPA 中的方法调用 但我一无所获 有人知道一个好的参考吗 See 3 4 1 7 查询提示 http docs jboss or
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Java 常量枚举[重复]

    这个问题在这里已经有答案了 可能的重复 理解 Java 中的枚举 https stackoverflow com questions 1419835 understanding enums in java 为什么我们应该使用枚举而不是 Ja
  • 用于安装 R 软件包的备用编译器:clang:错误:不支持的选项“-fopenmp”

    我正在尝试在 OS X 10 11 6 上使用 R 版本 3 4 0 安装 rJava 包 install packages rJava type source 我收到以下错误 clang o libjri jnilib Rengine o
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService
  • Javac 版本 1.7 无法为目标 1.7 构建

    我试图在 Linux Mint 系统上使用 Sun Java JDK 1 7 0 17 编译 Java 代码 但遇到了这个问题 javac version target 1 7 javac 1 7 0 17 javac invalid ta
  • 乔达时间中两个日期之间的天数

    如何找到两次之间的天数差异乔达时间 http www joda org joda time DateTime http www joda org joda time apidocs org joda time DateTime html实例
  • AES 密钥是随机的吗?

    AES 密钥可以通过此代码生成 KeyGenerator kgen KeyGenerator getInstance AES kgen init 128 but 如果我有一个 非常可靠 的生成随机数的方法 我可以这样使用它吗 SecureR
  • while循环只执行一次

    我很难弄清楚为什么 while 循环实际上不会循环 它运行一次并停止 import java util public class mileskm public static void main String args Scanner inp
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str

随机推荐

  • 在java中提取.gz文件

    我正在尝试用 java 解压缩一些 gz 文件 经过一些研究我写了这个方法 public static void gunzipIt String name byte buffer new byte 1024 try GZIPInputStr
  • 推荐使用 gcc 构建 C++ 的 -W 标志

    我正在寻找 C 的推荐 g 警告选项列表 只能找到这个 推荐的 C 语言 gcc 警告选项 https stackoverflow com questions 154630 recommended gcc warning options f
  • 如何在 Yii2 中禁用会话、cookie 和自动登录?

    我正在 Yii2 中构建无状态 Restful API 因此 我在高级应用程序布局中创建了新的应用程序 Yii2 创建者的首选 并配置了所有必要的内容和 API 工作 现在我想让它成为无状态 我想禁用会话并且我希望它能够在config ma
  • 你可以合法地将dynamic_cast转换为多态类的非多态基类吗

    In 这个答案 https stackoverflow com a 44329645 1277769 出现了以下场景 include
  • time.struct_time 的 structseq() 错误

    这是给出错误的 python 脚本 gt gt gt import time gt gt gt t gt gt gt t append time struct time tm year 2000 tm mon 11 tm mday 30 t
  • 重命名后如何获取应用名称?

    在应用程序运行时更改可执行文件名称后 GetModuleFileName and GetModuleFileNameEx使用PID返回原始文件名 如何获取新文件名甚至检测更改 理想情况下我不想使用FindFirstChangeNotific
  • 如何在 MySQL 中有效地选择随机记录?

    mysql gt EXPLAIN SELECT FROM urls ORDER BY RAND LIMIT 1 id select type table type possible keys key key len ref rows Ext
  • Firebase 事件无延迟

    使用是一个好主意吗Firebase 事件 https www firebase com docs web api query on htmlapi 在客户端之间实时同步某些内容 例如 如果我想在客户端上完全同时播放视频 延迟小于 30 毫秒
  • 系统托盘中的 JavaFX 应用程序

    我正在使用 JavaFX UI 制作一个简单的应用程序 该应用程序只需执行以下操作 有一个系统托盘图标 单击时显示一个窗口 再次单击时隐藏它 右键单击时显示一个带有 1 个 退出 项的菜单 我已经制作了 UI 并将应用程序放入系统托盘中 但
  • Android 在按钮单击时显示数字键盘

    在我的应用程序中 我试图在用户单击按钮时显示数字键盘 单击按钮时 我使用 requestFocus 将焦点转移到布局中的 EditText 接下来我需要显示数字键盘 以便用户可以输入值 这些值始终是数字 因此我只需要显示数字键盘 我厌倦了在
  • 登录销售导航器 python selenium

    我正在尝试实现登录销售导航页面的简单任务 之后我可以继续尝试抓取潜在客户和帐户数据 作为抓取练习 按照此link https www linkedin com sales login为了登录 我有这个脚本来完成任务 browser webd
  • 使用 XmlCipher (RSA) 加密 XML 文件

    我只需要使用公钥加密一些 XML 元素 我成功地可以将此代码与 simetric 算法 XMLCipher AES 128 一起使用 但在尝试使用 XMLCipher RSA v1dot5 时失败 这就是代码 import java sec
  • FileReference.save() AS3 上锁定文件类型的替代方案

    Update 正如下面 Jacob 的回复中所讨论的 限制或纠正 FileReference save 的行为是不可能的 谁能建议一个替代方案 服务器是 Apache PHP 它符合我在这篇文章中的所有标准 并避免我与 Jacob 讨论的陷
  • iOS Prefix.pch 最佳实践

    我见过许多开发人员将各种方便的宏添加到他们的 iOS 项目的 Prefix pch 中 您建议在 iOS Prefix pch 文件中添加 或不添加 什么内容 你的 Prefix pch 是什么样的 Ewww 不要将宏放入 pch 文件中
  • ACTION_POWER_CONNECTED 的问题

    我在应用程序中使用以下示例页面中的代码来监控设备何时连接 断开与电源适配器的连接 http developer android com training monitoring device state battery monitoring
  • 如何在第二台显示器上打开form2?

    我从 Form1 创建 Form2 我希望 Form2 在第二台显示器上打开 我怎样才能做到这一点 我使用这段代码 private void button1 Click object sender EventArgs e Form2 dlg
  • react-google-maps:如何使用 fitBounds、panBy、panTo、panToBounds 公共 API?

    根据反应谷歌地图库 https github com tomchentw react google maps blob master src lib GoogleMap js L125 L131 您可以从 ref 对象调用这四个方法 看起来
  • 简化 sympy 中双曲函数的指数表示

    我正在尝试将表达式中的一些指数函数重写为 cosh 和 sinh rewrite 函数的作用是将双曲函数转换为其指数表示形式 但想回去是不行的 gt gt gt import sympy gt gt gt x sympy Symbol x
  • UIScrollView 就像 iPad 上的 Twitter 应用程序

    我正在寻找教程或一些想法来制作一个类似于 iPad 版 Twitter 应用程序中的自定义控制器 我的意思是左侧有主菜单的堆叠页面 预先感谢您的任何帮助 我们创建了一个模拟项目并添加到 github 中 https github com r
  • 如何禁用 JButton 而不隐藏其标签?

    我正在使用 netbeans IDE 在 Java 中开发一个项目 我需要禁用特定的 JButton 我为此使用以下代码 IssuBtn setEnabled false 但禁用后 它不会在 JButton 上显示文本 如何将该文本保留在