【问题标题】:Javafx text area scroll pane border color problemJavafx文本区域滚动窗格边框颜色问题
【发布时间】:2018-12-04 13:10:06
【问题描述】:

我在 javafx 文本区域中遇到问题:当我聚焦文本区域时,应用了边框……没关系。

但是当我使用滚动条手柄拖动时,文本区域边框焦点丢失了。

见下图:

这是我的简单文本区域:

像这样聚焦时文本区域发生变化:

但是当我使用滚动句柄在文本区域中滚动时,边框会像以前一样(未聚焦)状态发生变化:

有什么方法可以控制滚动窗格中的文本区域(在文本区域中)?

【问题讨论】:

  • 这是正常行为,不是问题,一旦您单击滚动条,您就会失去 UI 中其他项目的焦点,焦点将放在滚动条上。
  • 感谢您的快速回答。没关系!我还应用了 scroll-pane:hove 类,它可以按我的意愿工作。但是当滚动平移聚焦时如何从文本区域中删除边框。意味着以这种方式应用了两个边界,这是我不想要的......有什么建议吗?滚动时带有两个边框的图像! [![在文本区域滚动时有两个边框的图像][1]][1] [1]:i.stack.imgur.com/7SRnX.png

标签: java javafx javafx-8 scenebuilder javafx-css


【解决方案1】:

一种可能的解决方法是不允许将焦点放在 TextArea 中的 ScrollPane 上。即,当 ScrollPane 获得焦点时,我们强制将注意力集中在 TextArea 上。这样,焦点将始终在 TextArea 上。

import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;

public class CustomTextArea extends TextArea {
    private ScrollPane textAreaScrollPane;

    @Override
    protected void layoutChildren() {
        super.layoutChildren();
        if (textAreaScrollPane == null) {
            textAreaScrollPane = (ScrollPane) lookup(".scroll-pane");
            textAreaScrollPane.focusedProperty().addListener((obs, oldVal, focused) -> {
                if (focused) {
                    requestFocus();
                }
            });
        }
    }
}

您将在整个应用程序中使用此 CustomTextArea。

TextArea textArea = new CustomTextArea();

【讨论】:

  • 非常有帮助,但如果它已经在内置组件中实现。那么它是最好的。还有我如何在整个项目中的所有text-area 中实现这一点..
  • 您将使用此功能创建一个新的自定义控件,并将在您的应用程序中使用它。 (更新了我的答案)
  • 哈哈.. 我想你在这里评论过其他post ;)
猜你喜欢
  • 2016-07-25
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多