为什么禁用的 JavaFX TextArea 的颜色与 TextField 不同

2024-03-12

我正在重新设计 JavaFX 应用程序,但我有一个问题:disabled风格。当我尝试改变-fx-text-fill and -fx-opacity settings,文本区域的文本颜色仍然比文本字段稍浅。这是我现在得到的风格:

/*** Text Fields and Areas ***/
.text-field,
.text-area {
    -fx-text-fill: #000;
    -fx-opacity: 1.0;
}

.text-field:disabled,
.text-area:disabled {
    -fx-text-fill: #000;
    -fx-opacity: 0.5;
}

这是禁用的组件在程序中的样子:JavaFX 应用程序的屏幕截图 https://i.stack.imgur.com/RAZXf.png

如您所见,文本颜色TextField is #7a7a7a这是 50%#000. The TextArea但似乎有颜色#c7c7c7这是 25%#000.

有谁知道如何为文本区域获得与文本字段相同的禁用颜色?


这是怎么回事

IMO 当前的行为是一个错误,应提交至http://bugreport.java.com http://bugreport.java.com(我已经这样做了,不幸的是,Java 错误报告系统不提供任何方法来跟踪此错误报告,除非它被 JavaFX 团队接受)。

问题在于文本区域中文本的不透明度修改器应用了两次。默认的 TextArea 皮肤是作为 TextArea 控制节点实现的,其中有一个内部 ScrollPane,当 TextArea 被禁用时,两者的不透明度都设置为 0.4,因此文本(以及滚动窗格中的滚动条)无法显示不透明度褪色效果应用了两次(这是错误的)。您可以通过检查禁用的 TextArea 控件来看到这一点优美的风景 http://fxexperience.com/scenic-view/.

解决方法

当禁用的滚动窗格包含在文本输入控件中时,将其不透明度显式设置为 1。

.text-input > .scroll-pane:disabled {
    -fx-opacity: 1;
}

示例应用程序:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.scenicview.ScenicView;

public class DisabilityAssistance extends Application {

    @Override
    public void start(Stage stage) throws Exception{
        TextArea area = new TextArea("Text Area");
        area.setDisable(true);
        TextField field = new TextField("Text Field");
        field.setDisable(true);

        Scene scene = new Scene(new VBox(10, area, field));
        stage.setScene(scene);
        stage.show();

        scene.getStylesheets().add(getClass().getResource(
                "disability.css"
        ).toURI().toURL().toExternalForm());

        ScenicView.show(stage.getScene());
    }

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

输出(未应用 CSS 解决方法):

输出(应用了 CSS 解决方法):

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

为什么禁用的 JavaFX TextArea 的颜色与 TextField 不同 的相关文章

随机推荐

  • 如何在不打开 Flutter 上默认电子邮件应用程序的情况下发送邮件?

    是否可以在不打开默认电子邮件应用程序的情况下发送电子邮件 直接地 我用了两个插件 但两者都是打开默认应用程序 Using flutter email sender plugin final Email email Email body Ve
  • 为什么我不能将 PHP 类实例存储为 SESSION 变量

    我有一个 PHP 脚本 可以通过 Dojo Ajax xhrGet 调用以两种方式进行调用 第一次使用 init 参数调用它 这会导致脚本创建 StateList 类的实例并读入状态名称文件 session start include St
  • 使用 Sharp 库的 Firebase 部署功能在 Google Cloud Build 中失败

    从 Bitbucket Pipelines 迁移到 Google Cloud Build 后 Firebase 部署失败 该设置在 Bitbucket Pipelines 和本地都成功部署 除了下面的错误之外 没有给出进一步的解释 我对代码
  • 如何启用码头登录?

    我正在尝试调试我的情况 其中简单的 ActiveWeb 应用程序未在 Jetty 下运行 它的行为就像不存在任何用于请求处理的类一样 并返回错误 404 问题不在于 ActiveWeb 这是关于杰蒂的 如何发现 Jetty 有一些 Web
  • 谷歌浏览器扩展:如何多次打开新的浏览器窗口?

    我的 Chrome 扩展程序使用这个简单的 JS 打开一个新的浏览器窗口 chrome browserAction onClicked addListener function tab var room new Date getTime w
  • ViewPager 使用视图而不是片段

