Convenience factories for Border and Background

Duncan Mak duncanmak at gmail.com
Mon Aug 23 19:10:36 UTC 2021


It feels more clear to me to see:Border.stroke(Paint stroke) and
Background.fill(Paint fill)

I vote in favor of those instead of Border.or and Background.of.

On Sun, Aug 22, 2021 at 7:46 PM Nir Lisker <nlisker at gmail.com> wrote:

> 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.
> >>
> >
>


-- 
Duncan.


More information about the openjfx-dev mailing list