-
Bug
-
Resolution: Won't Fix
-
P4
-
None
-
1.2.1, 1.3.0
-
generic, x86
-
generic, windows_2000
Name: sg39081 Date: 05/05/99
It seems that some LayoutManagers don't pay attention to insets when
the component they are in shrinks. David Geary's _Graphic Java_
indicates that "layout managers will not place components inside a
comtainer's insets." But, if you shrink the panel below, you'll see that
the button in it is clearly drawn into the insets area. This occurs with both
JDK 1.1.x and JDK 1.2.x and with lightweight and heavyweight components.
BorderLayout and GridLayout work OK, FlowLayout and GridBagLayout don't.
I would have expected that the LayoutManagers would use minimumLayoutSize
so that the component shouldn't shrink beyond insets+minimalchildrenComponentSize;
import java.awt.*;
import javax.swing.*;
public class BorderTest extends JPanel {
public void paint(Graphics g) {
Dimension s = getSize();
for (int i=0; i<10; i++) {
g.drawLine(i, 0, i, s.height-1);
g.drawLine(0, i, s.width-1, i);
g.drawLine(0, s.height-i, s.width-1, s.height-i);
g.drawLine(s.width-1-i, 0, s.width-1-i, s.height-1);
}
super.paint(g);
}
public Insets getInsets() {
return new Insets(10, 10, 10, 10);
}
public Insets insets() {
return new Insets(10, 10, 10, 10);
}
public static void main(String[] args) {
JFrame f = new JFrame();
BorderTest bt = new BorderTest();
bt.setOpaque(false);
bt.add(new JButton("hi there xxxxxxxxxxxxxxxxxxxxxxxxxx"));
f.getContentPane().add(bt);
f.setSize(100, 100);
f.setVisible(true);
}
}
------------------------------------------------
java version "1.2"
Classic VM (build JDK-1.2-V, native threads)
java full version "JDK-1.2-V"
(Review ID: 57815)
======================================================================
- duplicates
-
JDK-4345619 MatteBorder doesn't take into account current clipping area
-
- Closed
-