Как сделать границы TabPane зелеными

Я реализовал пример перетаскивания из учебника 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 зелеными вместо добавления эффекта свечения. Это возможно?


person Peter Penzov    schedule 16.07.2013    source источник


Ответы (2)


Вы можете установить стиль на 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;
}
person Nick Rippe    schedule 16.07.2013

эта работа для меня:

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

или используйте другие возможные значения для атрибута -fx-border-style, такие как double,dashed,...

person M2E67    schedule 02.02.2019