Re: two labels in sequence, how hard can it be?
On Tuesday, May 7, 2013 3:12:21 PM UTC-7, Daniele Futtorovic wrote:
On 07/05/2013 22:44, Stefan Ram allegedly wrote: > I wanted to have a box=
starting with two labels, flush left, like: > > ..------------------------=
------------ > |[label alpha] > |[label beta] > |... > > . Turned out, to a=
dd such a label, I had to do all of the following: > > final javax.swing.Bo=
x vbox = javax.swing.Box.createVerticalBox(); > { final javax.swing.Box h=
box = javax.swing.Box.createHorizontalBox(); > final javax.swing.JLabel l=
abel = new javax.swing.JLabel( "alpha" ); > hbox.add( label ); > hbox.add=
( javax.swing.Box.createGlue() ); > hbox.setMaximumSize > ( new java.awt.Di=
mension > ( java.lang.Integer.MAX_VALUE, label.getHeight() )); > vbox.add( =
hbox ); } > .... > > When I add the label to the vbox directly (without an =
hbox), > it is not precisely aligned left, even when left alignment > is re=
quest. There still seemed to be some =EF=BF=BDglue=EF=BF=BD on the left > o=
f it, which I did not add there. > > When I do not setMaximumSize, the heig=
ht of the hbox is much > larger than the height of the label, that is: too =
large. > > But maybe my solution is too complicated? Is there a more > simp=
le solution that I am not aware of? > Never liked Box'es much... - GridBagL=
ayout - weightx = 1; weighty = 0; anchor = EAST; gridx = 0; gridy =
= 0; - add first label; - ++gridy; - add second label; If the Panel is bi=
gger than those two labels and you want them pushed to the top: - ++gridy; =
weighty = 1 - add Box.createGlue(); -- DF.
Or use a BorderLayout with one label in NORTH and one in SOUTH
--
Fred K