MDI components for JavaFX

Related tags

GUI desktoppanefx
Overview

DesktopPaneFX

Build Status (travis) Build Status ASL2 Licensed download desktoppanefx core donations Patreon orange


DesktopPaneFX is a JavaFX version of Swing’s JDesktopPane which can be used as a container for individual "child" similar to JInternalFrames.

This project started as a fork of JavaFXMDI authored by Lincoln Minto.

desktoppanefx

Installing

You can get the latest version of DesktopPaneFX directly from Bintray’s JCenter repository or Maven Central.

gradle
repositories {
    jcenter()
}

dependencies {
    implementation 'org.kordamp.desktoppanefx:desktoppanefx-core:0.15.0'
}
maven
<dependencies>
    <dependency>
        <groupId>org.kordamp.desktoppanefx</groupId>
        <artifactId>desktoppanefx-core</artifactId>
        <version>0.15.0</version>
    </dependency>
</dependencies>

org.kordamp.desktoppanefx.sampler.Example

package com.acme;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import org.kordamp.desktoppanefx.scene.layout.DesktopPane;
import org.kordamp.desktoppanefx.scene.layout.InternalWindow;
import org.kordamp.ikonli.javafx.FontIcon;

public class Example extends Application {
    private static int count = 0;

    @Override
    public void start(Stage stage) throws Exception {
        DesktopPane desktopPane = new DesktopPane();
        Button newWindow = new Button("New Window");
        newWindow.setOnAction(e -> {
            InternalWindow window = new InternalWindow(
                "window-" + count,
                new FontIcon("mdi-application:20"),
                "Title " + count++,
                new Label("Content"));
            desktopPane.addInternalWindow(window);
        });

        BorderPane mainPane = new BorderPane();
        mainPane.setPrefSize(800, 600);
        mainPane.setTop(newWindow);
        mainPane.setCenter(desktopPane);

        stage.setScene(new Scene(mainPane));
        stage.show();
    }
}

Incubating Features

The following features can be activated by defining a System property with a "true" value:

Property

Description

desktoppanefx.detachable.windows

InternalWindow may be detached/attached from/to a DesktopPane

Building

You must meet the following requirements:

  • JDK11 as a minimum

  • Gradle 6.3

You may used the included gradle wrapper script if you don’t have gradle installed.

Installing Gradle

Manual
  1. Download Gradle from http://gradle.org/downloads

  2. Unzip the file into a directory without spaces (recommended).

  3. Create a GRADLE_HOME environment variable that points to this directory.

  4. Adjust your PATH environment variable to include $GRADLE_HOME/bin (%GRADLE_HOME%\bin on Windows).

  5. Test your setup by invoking gradle --version.

