<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>What I often do when I want to test changes to FX internals is to
not build FX at all, but instead just copy the classes I need to
change into my project and leaving them in the internal package.</p>
<p>So for example, I want to change something in Window, I just copy
the class into my mini project:</p>
<p>- src/main/java/javafx/stage/Window.java<br>
- src/main/java/app/MyApp.java<br>
- pom.xml --> depends on JavaFX 25 maven artifacts or say
26-ea+18<br>
</p>
<p>No `module-info.java`</p>
<p>When you run this, you may get an error that you can't start your
application like this. You can work around that with a mini
launcher class:</p>
<p> public void main(String... args) {<br>
Application.launch(MyApp.class, args);<br>
}<br>
</p>
<p>Now it starts without whining about module restrictions.</p>
<p>The Window class here can be modified in most ways, but you can't
remove methods that may be overridden. You can remove "sealed"
and "permits" if you're copying a class that has those (like
Node).</p>
<p>A screenshot of a project that I used to debug several issues
over the past few days:</p>
<p><img src="cid:part1.8N7MdBEf.P4ImMWBp@gmail.com" alt=""></p>
<p><br>
</p>
<p>--John<br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 21/12/2025 22:27, Cormac Redmond
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAG_-AaAM1cwbH6p2g6oHs3p-_EX2UGKo9Svu8tJZtDQzGX7j6A@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div class="gmail_default"
style="font-family:verdana,sans-serif">Hi,</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">Are there any tricks to
quickly spinning up a visible application (from a test or
otherwise), from within the JFX project, in order to see your
changes?</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">Obviously building the
SDK and "using" it in an application is time consuming.</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">I've seen this in
build.gradle, where I assume StubToolKit automatically runs a
sort of headless Application for tests without tests needing
to manage it. Can it be replaced with anything?</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div class="gmail_default" style=""><font face="monospace">
test {</font></div>
<div class="gmail_default" style=""><font face="monospace">
def cssDir =
file("${TEST_SDK_DIR}/shims/${moduleName}/javafx")</font></div>
<div class="gmail_default" style=""><font face="monospace">
jvmArgs enableNativeGraphics</font></div>
<div class="gmail_default" style=""><font face="monospace">
jvmArgs
"-Djavafx.toolkit=test.com.sun.javafx.pgstub.StubToolkit",</font></div>
<div class="gmail_default" style=""><font face="monospace">
"-DCSS_META_DATA_TEST_DIR=$cssDir"</font></div>
<div class="gmail_default" style=""><font face="monospace">
}</font></div>
<div class="gmail_default" style=""><br>
</div>
</blockquote>
<font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif">I know some people
copy UI classes into their project (keeping the same package
name as the real JFX control class, where it will take
precedence), and develop/test it <i>there</i>. If that's
the best solution to date, that's fine.</span><br>
</font>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif">In general, any
other quick development tips (in the realm of quickly
visually testing your changes) would be appreciated...</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif">Thanks in advance.</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif">Kind Regards,</span></font></div>
<div><font face="monospace"><span class="gmail_default"
style="font-family:verdana,sans-serif">Cormac</span></font></div>
</div>
</blockquote>
</body>
</html>