Convenience factories for Border and Background

Nir Lisker nlisker at gmail.com
Sun Aug 22 23:45:00 UTC 2021


Getting this moving again as well.


> Another option could be to mirror the `Color` API in both `Border` and
> `Background`, like in the following examples:


Color.rgb(125, 100, 75)
> Border.rgb(125, 100, 75)
> Background.rgb(125, 100, 75)


Color.gray(127)
> Border.gray(127)
> Background.gray(127)


> Color.web("orange", 0.5)
> Border.web("orange", 0.5)
> Background.web("orange", 0.5)


This is possible, but I don't think it saves much. This API in Color makes
it easy to create a color, so just using that directly in the
border/background seems convenient enough to me. Comparing
    Border.rgb(125, 100, 75);
with
    Border.of(Color.rgb(125, 100, 75)); // whatever the method name ends up
being
tells me that funneling all the color creation ways into one method in
border/background is efficient enough to not merit multiple methods.

We could also mirror the named color constants, which would enable a
> very compact syntax:



> StackPane pane = new StackPane();
> pane.setBorder(Border.RED);
> pane.setBackground(Background.BLUE);


This is very similar to how "red" or "blue" are valid values for
> "-fx-border" or "-fx-background" in CSS.


I rather not duplicate hundreds of constants just to be able to do
    pane.setBorder(Border.RED);
instead of
    pane.setBorder(Border.of(Color.RED));

On Tue, Jun 8, 2021 at 2:41 AM Nir Lisker <nlisker at gmail.com> wrote:

> Does this constitute sufficient interest in the enhancement?
>
> On Thu, May 13, 2021 at 6:41 PM Michael Strauß <michaelstrau2 at gmail.com>
> wrote:
>
>> Another option could be to mirror the `Color` API in both `Border` and
>> `Background`, like in the following examples:
>>
>> Color.rgb(125, 100, 75)
>> Border.rgb(125, 100, 75)
>> Background.rgb(125, 100, 75)
>>
>> Color.gray(127)
>> Border.gray(127)
>> Background.gray(127)
>>
>> Color.web("orange", 0.5)
>> Border.web("orange", 0.5)
>> Background.web("orange", 0.5)
>>
>> We could also mirror the named color constants, which would enable a
>> very compact syntax:
>>
>> StackPane pane = new StackPane();
>> pane.setBorder(Border.RED);
>> pane.setBackground(Background.BLUE);
>>
>> This is very similar to how "red" or "blue" are valid values for
>> "-fx-border" or "-fx-background" in CSS.
>>
>


More information about the openjfx-dev mailing list