SDKMAN
  1. Follow the instructions found at http://sdkman.io/ to install SDKMAN.

  2. You need a POSIX environment if running Windows. We recommend using Babun Shell (http://babun.github.io/)

  3. Once SDKMAN is installed invoke sdk install gradle 6.3.

  4. Test your setup by invoking gradle --version.

Gum

Gum is a wrapper script that facilitates invoking gradle tasks anywhere within a Gradle project. It’s smart enough to use the gradle wrapper if available or your global gradle command. This is an optional download.

  1. Follow the instructions found at https://github.com/kordamp/gm to install gum

Next Steps

Make a full build issuing gradle build.

Run the sampler JavaFX application by invoking the following command

$ gm :sampler:run

Contributing

If you are interested in fixing issues and contributing directly to the code base, please contact us!

License

You might also like...

A JavaFX UI framework to create fully customized undecorated windows

A JavaFX UI framework to create fully customized undecorated windows

CustomStage A JavaFX undecorated stage which can fully be customized Donations If this project is helpful to you and love my work and feel like showin

Jan 6, 2023

Efficient VirtualFlow for JavaFX

Flowless Efficient VirtualFlow for JavaFX. VirtualFlow is a layout container that lays out cells in a vertical or horizontal flow. The main feature of

Nov 24, 2022

A framework for easily creating forms for a JavaFX UI.

A framework for easily creating forms for a JavaFX UI.

FormsFX Forms for business application made easy. Creating forms in Java has never been this easy! Maven To use this framework as part of your Maven b

Dec 30, 2022

:icecream: iOS frosty/translucent effect to JavaFX

:icecream: iOS frosty/translucent effect to JavaFX

FroXty is JavaFX library which replicates the famous iOS translucent effect with ease. Set-up FroXty can be imported into your project either by downl

Dec 11, 2022

💠 Undecorated JavaFX Scene with implemented move, resize, minimise, maximise, close and Windows Aero Snap controls.

💠 Undecorated JavaFX Scene with implemented move, resize, minimise, maximise, close and Windows Aero Snap controls.

Support me joining PI Network app with invitation code AlexKent FX-BorderlessScene ( Library ) 💠 Undecorated JavaFX Scene with implemented move, resi

Jan 4, 2023

Dynamic JavaFX form generation

FXForm 2 Stop coding forms: FXForm 2 can do it for you! About FXForm2 is a library providing automatic JavaFX form generation. How does it work? Write

Jan 9, 2023

A JavaFX library that allows Java2D code (Graphics2D) to be used to draw to a Canvas node.

A JavaFX library that allows Java2D code (Graphics2D) to be used to draw to a Canvas node.

FXGraphics2D Version 2.1, 3 October 2020. Overview FXGraphics2D is a free implementation of Java's Graphics2D API that targets the JavaFX Canvas. It m

Dec 31, 2022

Auto updating launcher for JavaFX Applications

FXLauncher Auto updating launcher for JavaFX Applications. Combined with JavaFX native packaging, you get a native installer with automatic app update

Dec 27, 2022

Controls for adding Parallax effects for Java (JavaFX)

Controls for adding Parallax effects for Java (JavaFX)

FXParallax Parallax framework for Java (JavaFX). This framework adds controls to add Parallax effects to JavaFX application, this effect can add a sen

Sep 30, 2022
Comments
  • License violations were found

    License violations were found

    Replicate

    Attempted to update the demo application to use JavaFX 11 and Gradle 6.6.1.

    1. Download desktop-pane-fx.zip.
    2. Unzip the archive.
    3. Change to the project directory.
    4. Run: gradle clean build

    Expected

    Application builds.

    Actual

    Missing header in: subprojects/desktoppanefx-core/desktoppanefx-core.gradle
    > Task :desktoppanefx-core:licenseGradle FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':desktoppanefx-core:licenseGradle'.
    > License violations were found: /home/username/dev/java/desktoppanefx/subprojects/desktoppanefx-core/desktoppanefx-core.gradle}
    

    Environment

    Liberica JDK 14 (full), Linux (XFCE/X11), IntelliJ 2020 (recent version), Gradle 6.6.1

    not an issue 
    opened by DaveJarvis 3
  • Redetached window becomes content of DesktopPane

    Redetached window becomes content of DesktopPane

    Hi. I found this behaviour:

    1. Open new window on desktop pane
    2. Maximize it
    3. Click detach
    4. Click attach
    5. Click Maximize

    After the last step the content of window becomes content of the desktop pane. Whatever was on the desktop pane gets lost.

    Thanks

    bug 
    opened by vindis 1
  • onShowing and onShown InternalWindowEvent handlers are not working

    onShowing and onShown InternalWindowEvent handlers are not working

    Hi,

    The WINDOW_SHOWING and WINDOW_SHOWN event handlers aren't getting called.

    I used the following simple code for testing:

    window.setOnShowing(e -> System.out.println(e.getEventType()));
    window.setOnShown(e -> System.out.println(e.getEventType()));
    
    desktopPane.addInternalWindow(window);
    

    I also attached the following InternalWindowEvent handlers and they all worked fine.

    window.setOnMaximizing(e -> System.out.println(e.getEventType()));
    window.setOnMaximized(e -> System.out.println(e.getEventType()));
    
    window.setOnRestoring(e -> System.out.println(e.getEventType()));
    window.setOnRestored(e -> System.out.println(e.getEventType()));
    
    window.setOnMinimizing(e -> System.out.println(e.getEventType()));
    window.setOnMinimized(e -> System.out.println(e.getEventType()));
    
    window.setOnHiding(e -> System.out.println(e.getEventType()));
    window.setOnHidden(e -> System.out.println(e.getEventType()));
    
    window.setOnCloseRequest(e -> System.out.println(e.getEventType()));
    

    Please let me know if you need any additional info. I'm using the latest 0.12.0 release.

    Regards, Ravi

    bug 
    opened by RaviOnline 0
  • Non resizable InternalWindow can't be fully maximized

    Non resizable InternalWindow can't be fully maximized

    1. create an InternalWindow.
    2. set resizable to false.
    3. click in the maximize button.

    Expected: window is fully maximized. Actual behavior: window remains same size and location changes to (0,0).

    bug 
    opened by aalmiray 0
