This module provides helpers to minimize the boiler plate to build a Swing UI.
This class provides boiler plate code to have a main window with border layout. It is based on the Template Method pattern. It provides three hook methods to initialize a menu bar, a tool buttons bar and the main panel.
Example:
public final class MyFrame extends SwingFrame {
public MyFrame(final String title) {
super(title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE); // optional
setExitOnCloseWindow(true); // optional
}
@Override
protected void initMenu() {
final MenuBarBuilder builder = MenuBarBuilder.builder();
// Build and set menu here.
setJMenuBar(builder.create());
}
@Override
protected void initToolBar() {
final ToolBarBuilder builder = ToolBarBuilder.builder();
// Build and set tool bar here.
getContentPane().add(builder.create(), BorderLayout.NORTH);
}
@Override
protected void initPanel() {
// Initialize main panel here.
}
}
Use the frame that way:
final MyFrame frame = new MyFrame("My Frame");
frame.init();
This module privide builders to create UI components.
The MenuBarBuilder provides a internal DSL to create a menu bar.
Example:
final JMenuBar menubar = MenuBarBuilder.builder()
.menu("File")
.item("Open")
.addListener(new Listener())
.end()
.separator()
.item("Save")
.addListener(new Listener())
.end()
.end()
.menu("Edit")
.item("foo")
.end()
.end()
.menu("View")
.item("bar")
.end()
.end()
.menu("Window")
.item("baz")
.end()
.end()
.create();
The ToolBarBuilder provides a internal DSL to create a button tool bar.
Example:
final JToolBar toolbar = ToolBarBuilder.builder()
.button("/de/weltraumschaf/swing/folder_16x16.gif")
.toolTipText("Open an existing document.")
.addListener(new Listener())
.end()
.button("/de/weltraumschaf/swing/disk_16x16.gif")
.toolTipText("Save current document.")
.addListener(new Listener())
.end()
.button("/de/weltraumschaf/swing/page_16x16.gif")
.toolTipText("Create a new document.")
.addListener(new Listener())
.end()
.create();