Using queries containing pseudo-classes in JavaFX

Adam Granger adam at adamish.com
Sun Jul 23 23:08:07 UTC 2017


I'm tring to use pseudo classes in programmtic query using Node.lookupAll() however this seems to give unexpected results.

I've searched online and can't find anything to suggest Node.lookupAll() wouldn't support psuedo classes...

public class Foo extends Application {

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

@Override
public void start(Stage primaryStage) throws Exception {
PseudoClass pseudoClass = PseudoClass.getPseudoClass("custom");

Label a = new Label();
a.getStyleClass().add("foo");
a.pseudoClassStateChanged(pseudoClass, false);

Label b = new Label();
b.getStyleClass().add("foo");
a.pseudoClassStateChanged(pseudoClass, true);

Label c = new Label();
c.getStyleClass().add("foo");
a.pseudoClassStateChanged(pseudoClass, true);


HBox box = new HBox(a, b, c);
primaryStage.setScene(new Scene(box));

System.out.println(box.lookupAll(":custom").size()); // expected 2
System.out.println(box.lookupAll(".foo:custom").size()); // expected 2
System.out.println(box.lookupAll(".foo").size()); // expected 3, got 3
System.out.println(box.lookupAll(":magichorse").size()); // expected 0 !!

}

}

Output

4
3
3
4
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


More information about the openjfx-dev mailing list