2016-03-29 35 views
2

Şeffaf bir sahne oluşturmaya ve düğmeli bir sahne oluşturmaya çalışıyorum ancak yalnızca metinle çalışıyor gibi görünüyor. burada basit kodşeffaf sahne ve sahne, javafx düğmeleriyle çalışmaz

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 
import javafx.stage.StageStyle; 
public class TransparentStage extends Application { 

@Override 
public void start(Stage stage) { 
    stage.initStyle(StageStyle.TRANSPARENT); 
    Text text = new Text("Transparent!"); 
    text.setFont(new Font(40)); 
    //Button button = new Button("btn"); 
    VBox box = new VBox(); 
    box.getChildren().add(text); 
    //box.getChildren().add(button); 
    final Scene scene = new Scene(box,300, 300); 
    scene.setFill(Color.TRANSPARENT); 
    stage.setScene(scene); 
    stage.show(); 
} 

public static void main(String[] args) { 
    launch(args); 
} 
} 

the result

ama düğmeye yorumsuz eğer sonuç here

Bu artık şeffaf bakmak doz değil ancak yalnızca astarlı edilir olacaktır. Yani, Transparent düğmeleriyle çalışmıyor mu? ve bir düğme eklemem gerekecek mi? Teşekkürler.

cevap

2

Ne

Metin oluyor bir kontrol değil. Sadece Metin kullanan basit bir JavaFX programı, herhangi bir kontrol yüklemez. Kontrolleri kullanmak için, JavaFX'in varsayılan CSS stil sayfasını yüklemesi gerekir (Java 8'de bu, modena.css olarak adlandırılır). Varsayılan CSS stil sayfası, örneğinizde kullandığınız VBox gibi düzen bölmeleri için bir arka plan rengi ayarlayacaktır.

nasıl

bir düzen bölmesinde için arka plan rengi engellemek için düzeltmek için, boş olan arka plan rengini ayarlamak gerekir:

box.setStyle("-fx-background-color: null;"); 

Ama neden?

Şimdi, bunun garip olduğunu biliyorum. . . ama sadece nasıl olduğu. Denetimleri kullanmazsanız, düzen bölmeleri arka plan rengine sahip değildir, çünkü CSS sahne grafiğine yüklenmez ve uygulanmaz (muhtemelen performans nedenleriyle). Denetimleri kullanırsanız, CSS yüklenir ve düzen bölmeleri arka plan rengine sahiptir.

modena.css olarak, .root bölümünde bu açıklamaları verilmiştir:

/* A very light grey used for the background of windows. See also 
* -fx-text-background-color, which should be used as the -fx-text-fill 
* value for text painted on top of backgrounds colored with -fx-background. 
*/ 
-fx-background: derive(-fx-base,26.4%); 

/* A light grey that is the base color for objects. Instead of using 
* -fx-base directly, the sections in this file will typically use -fx-color. 
*/ 
-fx-base: #ececec; 

/*************************************************************************** 
*                   * 
* Set the default background color for the scene       * 
*                   * 
**************************************************************************/ 

-fx-background-color: -fx-background; 
+0

müthiş teşekkürler .. –

İlgili konular