<div dir="ltr"><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">Thank you both John and Michael for the detailed mails. Yeah, I've dabbled with both approaches (building SDK each vs. copying classes to a separate project).</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">I was curious if there was some <i>third</i> way to run from the JFX project itself without needing to actually build the SDK each time (or copying classes).</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">It sounds like there isn't, otherwise you'd have mentioned it, so that's the answer... I was mainly wondering if I was missing a more streamlined way.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Thanks again.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Kind Regards,</div><div class="gmail_default" style="font-family:verdana,sans-serif">Cormac</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, 22 Dec 2025 at 00:32, John Hendrikx <<a href="mailto:john.hendrikx@gmail.com">john.hendrikx@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div>
<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:ii_19b439f97582e95dbc31" alt=""></p>
<p><br>
</p>
<p>--John<br>
</p>
<p><br>
</p>
<div>On 21/12/2025 22:27, Cormac Redmond
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div style="font-family:verdana,sans-serif">Hi,</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div 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 style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">Obviously building the
SDK and "using" it in an application is time consuming.</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div 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 style="font-family:verdana,sans-serif"><br>
</div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div><font face="monospace">
test {</font></div>
<div><font face="monospace">
def cssDir =
file("${TEST_SDK_DIR}/shims/${moduleName}/javafx")</font></div>
<div><font face="monospace">
jvmArgs enableNativeGraphics</font></div>
<div><font face="monospace">
jvmArgs
"-Djavafx.toolkit=test.com.sun.javafx.pgstub.StubToolkit",</font></div>
<div><font face="monospace">
"-DCSS_META_DATA_TEST_DIR=$cssDir"</font></div>
<div><font face="monospace">
}</font></div>
<div><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>
</div>
</blockquote></div></div>