2015-10-12 37 views
0

我正在使用自定义光标,它需要在屏幕中的某些组件上有所不同。如何在JavaFX Accordion标题栏中更改光标

当我设置的光标手风琴,它不影响标题头,但效果各TitledPanes的身体。我甚至试图为每个TitledPane设置光标,但它不会影响标题标题。我正在使用以下方式更改光标。

ImageCursor cursor_title = new ImageCursor(cursorImg_title,cursorImg_title.getWidth()/2,cursorImg_title.getHeight()/2); 
accordionBody.setCursor(cursor_title); 

有没有办法改变一个JavaFX手风琴的标题栏中的光标?

更多....

我改变了标题栏的填充使用CSS如下。希望它与问题没有任何关系。

.titled-pane > .title { 
    -fx-padding: 30; 
} 

回答

2

一个TitledPane被分为两个部分:

  • 标题
  • 内容

当设置在手风琴的光标,它代表它的每个内容标题栏,但离开标题。这是设计。

要强制应用程序更改标题上的光标,我们需要在每个节点上设置它。我们可以通过在手风琴上使用lookupAll()并通过他们使用的styleclass(即.title)来获取所有节点。 确保在场景图形可见后使用它。

accordion.lookupAll(".title").forEach(node -> node.setCursor(Cursor.CLOSED_HAND)); 

您可以使用自定义光标代替CLOSED_HAND

+0

你也可以直接在css文件中设置光标,这可能比搞乱查找更容易:'.accordian .title {-fx-cursor:...}' –

+2

@James_D'.accordian' ??没有看到发生任何事情。你的意思是'.titled-pane>'是不是?但是当我使用'.titled-pane> .title {-fx-cursor:url(“myCursor.gif”)}'它给了我一个错误,因为'java.lang.String不能转换为javafx.scene.Cursor' –