Listing 1
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension size = getSize();
Insets insets = getInsets();
int x = size.width - insets.left - insets.right - 2;
int y = size.height - insets.top - insets.bottom - 2;
for (int i = 0; i <= 2; i++) { // paint ribs, lower right up
paintRib(g, x, y - (i * 4));
}
for (int i = 0; i <= 2; i++) { // paint ribs, lower right left
if (i != 0) {
paintRib(g, x - (i * 4), y);
}
}
paintRib(g, x - 4, y - 4); // paint last rib, lower right back
}
Listing 2
public void mousePressed(MouseEvent e) {
Point pt = new Point(e.getPoint());
SwingUtilities.convertPointToScreen(pt, FrameResizer.this);
Rectangle frameBounds = parentContainer.getBounds();
mouseAdjust.x = frameBounds.x + frameBounds.width -
pt.x - 1;
mouseAdjust.y = frameBounds.y + frameBounds.height - pt.y - 1;
}
Listing 3
public void mouseDragged(MouseEvent e) {
mouseLocation.x = e.getX();
mouseLocation.y = e.getY();
SwingUtilities.convertPointToScreen(mouseLocation,
FrameResizer.this);
Rectangle frameBounds = parentContainer.getBounds();
parentContainer.setBounds(frameBounds.x, frameBounds.y,
mouseLocation.x - frameBounds.x + mouseAdjust.x,
mouseLocation.y - frameBounds.y + mouseAdjust.y);
}
Listing 4
private static void validate(final Container container) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (container instanceof Frame) {
((Frame)container).invalidate();
((Frame)container).validate();
} else if (container instanceof JInternalFrame) {
((JInternalFrame)container).revalidate();
((JInternalFrame)container).repaint();
}
container.repaint();
}
});
}
Listing 5
public static void setContinuousLayout(final Container container) {
new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent e) {
Dimension currentSize = container.getSize();
if (continuousLayoutWindows == null) {
continuousLayoutWindows = new HashMap();
}
Dimension windowSize =
(Dimension)continuousLayoutWindows.get(container);
if (windowSize == null) {
windowSize = new Dimension();
continuousLayoutWindows.put(container, windowSize);
}
if (!currentSize.equals(windowSize)) {
windowSize.width = currentSize.width;
windowSize.height = currentSize.height;
validate(container);
}
}
}).start();
}