GridBagBlues #2376234



In the GridBagLayout example that follows, all the panels nest nicely within the frame with no spare space.

Now change the last three lines of the constructor
from
add(panel5, new GBC(3, 1, 1, GBC.REMAINDER));
//add(panel5, new GBC(3, 1, 1, GBC.RELATIVE));
//add(panel6, new GBC(3, 3, 1, 1));
to
//add(panel5, new GBC(3, 1, 1, GBC.REMAINDER));
add(panel5, new GBC(3, 1, 1, GBC.RELATIVE));
add(panel6, new GBC(3, 3, 1, 1));

Now there is a large blank area at the bottom of the frame. Can anyone tell me why?



// MyApp9.java

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class MyApp9 extends JPanel {

static final String[] lorem = { "lorem", "ipsum", "dolor", "sit",
"amet", "consectateur", "adipsicing", "elit", "sed",
"do", "euismod", "tempor", "incididunt", "ut", "labore",
"et", "dolore", "magna", "aliqua", "ut", "enim", "ad",
"minim", "veniam", "quis", "nostrud", "exertitation",
"ullamco", "laboris", "nisi", "ut", "aliquip", "ex",
"ea", "commodo", "consequat", "Duis", "aute", "irure",
"dolor", "in", "reprehendrit", "in", "voluptate", "velit",
"esse", "cillum", "dolore", "eu", "fugiat", "nulla",
"pariatur", "Excepteur", "sint", "accaecat", "cupidatat",
"non", "proident", "sunt", "in", "culpa", "qui", "officia",
"deserunt", "mollit" };

MyApp9() {
setBorder(BorderFactory.createLineBorder(Color.RED, 5));
int j = 0;

JPanel panel0 = new JPanel();
panel0.setBorder(BorderFactory.createTitledBorder("Panel 0"));
panel0.setLayout(new BoxLayout(panel0, BoxLayout.LINE_AXIS));
for (int i = 0; i < 4; i++)
panel0.add(new JLabel(lorem[j++]+" "));

JPanel panel1 = new JPanel();
panel1.setBorder(BorderFactory.createTitledBorder("Panel 1"));
panel1.setLayout(new BoxLayout(panel1, BoxLayout.PAGE_AXIS));
for (int i = 0; i < 14; i++)
panel1.add(new JLabel(lorem[j++]));

JPanel panel2 = new JPanel();
panel2.setBorder(BorderFactory.createTitledBorder("Panel 2"));
panel2.setLayout(new BoxLayout(panel2, BoxLayout.PAGE_AXIS));
for (int i = 0; i < 15; i++)
panel2.add(new JLabel(lorem[j++]));

JPanel panel3 = new JPanel();
panel3.setBorder(BorderFactory.createTitledBorder("Panel 3"));
panel3.setLayout(new BoxLayout(panel3, BoxLayout.PAGE_AXIS));
for (int i = 0; i < 2; i++)
panel3.add(new JLabel(lorem[j++]));

JPanel panel4 = new JPanel();
panel4.setBorder(BorderFactory.createTitledBorder("Panel 4"));
panel4.setLayout(new BoxLayout(panel4, BoxLayout.PAGE_AXIS));
for (int i = 0; i < 8; i++)
panel4.add(new JLabel(lorem[j++]));

JPanel panel5 = new JPanel();
panel5.setBorder(BorderFactory.createTitledBorder("Panel 5"));
panel5.setLayout(new BoxLayout(panel5, BoxLayout.PAGE_AXIS));
for (int i = 0; i < 16; i++)
panel5.add(new JLabel(lorem[j++]));

JPanel panel6 = new JPanel();
panel6.setBorder(BorderFactory.createTitledBorder("Panel 6"));
panel6.setLayout(new BoxLayout(panel6, BoxLayout.PAGE_AXIS));
for (int i = 0; i < 2; i++)
panel6.add(new JLabel(lorem[j++]));

setLayout(new GridBagLayout());
add(panel0, new GBC(0, 0, GBC.REMAINDER, 1));
add(panel1, new GBC(0, 1, 1, GBC.REMAINDER));
add(panel2, new GBC(1, 1, 1, GBC.REMAINDER));
add(panel3, new GBC(2, 1, 1, 1));
add(panel4, new GBC(2, 2, 1, GBC.REMAINDER));
add(panel5, new GBC(3, 1, 1, GBC.REMAINDER));
//add(panel5, new GBC(3, 1, 1, GBC.RELATIVE));
//add(panel6, new GBC(3, 3, 1, 1));

} // constructor

class GBC extends GridBagConstraints {

GBC(int x, int y, int width, int height) {
super(x, y, width, height, 0.0, 0.0,
GridBagConstraints.FIRST_LINE_START,
GridBagConstraints.NONE, new Insets(0, 0, 0, 0),
0, 0);
}
}

private static void createAndShowGUI() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.out.println("Unable to set L&F");
}
JFrame.setDefaultLookAndFeelDecorated(true);

JFrame frame = new JFrame("MyApp9");
frame.setContentPane(new MyApp9());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

}
.



Relevant Pages

  • How Do I Set the Focus to a Object?
    ... I had a program running some time back that brought up a <JPanel> ob- ... int height; ... Color clr; ... public void keyReleased ...
    (comp.lang.java.programmer)
  • JPanel inside a JScrollPane
    ... I have a JPanel ... subclass which I'd like to be able to scroll in my app. ... public int getScrollableBlockIncrement( ... public boolean getScrollableTracksViewportHeight() { ...
    (comp.lang.java.gui)
  • Applet Java Problem help please
    ... public static final int YD=30; ... JPanel jpanel1=new JPanel; ... public void paint{ ... class EnsForme extends JPanel implements MouseListener,MouseMotionListener { ...
    (comp.lang.java.help)
  • Applet Problem help please
    ... public static final int YD=30; ... JPanel jpanel1=new JPanel; ... public void paint{ ... class EnsForme extends JPanel implements MouseListener,MouseMotionListener { ...
    (comp.lang.java.help)
  • Re: Size of JPanel inside contentPane
    ... setBounds(int, int, int, int), where you can write the position and the ... JPanel main=new Panel; ... "Heiko Fleischmann" escribió en el mensaje ... > I have a JPanel as a contentPane of a JFrame, ...
    (comp.lang.java.help)