Re: GroupLayout problem,
To: comp.lang.java.gui
On Aug 13, 4:52 pm, "Kaiser S." <sau...@name.invalid> wrote:
Hello,
I have a JPanel subclass with swing components on it. I don't manage to
put the button at the left of the panel. Why ?
Here is a simplified version of the source code:
=========================== >8 =====
package java_;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestGroupLayout extends JPanel {
public TestGroupLayout() {
init();
}
private void init() {
jLabel1 = new javax.swing.JLabel("l1");
combo1 = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel("l2");
combo2 = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel("l3");
spinner = new javax.swing.JSpinner();
check = new JCheckBox("check");
button = new JButton("bouton");
org.jdesktop.layout.GroupLayout layout = new
org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING,
false)
.add(check)
.add(layout.createSequentialGroup()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(combo1,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(layout.createSequentialGroup()
.add(jLabel2)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(combo2,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(layout.createSequentialGroup()
.add(jLabel3)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(spinner,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
.add(button)
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(check)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(combo1,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel2)
.add(combo2,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel3)
.add(spinner,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(button)
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setContentPane(new TestGroupLayout());
f.pack();
f.setVisible(true);
}
});
}
private JButton button;
protected JCheckBox check;
private javax.swing.JComboBox combo1;
private javax.swing.JComboBox combo2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
protected javax.swing.JLabel jLabel3;
protected javax.swing.JSpinner spinner;
}
=========================== >8 =====
Yes, I am the man who translates cljg GUI FAQ in Japanese. :)
The below code needs some more elaboration but I think you could get
the basic idea for using Groups both for x-direction and y-direction.
Using both direction is the MUST for the GroupLayout.
-------------------------------------------------------------
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestGroupLayoutX extends JPanel {
public TestGroupLayoutX() {
init();
}
private void init() {
jLabel1 = new javax.swing.JLabel("l1");
combo1 = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel("l2");
combo2 = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel("l3");
spinner = new javax.swing.JSpinner();
check = new JCheckBox("check");
button = new JButton("bouton");
org.jdesktop.layout.GroupLayout layout = new
org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
org.jdesktop.layout.GroupLayout.SequentialGroup hGroup
= layout.createSequentialGroup();
hGroup.add(layout.createParallelGroup().add(check).add(jLabel1).add(jLabel2).add(jLabel3).add(button)).
add(layout.createParallelGroup().add(combo1).add(combo2).add(spinner));
layout.setHorizontalGroup(hGroup);
org.jdesktop.layout.GroupLayout.SequentialGroup vGroup =
layout.createSequentialGroup();
vGroup.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(check)).
add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel1).add(combo1)).
add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel2).add(combo2)).
add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel3).add(spinner)).
add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(button));
layout.setVerticalGroup(vGroup);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setContentPane(new TestGroupLayoutX());
f.pack();
f.setVisible(true);
}
});
}
private JButton button;
protected JCheckBox check;
private javax.swing.JComboBox combo1;
private javax.swing.JComboBox combo2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
protected javax.swing.JLabel jLabel3;
protected javax.swing.JSpinner spinner;
}
---------------------------------------------
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24