JavaFX: Como fazer um nó parcialmente mouse transparente?
Faça um Nó "A" sobre outro Nó "B" ser meio transparente para MouseEvents, para que os Eventos atinjam o Nó "B" subjacente. Ambos os Nós são de tamanho igual, mas o Nó "A" tem uma imagem de fundo meio transparente, então uma metade do Nó "B" é visível.
Problema Real:Eu tenho um menu de abas. Cada guia pode ser arrastada para expandir a camada de menu correspondente. Portanto, cada camada de guia é um painel com um plano de fundo parcialmente transparente (basicamente, um polígono), cuja parte transparente também deve ser transparente para MouseEvents.
A ilustração (que não posso postar ainda, veja o link:Ilustração, de, abas, a linha verde escura é a borda do painel verde) mostra o princípio básico: apenas imagine as abas visíveis e a própria camada pode ser puxada para a direita para ver seu conteúdo.
Então a questão é, como eu faço uma região de um nó transparente para MouseEvents sem tornar o nó inteiro transparente?
Obrigado pela ajuda!
Atualizar:Para esclarecer o problema simples, aqui está o código correspondente:
//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..
Espero que isto ajude.