    I ve a ViewPager现在使用Views代替Fragments显示每个选项卡 每个选项卡都会扩展相同的布局文件 Overview In this ViewPager 我应该将地雷添加为选项卡 因此基本上每个选项卡都对应于一个特定的
  • 如何不使用gopath导入本地包

    我用过GOPATH但对于我当前面临的这个问题 它没有帮助 我希望能够创建特定于项目的包 myproject binary1 go binary2 go package1 go package2 go 我尝试了多种方法 但如何得到packag
  • 无法在 Electron 应用程序中使用 Discord OAuth2

    我正在尝试创建一个 Electron 应用程序 使用 Electron net 和 MVC 并使用 Discord 的 OAuth2 进行用户登录 然而 当加载 OAuth2 页面时 Discord 认为我使用的 Discord 安装已损坏
  • 如何捕获远程系统网络流量?

    我一直在使用wire shark来分析socket程序的数据包 现在我想看看其他主机的流量 因为我发现我需要使用只有Linux平台支持的监控模式 所以我尝试了但我无法捕获在我的网络中传输的任何数据包 列为捕获的 0 个数据包 设想 我有一个
  • 升级到 flutter 3.0.1 后更新 CocoaPods 时出错

    我在用MacBook Pro M1 芯片 OS is MacOS 蒙特利 12 3 1 今天我将flutter从2 5 4升级到3 0 1 我可以在 Android 中完美运行我的项目 但是在 iOS 中我收到以下错误 Launching
  • 关闭 seeds.rb 中的验证

    如何关闭验证Rails 3 2 3 in seeds rb 我做了这个 u1 User create email email protected cdn cgi l email protection password 123 validat
  • 如何使用 pyminizip 在 Python 3.x 中创建临时 ZIP?

    我需要创建一个临时 zip 文件来存储文件 该 ZIP 文件需要加密 所以zipfile不会在这里做的伎俩 该文件将被进一步加密 ZIP 将再次加密为另一个文件 因此压缩文件被用作减小其大小以实现更快的互联网传输以及第一层加密的一种方法 这
  • 使用 setjmp / longjmp 的通信协议和本地环回

    我使用共享内存和共享互斥体编写了一些相对简单的通信协议 但后来我想扩展支持以在使用不同运行时的两个 dll 之间进行通信 很明显 如果你有一些std vector lt int64 gt 和两个 dll 一个 vs2010 一个 vs201
  • Hive “alter table <表名称> 连接”如何工作?

    I have n large 我想要合并的小尺寸 orc 文件的数量k small 大型 orc 文件的数量 这是使用完成的alter table table name concatenateHive 中的命令 我想了解 Hive 是如何实
  • 如何在JSP页面中迭代session?

    如何迭代会话并将每个提交值保留在同一页面直到会话结束
  • GPU 上的高效全对集交集

    I have n集合 有限宇宙的子集 我想计算n n矩阵 其中 I J 条目包含集合交集的基数I并设置J n的顺序是50000 我的想法是将矩阵分割成足够小的块 以便每个条目都有一个线程 每个线程都应该使用以下方法计算交集bitwise a
  • 为什么 UIElement.MoveFocus() 不将焦点移动到 ListBox 中的下一个同级元素?

    我有以下视觉树
  • 访问 Android Stock 浏览器设置

    我想通过代码访问 和更改 库存 Android 浏览器的设置 这可能吗 如果可能的话 如何 是的 这是编程问题 我想通过代码更改它 而不是通过手动单击 对 root 设备执行此操作怎么样 Android 的操作系统级安全模型基本上可以防止这
  • PyQt 允许枚举值和字符串

    在 PySide 中 我可以通过使用获取具有可能 允许的枚举值及其字符串表示形式的字典values属性 例如 QtWidgets QMessageBox StandardButton values items 如何在 PyQt4 PyQt5
  • 为什么禁用的 JavaFX TextArea 的颜色与 TextField 不同

    我正在重新设计 JavaFX 应用程序 但我有一个问题 disabled风格 当我尝试改变 fx text fill and fx opacity settings 文本区域的文本颜色仍然比文本字段稍浅 这是我现在得到的风格 Text Fi