Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #1391

How to prevent a long JLa

From "martinog2" <martinog2@THRWHITE.remove-dii-this>
Subject How to prevent a long JLa
Message-ID <1175721430.203113.150600@l77g2000hsb.googlegroups.com> (permalink)
Newsgroups comp.lang.java.gui
Date 2011-04-27 15:33 +0000
Organization TDS.net

Show all headers | View raw


  To: comp.lang.java.gui
Hi All,

I want to have a long JLabel, but I dont want my entire dialog to be
sized based on this long JLabel -- I want the JLabel to wrap, & I want
the dialog size to be set by other controls.

So I want something like this if the control (for ex. a JTextField) is
long:

A really really really really really long JLabel
<--------JTextField-------------------------------->

And something like this if the JTextField is short:

A really really really
really really long
JLabel
<---JTextField------->


I found out that I need to use <html> tags to get the JLabel to wrap.
So that was one hurdle. Now, I almost got what I want with the
following code:

[CODE]
import javax.swing.*;
import java.awt.*;

public class x
{
	private static void createAndShowGUI()
	{
		JFrame frame = new JFrame("test");
		frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);

		// Change content pane to JPanel set to BoxLayout
		JPanel framePanel = new JPanel();
		framePanel.setLayout(new BoxLayout(framePanel, BoxLayout.Y_AXIS));
		frame.setContentPane(framePanel);

		JLabel label = new JLabel("<html>Here is a label. It can get to be
very very very long aaaaaaa bbbbbbbbbbbbbbbb ccc dd eeeeeeee ffffff
gggggggggg hhhh.</html>");
		frame.add(label);

		// CHANGE JTEXTFIELD SIZE TO SEE PROBLEM
		//frame.add(new JTextField(80));
		frame.add(new JTextField(10));

		// THIS LINE ALMOST DOES WHAT I WANT
		label.setPreferredSize(new Dimension(0, 100));

		frame.pack();
		frame.setVisible(true);
	}

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

With this, I can get the effect I want. To see it, I change the size
of the JTextField. JTextField(10) -- it wraps. JTextField(80) -- it
doesnt wrap. Thats good.

I got it to work like this with this line:
label.setPreferredSize(new Dimension(0, 100));

The problem is the height. For the width, I can use '0' and it will
size correctly. I cant do the same with height. If I set it to '0' (or
-1, 1, 2, etc) then thats the height it uses. With '100', its ok when
the text field is small, but when its big, theres too much vertical
space around the label.

I dont know how to say:
   'set a preferred width, but leave the preferred height alone'

Or
  'set preferred width to 0 (and you'll later re-adjust that),
  and set preferred height to the height after you've wrapped it'

I had originally used <br> tags to force the wrapping myself, but
later found out my gui looks bad when Windows is set to 120 DPI. So I
basically want to avoid all hard coded sizes, or line breaks.

Thanks

---
 * 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

Back to comp.lang.java.gui | Previous | NextNext in thread | Find similar | Unroll thread


Thread

How to prevent a long JLa "martinog2" <martinog2@THRWHITE.remove-dii-this> - 2011-04-27 15:33 +0000
  Re: How to prevent a long "A. Bolmarcich" <a..bolmarcich@THRWHITE.remove-dii-this> - 2011-04-27 15:33 +0000
  Re: How to prevent a long "visionset" <visionset@THRWHITE.remove-dii-this> - 2011-04-27 15:33 +0000
  Re: How to prevent a long "Daniel Pitts" <daniel.pitts@THRWHITE.remove-dii-this> - 2011-04-27 15:33 +0000
  Re: How to prevent a long "martinog2" <martinog2@THRWHITE.remove-dii-this> - 2011-04-27 15:33 +0000

csiph-web