SYNOPSIS
use Tk::JComboBox;
...
my $jcb = $parent->JComboBox(?options, ...?)
Creates and returns a JComboBox widget. The appearance and behavior of the widget
can be configured by passing one or more options, described
in more detail below.
HEIRARCHY
Tk::Widget // Tk::Frame // Tk::JComboBox
DESCRIPTION
JComboBox is a composite widget which contains a text label
or Entry, a Button, and a popup Listbox. It performs the same sort
of tasks that can be accomplished using BrowseEntry,
ComboEntry, Optionmenu, and MenuEntry.
JComboBox borrows heavily from the Java Swing component
bearing the same name, and although this widget is not as fully
featured, many of the method names, and the general behavior will
be familiar for those familiar with that component. Like the Java
component, this widget has two different forms: editable and
uneditable.
In the uneditable form, JComboBox resembles
Optionmenu. It is basically a button that activates a
a popup list. Items from the list are displayed on the
Button when they are selected.
When editable, JComboBox resembles ComboEntry,
MenuEntry, or BrowseEntry to varying degrees.
That is, the widget is composed of an Entry widget with a Button
to the right of it. Like the uneditable form, a button press will
activate a popup list.
For more detailed information on using
this widget, refer to the JComboBox tutorial.
COMPONENTS
Directly accessing and configuring JComboBox's
subwidgets should generally be avoided when possible. For most
cases, options are provided which will configure the subwidgets. They
are provided below for exceptions, and to provide a better idea of what
a particular option will affect in the descriptions below.
It's worth noting that some of the names below serve more of a functional
purpose than purely descriptive. There are some widgets, which have names
that may be misleading. For example, there are Labels used instead of Button
widgets yet they still are advertised as Buttons. This is because functionally,
they are used like Buttons, but they do not support all the same options that Button
widgets support. They are used instead for a more consistant appearance across
platforms. For this reason, it's important to pay attention to the Class as well as the
name listed in the table below.
Name: | ED_Button |
Class: | Label |
|
Editable Button. When the JComboBox is in editable
mode, this widget is used as the 'Button' that triggers the popup
listbox.
|
|
Name: | ED_Entry |
Class: | Entry |
|
Editable Entry. Used for Entry when the JComboBox is in
editable mode.
|
|
Name: | Listbox |
Class: | Scrolled Listbox |
|
Refers to the Listbox which pops up when the ComboBox Button
is activated.
|
|
Name: | Popup |
Class: | Toplevel |
|
The Toplevel window that Listbox is packed into
|
|
Name: | RO_Button |
Class: | Label |
|
Readonly Button. When the JComboBox is in readonly
mode, both the 'entry' and the 'button' (both Label widgets) are used
as buttons that trigger the popup listbox. This widget is
the portion of the button that displays the down arrow
|
|
Name: | RO_Entry |
Class: | Label |
|
Read Only Entry. This 'Entry', combined with
RO_Button, form the button for the button in readonly
mode.
|
|
OPTIONS
|
Name: | background |
Class | Background |
Switch: | -background |
Aliases: | -bg |
|
Sets the background color for the base widget,
the Button which triggers the Popup, and the window which
holds the Listbox (ED_Button, RO_Button, RO_Entry, and Popup).
Default is the normal default background color for whichever
platform you are on.
|
Switch: | -buttonbitmap |
Aliases: | -bbmp |
|
Specifies the bitmap to be used for the Button (ED_Button
and RO_Button) that activates the popup. Default is
Tk::JComboBox::downarrow, which is defined by the
class
|
|
Switch: | -buttonimage |
Aliases: | -bimg |
|
Specifies the image to be used for the Button (ED_Button
and RO_Button) that activates the popup. No default is
defined, because -buttonbmp is used for the down arrow,
by default
|
|
Switch: | -buttonborderwidth |
Aliases: | -bbd |
|
Only used in editable mode. This option configures borderwidth
for the Button (ED_Button) that activates the popup. In readonly
mode, -borderwidth is used
|
|
Switch: | -buttonrelief |
Aliases: | -brelief |
|
Only used in editable mode. This option configures relief
option for the Button (ED_Button) that activates the popup. In readonly
mode, -relief is used. Default value is raised.
|
|
Switch: | -choices |
Aliases: | -options |
|
Sets the elements which make up the list of list items displayed in
the Listbox. This option expects an array reference to a list of scalars, a list
of hash references or a mix of the two. Every time it is set, all existing list
elements are deleted and replaced with the new set. For more details, see
the section on Adding Elements to JComboBox
|
|
Name: | font |
Class | Font |
Switch: | -font |
|
Specifies the font to be used for all Subwidgets which display characters
(Listbox, ED_Entry, and RO_Entry)
|
|
Name: | gap |
Class | Gap |
Switch: | -gap |
|
Specifies the amount of space (in chars) between the longest
list element and the JCombobox Button (both RO_Button and ED_Button).
The Default value for this option is 2.
|
|
Name: | listHighlight |
Class | ListHighlight |
Switch: | -listhighlight |
|
Defines a set of extra bindings for the Listbox that highlights a list
element when the mouse pointer is over it, regardless of whether
or not Button-1 is pressed. This is a behavior typically seen in Win32
ComboBox components. Possible values for this option are 1
(enabled), and 0 (disabled). Default value is 1.
|
|
Switch: | -maxrows |
Aliases: | -visiblerows |
|
Controls the number of visible items within the popup listbox at any
given time. If this value is set to a number that is less than the
total number of list items, then the listbox is set to the height of the
submitted value and a scrollbar is used automatically so that the
remaining items can be scrolled to. This option is recommended for
long lists. The default value is undef.
|
|
Name: | mode |
Class | Mode |
Switch: | -mode |
|
Specifies the mode for the Listbox. There are two different modes,
editable and readonly. In editable mode, the widget
resembles an Entry widget with a button next to it, and the Entry
is editable. In readonly mode, the entire widget resembles a button,
and items can only be selected from the listbox. The default value
is readonly.
|
|
Name: | popupBackground |
Class | PopupBackground |
Switch: | -popupbackground |
Aliases: | -pbg |
|
Configures the background color for the toplevel window (Popup) that
contains the Listbox. Defaults to #D9D9D9 for Unix and
SystemButtonFacefor Win32.
|
|
Name: | popupborderwidth |
Class | Popupborderwidth |
Switch: | -popupborderwidth |
Aliases: | -pbd |
|
Configures the borderwidth for the toplevel window (Popup)
that contains the Listbox. This option can be used with
-popupbackground and -popuprelief
to create different sorts of borders for the Popup listbox window.
default value for this option is 2
|
|
Name: | popupRelief |
Class | PopupRelief |
Switch: | -popuprelief |
Aliases: | -prelief |
|
Configures the relief for the toplevel window (Popup) that contains the
the Listbox. Default value is flat
|
|
Name: | selectBackground |
Class | SelectBackground |
Switch: | -selectBackground |
Aliases: | -selectbg |
|
Configures the -selectbackground for both the JComboBox Entry (ED_Entry),
and the Listbox. Defaults to #C3C3C3 for Unix and
SystemHighlight for Win32.
|
|
Name: | selectCommand |
Class | selectCommand |
Switch: | -selectcommand |
Aliases: | -scmd |
|
Sets a callback to be executed everytime a list item is selected.
The callback is passed two parameters (in addition to any others
you defined): the selected index, and the selected value. There is
no default callback
|
|
Name: | selectForeground |
Class | SelectForeground |
Switch: | -selectForeground |
Aliases: | -selectfg |
|
Configures the -selectforeground for the JComboBox Entry (ED_Entry),
and the Listbox. Defaults to Black for Unix and
SystemHighlightText for Win32.
|
|
Name: | state |
Class | State |
Switch: | -state |
|
Specified one of two states for the JComboBox: normal
and disabled. When the state is normal The Popup
Listbox cannot be triggered except using widget methods,
and the selected value cannot be changed using the Listbox
or widget methods. The default value for this option is normal
|
|
Name: | textVariable |
Class | Variable |
Switch: | -textvariable |
|
Sets the -textvariable to the JComboBox Entry. Unlike the
standard option called -textvariable, this should be used for
read only purposes only. That is, if you want to pass in a
SCALAR reference, so that can variable will reflect the current
selection of the JComboBox. If a variable is set external
to the widget, it will modify the Entry while in editable
mode. This use should generally be avoided in preference
of the appropriate widget methods. This variable will reflect
the named or displayed value only.
|
|
Name: | validate |
Class | Validate |
Switch: | -validate |
|
Selects the mode in which validation should operate. This
option works exactly like the -validate option for Entry, except
that it supports two additional modes: match and
csmatch. Refer to section on
validation for more information on these additional modes.
Default value for this option is none.
|
|
-borderwidth
-class
|
-cursor
-highlightbackground
|
-highlightcolor
-highlightthickness
|
-relief
-takefocus
|
|
METHODS
addItem( string, ?option => value, ... )
Appends a new List item to be used in the Popup Listbox. string
is a scalar variable that is displayed in the Listbox. This method
takes two options: -selected and -value.
Options:
- -selected => selected
-
Where selected is a boolean value (true/yes/1) and determines whether or not
the list item is the select item within the JComboBox. The default value for this is false
and any subsequent call that uses this option, overrides previous ones.
- -value => value
-
where value is an alternate string associated with the List Item for times
when it's desirable to have a value other than the one displayed (I find
it to be useful for database applications)
Example:
$jcb->addItem('ALASKA', -value => 'AK', -selected => 1);
clearSelection()
Clears the currently selected item in the JComboBox if one is selected
getItemIndex( string, ?option => value, ... )
Searches the JCombobox for the first item that matches the given string
and returns that item's index. If no match is found, the method returns
undef. This method has two optional parameters: -mode and
-type.
Options:
- -type => type
-
Where type is either name, the displayed text, or value,
the alternate value associated with the item. If an item in the JComboBox does
not have a value defined, then that item's name is used. The default
type is name.
- -mode => mode
-
where mode affects the how the given string is compared to a list item.
Values include: exact, usecase, and ignorecase. In
the exact mode, the string must completely match a list item, including
it's case. In usecase mode, the string must match the beginning of the list
item, including it's case, and in ignorecase mode, the string must match
the beginning of the list item, but doesn't care about the case. The default
mode is exact.
Example:
The following would return the index of the first matching list item where AK
completely matched that item's value.
my $index = $jcb->getItemIndex('AK', -type => 'value');
getItemCount()
Returns the number of list items stored in the JComboBox.
getSelectedIndex()
Returns the index of the current selected item or undef if there
isn't one selected.
getSelectedValue()
Returns the value of the current selected item or undef if there
isn't one selected. In the case of an editable JComboBox, if no items
are selected, then the text in the entry is returned.
getItemNameAt( index )
Returns the string displayed in the listbox at the given index.
getItemValueAt( index )
Returns the alternate text associated with the list item at the given index if it's set.
Otherwise, will return the the displayed item.
hidePopup()
Causes the popup listbox to be withdrawn from the screen, unmapping it. Hiding and
showing the popup listbox is generally handled by various event handlers, but is
available for use in custom handlers or other use.
index( index )
Returns the integer index value that corresponds to index. If index is
end then return value is a count of the number of elements in the listbox
(not the index of the last element).
insertItemAt( index, string, ?option => value, ... )
Inserts a new list item into the JComboBox at the specified index.
string is a scalar variable that is displayed in the Listbox. This method
takes two options: -selected and -value. Refer to this section on
indices in the Listbox documention.
Options:
- -selected => selected
-
Where selected is a boolean value (true/yes/1) and determines whether or not
the list item is the select item within the JComboBox. The default value for this is false
and any subsequent call that uses this option, overrides previous ones.
- -value => value
-
where value is an alternate string associated with the List Item for times
when it's desirable to have a value other than the one displayed (I find
it to be useful for database applications)
Example:
The following example produces exactly the same result as the example given
for
addItem
$jcb->insertItemAt('end', 'ALASKA', -value => 'AK', -selected => 1);
popupIsVisible()
Returns 1 if the popup is mapped, 0 if it isn't
removeAllItems()
Completely removes all list items from the JComboBox, and clears
any selected item if present.
removeItemAt( index )
Deletes a single list item from the JCombobox at the specified
index.
see( index )
Adjusts the JComboBox so that the list item indicated by the given index
is visible. If the Listbox is hidden, it will be made visible, and the the list will shift
so that the item is viewable as necessary.
setSelectedIndex( index )
Selects the list item that exists at the given index.
showPopup()
Displays the popup listbox ( normally triggered by the
JComboBox button )
This document was written by Rob Seegel on 20 May 2001