TitledPane输入无效不可折叠时,如何保留并显示禁用状态的箭头?
如何让TitledPane在不可折叠时保留禁用状态的箭头
我需要实现一个TitledPane:当它处于展开状态且内部TextField输入无效时,不允许折叠。目前核心逻辑已经完成,但遇到一个问题——一旦将collapsibleProperty设为false,标题左侧的箭头按钮就会直接消失。
我希望箭头能保留在界面上,只是显示为禁用状态。原本打算通过伪类状态来实现,但TitledPaneSkin类的update()方法里的这段代码直接阻断了这个思路:箭头根本不会被添加到GUI中:
private void update() { getChildren().clear(); final TitledPane titledPane = getSkinnable(); if (titledPane.isCollapsible()) { getChildren().add(arrowRegion); } ...
我尝试过几种解决方法,但都没成功:
- 编写继承自TitledPaneSkin的自定义Skin类,但定义
arrowRegion的TitleRegion及其update方法都是不可访问的,无法修改逻辑。 - 直接禁用TitledPane本身不可行,因为我需要内部的TextField保持可编辑状态。
- 尝试通过CSS给TitledPane的标题设置自定义箭头图片:
.titled-pane .title { -fx-graphic: url("arrow.png"); }
但这个方法也没有效果。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

