如何使TabPane边框变为绿色

时间:2013-07-16 12:30:38

标签: javafx-2 javafx javafx-8

我在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效果。这可能吗?

2 个答案:

答案 0 :(得分:3)

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

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

OR 如果您想要非常酷,可以在CSS样式表中完成所有操作(并在开始拖动时将styleClass“dragTab”添加到所有Tab窗格中(并删除)当拖动结束时。)它至少消除了两个鼠标监听器。

.dragTab:hover {
    -fx-padding: 1; 
    -fx-background-color: green, -fx-control-inner-background; 
    -fx-background-insets: 0, 1;
}

答案 1 :(得分:0)

这对我有用:

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

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