2015-06-06 28 views
11

Używam Java 8. Mam pasek narzędzi i przyciski na nim.JavaFx: Obramowanie przycisku i unosić się

Chcę realizować następujące:

  • W zwykłym stanie (bez najechaniu myszą) na pasku narzędzi, tylko przycisk Etykieta musi być postrzegane (bez tła, ani granic).
  • Gdy kursor myszy unosi się nad przyciskiem, musi być widoczny zwykły przycisk.

Jak zrobić to przez css?

Odpowiedz

18

Użyj stylów usunięcie tła:

.button { 
    -fx-background-color: transparent; 
} 

przy aktywowaniu, aby przywrócić wszystko, wystarczy użyć przycisku styl z modena.css:

.button:hover{ 
    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color; 
    -fx-background-insets: 0 0 -1 0, 0, 1, 2; 
    -fx-background-radius: 3px, 3px, 2px, 1px; 
    -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */ 
    -fx-text-fill: -fx-text-base-color; 
    -fx-alignment: CENTER; 
    -fx-content-display: LEFT; 
} 
0

Przeźroczystość tła mogą być kontrolowane przez słuchaczy myszy, tj. programowo ustawiając CSS (co zmniejsza zapotrzebowanie na zewnętrzny arkusz stylów):

final String IDLE_BUTTON_STYLE = "-fx-background-color: transparent;"; 
final String HOVERED_BUTTON_STYLE = "-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;"; 


button.setStyle(IDLE_BUTTON_STYLE); 
button.setOnMouseEntered(e -> button.setStyle(HOVERED_BUTTON_STYLE)); 
button.setOnMouseExited(e -> button.setStyle(IDLE_BUTTON_STYLE)); 
1

Zgadzam się z netzwerg. Jeśli używasz fxml z javafx, powinieneś uwzględnić te linie kodów w metodzie initialize() twojej klasy kontrolera.

Przykład klasy kontrolera:

public class Controller implements Initializable{ 
    private Button test; 
    private static final String IDLE_BUTTON_STYLE = "-fx-background-color: transparent;"; 
    private static final String HOVERED_BUTTON_STYLE = "-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;"; 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 
     button.setStyle(IDLE_BUTTON_STYLE); 
     button.setOnMouseEntered(e -> button.setStyle(HOVERED_BUTTON_STYLE)); 
     button.setOnMouseExited(e -> button.setStyle(IDLE_BUTTON_STYLE)); 
    } 
}