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


Groups > comp.lang.java.programmer > #4234

Re: Aligned elements in a JComboBox

From Knute Johnson <nospam@knutejohnson.com>
Newsgroups comp.lang.java.programmer
Subject Re: Aligned elements in a JComboBox
References <iqu8i1$ks3$1@news.belwue.de> <JGxAp.4755$iv4.3479@newsfe09.iad> <iquj14$f38$1@news.belwue.de>
Message-ID <7TEAp.10530$ZM2.10334@newsfe19.iad> (permalink)
Organization NewsDemon
Date 2011-05-17 18:00 -0700

Show all headers | View raw


On 05/17/2011 12:41 PM, Thomas Richter wrote:
> On 17.05.2011 18:49, Knute Johnson wrote:
>> On 05/17/2011 09:42 AM, Thomas Richter wrote:
>>> Hi folks,
>>>
>>> the problem at hand is how to align individual components that are part
>>> of a JComboBox.
>>>
>>> The JComboBox uses a custom Renderer to render its contents, and each
>>> content consists of two strings of variable size, arranged in a JPanel.
>>> The getListCellRendererComponent() of the renderer now returns the
>>> JPanel containing the two components.
>>>
>>> So far, so good. This works.
>>>
>>> The problem is that the sizes of the two components differ througout the
>>> items of the JComboBox, which means that the elements within the JList
>>> in the JCombobox (or rather, its JList rendering the non-editable items)
>>> are not aligned to each other. Of course they can't, they are individual
>>> JPanels each with its own layout manager, and thus do not know anything
>>> on each other.
>>>
>>> Needless to say, this looks visually very unattractive.
>>>
>>> So what can I do about this? I have a JComboBox with a very complex
>>> layout and the requirement that each entry necessarily is a pair of data
>>> types of various sizes. How can I make the elements be aware of each
>>> other and have a common layout for all of them?
>>>
>>> Illustration:
>>>
>>> +----------------------------------------------+
>>> | foofoo | barbarbarbarbarbarbarbar |
>>> +----------------------------------------------+
>>> | foofoofoofoofoofoofoo | bar |
>>> +----------------------------------------------+
>>>
>>> This is how the JComboBox currently renders. But I want it
>>> laid out such that the separator between the two elements forming one
>>> entry of it are underneath each other.
>>>
>>> Any ideas?
>>>
>>> Greetings,
>>> Thomas
>>
>> Figure out the largest size of your data in each field and lay out all
>> the elements with the same width and layout manager.
>
> Which layout manager accepts fixed widths for its components? If I use a
> GridBagLayout, for example, changing the dimension of the components
> within changes their alignment, and thus they'll move around even though
> the layout manager stays the same.
>
> Greetings,
> Thomas
>
>

You'll need one that follows preferred size or lay it out manually. 
GridBagLayout won't work for sure.  You can look back a few weeks and 
there was a discussion about similar issue with text fields.  Search for

'align Swing JLabels and JTextFields vertically with'

I did an example for the fellow with SpringLayout I think.  I don't 
think that would work here either but the idea is similar.  GridLayout 
would work if it would follow preferred or minimum size but I don't 
think it will.  You might consider extending that though or write your 
own layout manager.

-- 

Knute Johnson
s/knute/nospam/

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Aligned elements in a JComboBox Thomas Richter <thor@math.tu-berlin.de> - 2011-05-17 18:42 +0200
  Re: Aligned elements in a JComboBox Knute Johnson <nospam@knutejohnson.com> - 2011-05-17 09:49 -0700
    Re: Aligned elements in a JComboBox Thomas Richter <thor@math.tu-berlin.de> - 2011-05-17 21:41 +0200
      Re: Aligned elements in a JComboBox Knute Johnson <nospam@knutejohnson.com> - 2011-05-17 18:00 -0700
        Re: Aligned elements in a JComboBox Bent C Dalager <bcd@pvv.ntnu.no> - 2011-05-18 09:13 +0000
          Re: Aligned elements in a JComboBox "John B. Matthews" <nospam@nospam.invalid> - 2011-05-18 07:56 -0400
  Re: Aligned elements in a JComboBox Roedy Green <see_website@mindprod.com.invalid> - 2011-05-19 10:29 -0700

csiph-web