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