Glavo,

I finally got around to looking into this. I see two requests here, one to add 
per-pixel window transparency to EXTENDED stages and another to support 
backdrop materials like Windows’ Mica and Acrylic.

On the Mac adding per-pixel transparency to all stage styles is easy. On 
Windows it would take a lot more work and as far as I know can’t be done with 
the existing DX9 back end (the necessary DirectComposition API’s are tied to 
DX11). We would also need to reconcile platform differences related to hit 
testing and drop shadows. So it’s a big ask.

(I know there’s a DX12 version of JavaFX in the works but it’s hard for me to 
get enthused. I run Windows in a VM and it’s likely to be stuck on DX11 for a 
long time.)

Supporting translucent backdrop materials is simpler since we can ask the OS to 
draw the effect and then composite the JavaFX content over it all within an 
opaque window. This is how the UNIFIED stage style works so we can leverage 
that logic. On Mac this is easy to set up. On Windows 11 22H2 and beyond we can 
easily access a couple of materials. For earlier Windows versions or for a more 
extensive list of materials we would need to roll our own using 
DirectComposition.

I know nothing about DirectComposition but I’m pretty sure someone on this list 
has used it to prototype an Acrylic effect for JavaFX. I’ll see if I can find 
that e-mail. I’m particularly interested in whether this can easily be turned 
on and off on-the-fly and how dark mode would be handled (the platform-provided 
materials respond to dark mode).

I’m probably not the right person to lead the charge on this. On the Mac side 
the platform code is straightforward. On the Windows side most of the platform 
work will involve Windows 10 which I can’t run. In any case I suspect the bulk 
of the work will be in defining the API and sorting out the CSS issues and on 
that I will defer to folks who have more experience (which is just about 
everyone).

I did not investigate any of this on Linux.

Martin

P.S. The UNIFIED stage style on Windows is broken. It’s easy to fix but the 
Aero sheet-of-glass effect it was added for is defunct so there’s been no 
motivation to get it working again. On macOS it was a brushed metal look that’s 
also long gone.

> On Oct 25, 2025, at 8:08 AM, Martin Fox <[email protected]> wrote:
> 
> With StageStyle.EXTENDED some of the window elements are drawn by the OS. On 
> all platforms that would include the drop shadows. For Mac it would include 
> the default close/iconify/fullscreen controls (which are difficult to replace 
> seamlessly) and on Windows I’m pretty sure the OS draws a thin outline or two 
> around each stage. If the goal is to allow control over the opacity of the 
> window keep in mind that you won’t be able to control the opacity of these 
> elements.
> 
> EXTENDED assumes an opaque background just like DECORATED does so this would 
> require an API addition in JavaFX. Which platforms are you most interested 
> in? My guess is that this is not much work on Mac, probably very tricky or 
> impossible on Windows and for Linux I would not even venture a guess.
> 
> Martin
> 
>> On Oct 21, 2025, at 10:09 AM, Dirk Lemmermann <[email protected]> wrote:
>> 
>> I am very much interested in this, too. I currently do not need it but I 
>> had projects in the past where I wished this feature had been available. I 
>> am confident this wish will resurface again at some point in time. It’s one 
>> more of those features that will make it possible for JavaFX developers to 
>> build apps that can compete with more native UI frameworks.
>> 
>> Dirk
>> 
>>> Am 21.10.2025 um 05:00 schrieb Glavo <[email protected]>:
>>> 
>>> Is anyone interested in this question?
>>> 
>>> On Wed, Oct 15, 2025 at 10:21 PM Glavo <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>>> Hi,
>>>> 
>>>> Our application has traditionally used StageStyle.TRANSPARENT to enable a 
>>>> fully customizable stage. 
>>>> This allows users to set custom backgrounds and adjust the window's 
>>>> opacity freely, leveraging our powerful personalization features.
>>>> 
>>>> After the release of JavaFX 25, we want to migrate to StageStyle.EXTENDED 
>>>> so that 
>>>> we can use native window decorations and no longer need to draw window 
>>>> shadows ourselves.
>>>> But using StageStyle.EXTENDED creates a stage with a white background, 
>>>> which prevents us 
>>>> from setting the window's opacity.
>>>> So is there any way we can make the stage background transparent while 
>>>> using StageStyle.EXTENDED?
>>>> 
>>>> Glavo
>> 

Reply via email to