criando estágio não decorado no javafx 2.0

Eu estou tentando criar um estágio personalizado no javafx 2.0. Eu quero que o meu palco derrube sombra na canvas como derrubado por outras janelas … Eu tentei com o seguinte código:

public class ChatWindow { final private Stage stage = new Stage(StageStyle.UNDECORATED); private Scene scene; private Group rg; private Text t = new Text(); private double initx = 0, inity = 0; public ChatWindow() { rg = new Group(); scene = new Scene(rg, 320, 240); //scene.setFill(null); scene.setFill(new Color(0, 0, 0, 0)); stage.setScene(scene); stage.show(); setupStage(); } private void setupStage() { Rectangle r = new Rectangle(5, 5, stage.getWidth() - 10, stage.getHeight() - 10); r.setFill(Color.STEELBLUE); r.setEffect(new DropShadow()); rg.setOnMousePressed(new EventHandler() { public void handle(MouseEvent me) { initx = me.getScreenX() - stage.getX();// - me.getSceneX(); inity = me.getScreenY() - stage.getY(); } }); rg.setOnMouseDragged(new EventHandler() { public void handle(MouseEvent me) { stage.setX(me.getScreenX() - initx); stage.setY(me.getScreenY() - inity); } }); rg.getChildren().add(r); rg.getChildren().add(t); } public void setVisible() { stage.show(); } } 

Eu posso ver a sombra cair, mas na verdade o seu é um fundo branco no qual está caindo. Então, é inútil, como na canvas colorida, o defeito será visível, fará com que pareça feio.

Esta é a canvas capturada na canvas branca: insira a descrição da imagem aqui

E isso na canvas colorida: insira a descrição da imagem aqui

Como resolver esse problema? Por favor ajude.

Você deve definir o estilo StageStyle.TRANSPARENT , consulte o próximo código:

 public class ChatWindow extends Application { @Override public void start(final Stage stage) throws Exception { stage.initStyle(StageStyle.TRANSPARENT); // here it is Group rg = new Group(); Scene scene = new Scene(rg, 320, 240, Color.TRANSPARENT); stage.setScene(scene); stage.show(); Rectangle r = new Rectangle(5, 5, stage.getWidth() - 10, stage.getHeight() - 10); r.setFill(Color.STEELBLUE); r.setEffect(new DropShadow()); rg.getChildren().add(r); } public static void main(String[] args) { launch(); } }