यह एक बग है। यह यहां बताया गया है Removal of hovered style class, does not update styling। आप वोट देना और देखना चाहते हैं। एक वर्कअराउंड के रूप में आपको सीएसएस नियमों को ओवरराइड करना चाहिए जिन्हें आपने छुआ/बदल दिया है, जो डिफ़ॉल्ट रूप से समान हैं। डेमो:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBoxBuilder;
import javafx.stage.Stage;
public class StyleDemo extends Application {
@Override
public void start(Stage primaryStage) {
final Label lbl = new Label("Style Me");
lbl.getStyleClass().add("style1"); // initial style
Button btn = new Button("Change the style");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
lbl.getStyleClass().remove("style1");
lbl.getStyleClass().add("style2");
}
});
StackPane root = new StackPane();
root.getChildren().add(VBoxBuilder.create().spacing(20).children(lbl, btn).build());
Scene scene = new Scene(root, 300, 250);
scene.getStylesheets().add(this.getClass().getResource("style.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
और style.css है:
.style1 {
-fx-text-fill: red;
-fx-border-color: green;
-fx-font-size: 20;
}
.style2 {
-fx-text-fill: blue;
-fx-border-color: red;
-fx-font-size: 15;
-fx-underline: true;
}
जब बटन शुरू में जोड़ा style1
निकाल दिया जाता है और क्लिक किया जाता है style2
जोड़ा जाता है।
स्रोत
2012-06-11 08:43:56
कुछ जावाएफएक्स संस्करणों में स्टाइल क्लास प्रबंधन के आसपास कुछ बग थे। [देर से डेवलपर पूर्वावलोकन] में अपने परीक्षण का पुनः प्रयास करें (http://www.oracle.com/technetwork/java/javafx/downloads/devpreview-1429449.html) और देखें कि क्या आपको अभी भी समस्याएं हैं या नहीं। – jewelsea