JavaFX: Wie man einen Knoten Maus teilweise transparent?

Vereinfachte Problem:

Machen Sie einen Knoten "A", die an der Spitze eines anderen Knotens "B" zur Hälfte transparent zu Mausevents, so dass die Ereignisse erreichen den darunter liegenden Knoten "B". Beide Knoten sind von gleicher Größe aber Knoten "A" hat eine halb transparente Hintergrundbild, so dass die eine Hälfte der Knoten "B" ist sichtbar.

Echtes Problem:

Ich habe ein Menü mit Registerkarten. Jeder tab kann gezogen werden, erweitern Sie den entsprechenden Menü-Ebene. Daher wird jede Registerkarte layer ist ein Bereich mit einem teilweise transparenten hintergrund (im Grunde ein polygon), von denen der transparente Teil sollte auch transparent zu Mausevents.

Der Abbildung (was ich nicht post noch, siehe link: Abbildung tabs, die dunkelgrüne Linie ist die Grenze für den grünen Bereich) zeigt das Grundprinzip: man Stelle sich nur die tabs sichtbar sind und die Schicht selbst kann gezogen werden, um das Recht zum anzeigen der Inhalt.

Die Frage ist also, wie erstelle ich eine region, ein Knoten transparent zu Mausevents ohne dass die ganze Knoten transparent?

Danke für Eure Hilfe!

Update:

Zu klären, das problem, das hier ist der dazugehörige code:

//Create parent group
Group root = new Group();

//Create linear gradient, so one side is transparent
Stop[] stops = new Stop[] { new Stop(0, Color.rgb(0, 255, 0, 0.0)), new Stop(1, Color.rgb(0, 255, 0, 1.0))};
LinearGradient lg1 = new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);

//Create the rectangles
Rectangle A = new Rectangle(100, 50, lg1);
Rectangle B = new Rectangle(100,50, Color.RED);

//Add eventHandlers
A.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent e) {
        System.out.println("Clicked A");
    }
});
B.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent e) {
        System.out.println("Clicked B");
    }
});
root.getChildren().addAll(B, A);

//Add to Scene..

Hoffe, das hilft.

  • Ich habe nicht viel nachdenken, sondern können Ihnen Sache : erstellen Sie ein Rechteck, stellen Sie die Farbe auf transparent (scheint die Farbe.TRANSPARENT). Machen Sie nicht die Maus transparent, und binden die Höhe der Teil von der Höhe der Ziel-node "Ein". Legen Sie es über target-Knoten "A", und schreiben Sie code, der Ereignis-Weitergabe an den darunter liegenden Knoten "A". Machen Sie den Knoten "A" - transparent. Ist es Arbeit?
InformationsquelleAutor MoeSzyslak | 2013-03-20
Schreibe einen Kommentar