2017-11-13 18 views
0

常にオンに設定されているコントロールFX PopOverタイトルの色を変更しますか?私はすでに背景色を変更したCSSでこれを行いたいと思います。 .popoverの下でいくつかの異なるオプションを試しました。コントロールの色を変更するFX PopOverタイトル

これは私が試した最後のCSSを持つ例です。

public class HelloPopOver extends Application { 

    @Override 
    public void start(Stage primaryStage) { 


     //Build PopOver look and feel 
     Label lblName = new Label("John Doe"); 
     Label lblStreet = new Label("123 Hello Street"); 
     Label lblCityStateZip = new Label("MadeUpCity, XX 55555"); 
     VBox vBox = new VBox(lblName, lblStreet, lblCityStateZip); 
     //Create PopOver and add look and feel 
     PopOver popOver = new PopOver(vBox); 

     // I always want to see my header 
     popOver.setHeaderAlwaysVisible(true); 

     Label label = new Label("Mouse mouse over me"); 
     label.setOnMouseEntered(mouseEvent -> { 
      popOver.show(label); 
      ((Parent)popOver.getSkin().getNode()).getStylesheets().add(getClass().getResource("Style.css").toExternalForm()); 
     }); 


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

     Scene scene = new Scene(root, 300, 250); 

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    }  
} 

とCSS:

.popover > .border { 
    -fx-stroke-width: 0.5; 
    -fx-fill: rgba(200,200,200, 1); 
    -fx-text-fill: red; /* This doesn't work, but is what I am looking for */ 
} 
.popover > .label { 
    -fx-text-fill: red; /* This doesn't work, but is what I am looking for */ 
} 

はどのようにCSSは赤に、タイトルの色を変更できますか?

+0

は、あなたがしようとしている代わりに '' .popover> .label'の.label' .popover:

これはトリックを行う必要がありますか?今あなたが持っているものは、あなたのラベルがそうでないPopOversの直接の子供であるラベルを選択することです。 – MMAdams

+0

私はやった、そして喜びはありません。私もちょうど '.label'を試しました、そして、それは私に何も与えませんでした。私は自分の検索をラベルと呼んで偏っていると思う。 – Agricola

+0

ええ、私はそれがロングショットだったと思っていました。おそらくすでに試してみたでしょう。 'label.getStyleClass()。add(" popover-label ")'のようなもので、 '.popover> .label'の代わりに' .popover-label' – MMAdams

答えて

1

私は同じ問題を抱えていたとorg.controlsfx.controlでpopover.cssファイルに表情を取ることによって、それを考え出しました。

.popover > .content > .title > .text { 
    -fx-text-fill: red; 
} 
+0

それは完璧だったし、あなたがそれを見つけたことを指摘してくれてありがとう。 – Agricola

0

ここでは、独自のヘッダーを作成する方法の非常に大まかな例を示します。私は個人的にボタンの代わりにAwesomeFontFxアイコンを使用します。私はまた、ヘッダーを中央に配置し、間隔を追加します。私はTextをヘッダーとして使用しました。 Textでは、色を変更することができます。

import javafx.application.Application; 
import static javafx.application.Application.launch; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.control.Control; 
import javafx.scene.control.Label; 
import javafx.scene.layout.AnchorPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 
import org.controlsfx.control.PopOver; 

public class HelloPopOver extends Application { 

    @Override 
    public void start(Stage primaryStage) { 


     //Build PopOver look and feel 



     Label lblClosePopOver = new Label("x"); 
     Text lblHeader = new Text("Keyword info"); 
     lblHeader.setFill(Color.RED); 
     HBox headerRoot = new HBox(lblClosePopOver, lblHeader); 
     headerRoot.setMaxSize(Control.USE_PREF_SIZE, Control.USE_PREF_SIZE); 
     Label lblName = new Label("John Doe"); 
     Label lblStreet = new Label("123 Hello Street"); 
     Label lblCityStateZip = new Label("MadeUpCity, XX 55555"); 

     VBox infoHolder = new VBox(lblName, lblStreet, lblCityStateZip); 
     VBox.setMargin(infoHolder, new Insets(7, 7, 7, 7)); 
     VBox subRoot = new VBox(new StackPane(headerRoot), infoHolder); 
     AnchorPane popOverRoot = new AnchorPane(subRoot); 


     //Create PopOver and add look and feel 
     Label label = new Label("Mouse mouse over me"); 
     PopOver popOver = new PopOver(label); 
     popOver.setContentNode(popOverRoot); 
     lblClosePopOver.setOnMouseClicked((event)->{ 
      if(popOver.isShowing()) 
      { 
       popOver.hide(); 
      } 
     }); 
    // I always want to see my header   
    //popOver.setHeaderAlwaysVisible(true); 


     label.setOnMouseEntered(mouseEvent -> { 
      popOver.show(label); 
     }); 


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

    Scene scene = new Scene(root, 300, 250); 


     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    }  
} 

enter image description here

+0

これは技術的な選択肢ですが、私が探していたものではありません。私はそれを行うことができ、カスタムクローズボタンを持つHBoxを持っていると思います。スタイルシートだけでこれを取り除くことができたらと思っていました。 – Agricola

+0

それ以外のものが見つからない場合に備えて、それはバックアップです。私はそれがより良く見えるように答えを更新しました。 – Sedrick

+1

私はそれを感謝します。 – Agricola

関連する問題