Belongs to following categories: Extension, Snippet, ULC5.2, ULC6.0, ULC6.1,
Project Home
Downloads
Purpose
Implements a subclass of ULCFrame that cannot be made smaller than a certain minimum size. Is useful when you have content that needs a minimum size to be layouted correctly.
Resources
How to use
Create the frame and set its minimum size.
ULCMinimalSizeFrame frame = new ULCMinimalSizeFrame("MinimumSizeFrame");
frame.setMinimumSize(new Dimension(400, 300));
How it is implemented
The solution chosen adds a component listener to the client-side frame that ensures the minimum size of the frame every time the frame is resized.
Add the Component Listener client-side
We add the component listener to the basic frame in the restoreState() method. The restoreState() method is invoked by the ULC framework for each created client-side proxy. The getBasicComponent() returns the Swing component the proxy stands for, i.e. a JFrame in our case.
public void restoreState(Anything args) {
super.restoreState(args);
handleSetMinimumSize(args.get("minimumSize"));
getBasicComponent().addComponentListener(new MinimumSizeHandler());
}
Enforce the minimum Size
The component listener enforces the minimum size whenever the basic frame is resized. The frame is enlarged if either the width or the height of the JFrame is smaller than the minimum size.
private void enforceMinimumSize() {
if (fMinimumSize != null) {
if (fMinimumSize.width > getBasicComponent().getWidth()
|| fMinimumSize.height > getBasicComponent().getHeight()) { int width = Math.max(fMinimumSize.width,
getBasicComponent().getWidth());
int height = Math.max(fMinimumSize.height,
getBasicComponent().getHeight()); getBasicComponent().setSize(width, height);
}
}
}
private class MinimumSizeHandler extends ComponentAdapter {
public void componentResized(ComponentEvent event) {
enforceMinimumSize();
}
}Project Links
Project Home
Downloads
Author
daniel