1

我实现了 JavaFX 教程中的拖放示例。

当我将标签拖到目标 TabPane 上时,我设法添加了效果:

tabPane.setOnDragEntered(new EventHandler<DragEvent>() {
            @Override
            public void handle(DragEvent event) {
                /* the drag-and-drop gesture entered the target */
                /* show to the user that it is an actual gesture target */
                if (event.getGestureSource() != tabPane
                        && event.getDragboard().hasString()) {
                    tabPane.setCursor(Cursor.MOVE);


                    tabPane.setEffect(new Glow());
                }

                event.consume();
            }
        });

        tabPane.setOnDragExited(new EventHandler<DragEvent>() {
            @Override
            public void handle(DragEvent event) {
                /* mouse moved away, remove the graphical cues */
                tabPane.setCursor(Cursor.DEFAULT);

                tabPane.setEffect(null);

                event.consume();
            }
        });

但我想将目标 TabPane 的边框设为绿色,而不是添加 Glow 效果。这可能吗?

4

2 回答 2

3

您可以设置样式TabPane(之后将其设置为空白字符串):

 tabPane.setStyle("-fx-padding: 1; -fx-background-color: green, -fx-control-inner-background; -fx-background-insets: 0, 1;");

或者,如果您想变得非常酷,您可以在 CSS 样式表中完成所有操作(并在开始拖动时将 styleClass“dragTab”添加到所有选项卡窗格(并在拖动结束时删除)。它消除了两个鼠标至少听众。

.dragTab:hover {
    -fx-padding: 1; 
    -fx-background-color: green, -fx-control-inner-background; 
    -fx-background-insets: 0, 1;
}
于 2013-07-16T16:54:27.857 回答
0

这对我有用:

tabPane.setStyle("-fx-border-style:solid; -fx-padding: 1; -fx-background-color: green;");

或为 -fx-border-style 属性使用其他可能的值,例如 double,dashed , ...

于 2019-02-02T10:06:32.773 回答