Releases(early-access)
  • early-access(May 6, 2021)

    Changelog

    🧰 Tasks

    • 74f6b8b Fix trigger in early-access workflow
    • 1edc72c Add JReleaser configuration
    • faa7253 Add build workflow
    • 6a062e3 Update build settings

    • 1845d4e Fix broken build
    • 79a87cc Add missing module descriptors

    Contributors

    Andres Almiray

    Source code(tar.gz)
    Source code(zip)
Owner
Kordamp
Kordamp
Nightmare-text - This is a simple lib that help to create, titles, actionbars, hovers and click actions chat components.

Nightmare text This is a simple lib that help to create, titles, actionbars, hovers and click actions chat components. Setup public final class Testin

Jonathan Narvaez 8 Mar 9, 2022
Tray Icon implementation for JavaFX applications. Say goodbye to using AWT's SystemTray icon, instead use a JavaFX Tray Icon.

FXTrayIcon Library intended for use in JavaFX applications that makes adding a System Tray icon easier. The FXTrayIcon class handles all the messy AWT

Dustin Redmond 248 Dec 30, 2022
Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE 8 and provides the functionalities to use and handle easily Tiles in your JavaFX application.

Lib-Tile Intention Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE and provides the functionalities to use and handle easily Tile

Peter Rogge 13 Apr 13, 2022
DataFX - is a JavaFX frameworks that provides additional features to create MVC based applications in JavaFX by providing routing and a context for CDI.

What you’ve stumbled upon here is a project that intends to make retrieving, massaging, populating, viewing, and editing data in JavaFX UI controls ea

Guigarage 110 Dec 29, 2022
Collection of Binding helpers for JavaFX(8)

Advanced-Bindings for JavaFX (8) advanced-bindings is a collection of useful helpers and custom binding implementations to simplify the development of

Manuel Mauky 63 Nov 19, 2022
Docking framework for JavaFX platform

Docking framework for JavaFX platform AnchorFX is a gratis and open source library for JavaFX to create graphical interfaces with docking features Anc

Alessio Vinerbi 197 Oct 15, 2022
A library of +70 ready-to-use animations for JavaFX

AnimateFX A library of ready-to-use animations for JavaFX Features: Custom animations Custom interpolators Play/Stop animation Play an animation after

Loïc Sculier 366 Jan 5, 2023
BootstrapFX: Bootstrap for JavaFX

BootstrapFX BootstrapFX is a partial port of Twitter Bootstrap for JavaFX. It mainly provides a CSS stylesheet that closely resembles the original whi

Kordamp 810 Dec 28, 2022
A Java framework for creating sophisticated calendar views (JavaFX 8, 9, 10, and 11)

CalendarFX A Java framework for creating sophisticated calendar views based on JavaFX. A detailed developer manual can be found online: CalendarFX 8 D

DLSC Software & Consulting GmbH 660 Jan 6, 2023
Allow runtime modification of JavaFX CSS

cssfx ⚠ WARNING ⚠ In version 11.3.0 we have relocated & refactored the project. maven groupId has been changed to fr.brouillard.oss java module name h

Matthieu Brouillard 134 Jan 2, 2023