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 の境界線を緑にしたいと思います。これは可能ですか?

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" を追加します (ドラッグが終了すると削除します)。これにより、2 つのマウスが不要になります)。少なくともリスナー。

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