2016-03-22 22 views
0

Faremin üzerine gelip bölmem dışardayken farenin stilini değiştirmeye çalışıyorum.javafx: stili dinamik olarak bölmede değiştirme

Böyle bir şey yapabiliriz

pane.setStyle(""); 
Ancak Böylece
.togglebutton{ 
    -fx-background-color:red; 
} 

.togglebutton:selected{ 
    -fx-background-color:green; 
} 

ToggleButton

gibi bir şey oluşturmak mümkün olmadığını benim css kodu css stil olmak istiyorum ve merak ettim, geçiş düğmem her seçildiğinde, stil otomatik olarak değişir.

Soru şudur: togglebutton gibi davranacak bir parametre oluşturmak mümkün mü? şöyle birşey:

css stil

.mypane{ 
    //do something 
} 

.mypane:selected{ 
    // do something else 
} 

java kodu

public void mousedragAction(MouseEvent event){ 
    mypane.isSelected(true); 
} 

public void mouseexit(MouseEvent event){ 
    mypane.isSelected(false); 
} 

herhangi bir yardım için çok teşekkür ederiz, ya da başka çözümler.

cevap

1

Aradığınız işlevsellik zaten hover pseudoclass ile uygulanmaktadır. bu durumda, siz (selected ve hover gibi çalışır) keyfi CSS pseudoclasses tanımlayabilirsiniz gerekli olmasa Yani sadece Genelde

.myPane { 
    /* do something */ 
} 
.myPane:hover { 
    /* do something else */ 
} 

yapabilirsiniz.

PseudoClass moveOver = PseudoClass.getPseudoClass("mouse-over"); 
Pane myPane = new Pane(); 
myPane.getStyleClass().add("my-pane"); 
myPane.setOnMouseEntered(e -> myPane.pseudoClassStateChanged(mouseOver, true)); 
myPane.setOnMouseExited(e -> myPane.pseudoClassStateChanged(mouseOver, false)); 

ve sonra aşağıdaki CSS kullanabilirsiniz: hover işlevselliğini yeniden oluşturmak için, örneğin, yapabileceğiniz

.my-pane { 
    -fx-background-color: white ; 
} 
.my-pane:mouse-over { 
    -fx-background-color: yellow ; 
} 

Not CSS'deki pseudoclass adı (:mouse-over) geçti dizeyle eşleşir getPseudoClass yöntemine (PseudoClass.getPseudoClass("mouse-over")) ve CSS tanımlayıcısı olarak kullanmak için geçerli olan herhangi bir dize olabilir.

+0

Başka bir 'PseudoClass' örneği [burada] (https://gist.github.com/james-d/846eb9ff72bd66fdd955) –

+0

Evet, tam olarak aradığım şey buydu. Çok teşekkür ederim –

İlgili konular