2016-04-02 20 views
1

PopOver denetim JavaFX'in görünümünü özelleştirmek istiyorum. Basıldığında PopOver görüntülenen bir düğme var.ControlsFX'i denetleme PopOver denetimi JavaFX

package pruebapopover; 

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 
import org.controlsfx.control.PopOver; 

public class PruebaPopOver extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     PopOver popover = new PopOver();  
     TextField campo = new TextField();  
     popover.setContentNode(campo); 

     Button btn = new Button(); 
     btn.setText("Lanch PopOver"); 
     btn.setOnAction((ActionEvent event) -> {   
      popover.show(btn); 

      ((Parent) popover.getSkin().getNode()).getStylesheets() 
       .add(getClass().getResource("PopOver.css").toExternalForm());     
     });   

     StackPane root = new StackPane(); 
     root.getChildren().add(btn); 

     Scene scene = new Scene(root, 300, 250);    
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

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

} 

ve PopOver.css:

.popover {  
    -fx-background-color: rgba(255,0,0, 0.1); /* semi-transparent red */          
} 
.popover > .content { 
     -fx-padding: 10;       
     -fx-background-color: transparent;       
} 

sonuç aşağıdaki gibidir: PopOver displayed correctly

: Popover displayed incorrectly

Ama ne beklediğim şudur İşte çalışan bir örnektir

PopOver denetiminin beyaz arka planı nasıl kaldırılır ?, Neden yarı transpar görünmüyor ent?, Kırmızı ok nasıl boyayabilirim?

path = new Path(); 
     path.getStyleClass().add("border"); 

nedenle .css dosya okuyacaktır:

cevap

1

biz ekranda gördüğünüz popover görsel yönü eklendi border tarzı sınıfı ile Path olduğunu

.popover > .border { 
    -fx-stroke: linear-gradient(to bottom, rgba(0,0,0, .3), rgba(0, 0, 0, .7)) ; 
    -fx-stroke-width: 0.5; 
    -fx-fill: rgba(255,0,0, 0.5); /* instead -fx-background-color */ 
    -fx-effect: dropshadow(gaussian, rgba(0,0,0,.2), 10.0, 0.5, 2.0, 2.0); 
}