We've just released JFormDesigner 5.0.4, which fixes a NullPointerException
in the Java code generator (since 5.0.3).
Users of 5.0.3 are recommended to update to 5.0.4.
See Change Log for details
and download JFormDesigner 5.0.4.
2012-04-12
4 Comments
JFormDesigner, News
Share on Facebook
Email
We've just released JFormDesigner 5.0.3, which is now compatible with
IntelliJ IDEA 11.1, fixes minor bugs and brings some minor improvements.
See Change Log for details
and download JFormDesigner 5.0.3.
2012-04-04
JFormDesigner, News, IntelliJ IDEA
Share on Facebook
Email
We've just released JFormDesigner 5.0.2, which is now compatible with
IntelliJ IDEA 11, fixes minor bugs and brings some minor improvements.
See Change Log for details and
download JFormDesigner 5.0.2.
2011-12-07
3 Comments
JFormDesigner, News, IntelliJ IDEA
Share on Facebook
Email
Modern GUIs are becoming more and more minimalistic. Most controls (e.g. text
fields or buttons) nowadays use 1 pixel thin borders. Everybody is removing
borders from scroll and split panes. Even the split pane divider is often
reduced to 1 pixel (e.g. on Mac OS X since years or in current Mozilla
Thunderbird).
But how to create a 1 pixel thin divider with JSplitPane?
First idea was of course to invoke splitPane.setDividerSize(1)
.
This seems to work, but has the disadvantage that it is very hard for the user
to hit that single pixel line to move the divider. What we need is a
transparent divider that has an easy-to-hit
width (e.g. 9 pixels) and is placed between and over
the left and right split pane components.

Thanks to Swing's flexible design, it is relative easy to implement this.
First we set the divider size to 1 and let the split pane layout manager do
its work. The trick is now to override JSplitPane.layout()
and
modify the bounds of the divider (e.g. increase width and move left):
public class JSplitPaneWithZeroSizeDivider extends JSplitPane {
private int dividerDragSize = 9;
private int dividerDragOffset = 4;
public JSplitPaneWithZeroSizeDivider() {
setDividerSize( 1 );
setContinuousLayout( true );
}
@Override
public void layout() {
super.layout();
// increase divider width or height
BasicSplitPaneDivider divider = ((BasicSplitPaneUI)getUI()).getDivider();
Rectangle bounds = divider.getBounds();
if( orientation == HORIZONTAL_SPLIT ) {
bounds.x -= dividerDragOffset;
bounds.width = dividerDragSize;
} else {
bounds.y -= dividerDragOffset;
bounds.height = dividerDragSize;
}
divider.setBounds( bounds );
}
Then we need our own UI delegate that creates our divider.
@Override
public void updateUI() {
setUI( new SplitPaneWithZeroSizeDividerUI() );
revalidate();
}
private class SplitPaneWithZeroSizeDividerUI extends BasicSplitPaneUI {
@Override
public BasicSplitPaneDivider createDefaultDivider() {
return new ZeroSizeDivider( this );
}
}
And finally our divider, which draws the divider line and updates the drag
locations.
private class ZeroSizeDivider extends BasicSplitPaneDivider {
public ZeroSizeDivider( BasicSplitPaneUI ui ) {
super( ui );
super.setBorder( null );
setBackground( UIManager.getColor( "controlShadow" ) );
}
@Override
public void setBorder( Border border ) {
// ignore
}
@Override
public void paint( Graphics g ) {
g.setColor( getBackground() );
if( orientation == HORIZONTAL_SPLIT )
g.drawLine( dividerDragOffset, 0, dividerDragOffset, getHeight() - 1 );
else
g.drawLine( 0, dividerDragOffset, getWidth() - 1, dividerDragOffset );
}
@Override
protected void dragDividerTo( int location ) {
super.dragDividerTo( location + dividerDragOffset );
}
@Override
protected void finishDraggingTo( int location ) {
super.finishDraggingTo( location + dividerDragOffset );
}
}
}
That's it.
Download Source
Tested with Oracle/Sun Java 5, 6, and 7. Licensed under
BSD-2-Clause
with clause 2 removed.
2011-09-09
3 Comments
Swing
Share on Facebook
Email
We've just released JFormDesigner 5.0.1 and
5.1 Beta 3.
JFormDesigner 5.0.1
This release fixes minor bugs and brings some minor improvements.
If you're running JFormDesigner in a Java 7 VM, it is
recommended to update to this release because it fixes a NullPointerException
when using TitledBorder and running JFormDesigner in a Java 7 VM.
See Change Log for details and
download JFormDesigner 5.0.1.
JFormDesigner 5.1 Beta 3
Beta 3 Change Log:
- Go to event handler method in Java editor.
- All fixes from JFormDesigner 5.0.1.
Beta 2 Change Log:
- NetBeans: Project specific options.
- Palette: Display multiple items per row if there is enough room.
- Palette: New option "Item Names" in context menu to show only item
icons.
- NetBeans: fixed too dark background of panels, palette, headers, etc on
Mac.
- NetBeans: bug fixes.
- Fixed NullPointerException when using TitledBorder and running
JFormDesigner in a Java 7 VM.
Please give it a try, download
it and report bugs. Thanks.
2011-08-08
JFormDesigner, News, NetBeans
Share on Facebook
Email