class org.aswing.JList extends Container
A component that allows the user to select one or more objects from a
list. A separate model, ListModel
, represents the contents
of the list. It's easy to display an array objects, using
a JList
constructor that builds a ListModel
instance for you:
// Create a JList that displays the strings in data[]var data:Array = ["one", "two", "three", "four"]; var dataList:JList = new JList(data);`
// The value of the JList model property is an object that provides // a read-only view of the data. It was constructed automatically.
for(int i = 0; i < dataList.getModel().getSize(); i++) { System.out.println(dataList.getModel().getElementAt(i)); }
// Create a JList that displays the values in a
VectorListModel
.var vec:VectorListModel = new VectorListModel(["one", "two", "three", "four"]); var vecList:JList = new JList(vec);
//When you add elements to the vector, the JList will be automatically updated. vec.append("five");
JList
doesn't support scrolling directly.
To create a scrolling
list you make the JList
the viewport of a
JScrollPane
. For example:
JScrollPane scrollPane = new JScrollPane(dataList); // Or in two steps: JScrollPane scrollPane = new JScrollPane(); scrollPane.setView(dataList);
By default the JList
selection model is
this.SINGLE_SELECTION
.
String[] data = {"one", "two", "three", "four"}; JList dataList = new JList(data);dataList.setSelectedIndex(1); // select "two" dataList.getSelectedValue(); // returns "two"
The contents of a JList
can be dynamic,
in other words, the list elements can
change value and the size of the list can change after the
JList
has
been created. The JList
observes changes in its model with a
ListDataListener
implementation. A correct
implementation of ListModel
notifies
it's listeners each time a change occurs. The changes are
characterized by a ListDataEvent
, which identifies
the range of list indices that have been modified, added, or removed.
Simple dynamic-content JList
applications can use the
VectorListModel
class to store list elements. This class
implements the ListModel
and IVector
interfaces
and provides the Vector API. Applications that need to
provide custom ListModel
implementations can subclass
AbstractListModel
, which provides basic
ListDataListener
support.
JList
uses a Component
provision, provided by
a delegate called the
ListCell
, to paint the visible cells in the list.ListCell
created by a ListCellFactory
, to custom
the item representation of the list, you need a custom ListCellFactory
.
For example a IconListCellFactory create IconListCells.
ListCellFactory
is related to the List's performace too, see the doc
comments of ListCellFactory
for the details.
And if you want a horizontal scrollbar visible when item width is bigger than the visible
width, you need a not ListCellFactory.isShareCells
Factory(and of course the List should located
in a JScrollPane first). ListCellFactory.isShareCells
Factory
can not count the maximum width of list items.
@author paling
@see ListCellFactory
@see ListCell
@see ListModel
@see VectorListModel
![]() | Show Events | Hide Events
|
Class Fields
Instance Fields
var cellFactory:ListCellFactory
A cell factory for this List
Setting will cause all cells recreating by new factory. @see ListCellFactory
True to make the cell always have same width with the List container,
and the horizontal scrollbar will not shown if the list is in a JScrollPane
;
*
False to make it as same as its preffered width.
var preferredWidthWhenNoCount:Int
The preferred with of the List, it is only used when List have no counting for its prefferredWidth.
When ListCellFactory.isShareCells
== true, List will not count prefferred width.
var selectedIndex:Int
A single selected cell. @see ListSelectionModel#setSelectionInterval @see #isSelectedIndex() @see #addSelectionListener()
* @see #ensureIndexIsVisible()
var selectionBackground:ASColor
A background color for selected cells.
Cell renderers can use this color to the fill selected cells.
The default value of this property is defined by the look and feel implementation.
@see #selectionForeground @see Component.foreground @see Component.background @see Component.font
var selectionForeground:ASColor
A foreground color for selected cells.
Cell renderers can use this color to render text and graphics for selected cells.
The default value of this property is defined by the look and feel implementation.
@see #selectionBackground @see Component.foreground @see Component.background @see Component.font
var selectionMode:Int
Determines whether single-item or multiple-item selections are allowed. If selection mode changed, will cause clear selection; @see #SINGLESELECTION @see #MULTIPLESELECTION
var selectionModel:ListSelectionModel
A non-null
ListSelectionModel
implementation.
The selection model handles the task of making single selections, multiple selections.
selectionModel | the |
var visibleCellWidth:Int
The preferred width the list that can be displayed.
The default value of this property is -1. -1 means the width that can display all content.
@see #visibleRowCount @see #preferredCellWidthWhenNoCount
var visibleRowCount:Int
The preferred number of rows in the list that can be displayed. -1 means prefer to display all rows.
The default value of this property is -1. The rowHeight will be counted as 20 if the cell factory produces not same height cells. @see #visibleCellWidth()
function new(?listData:Dynamic = null, ?cellFactory:ListCellFactory = null): Void
Create a list.
listData | (optional)a ListModel or a Array. |
cellFactory | (optional)the cellFactory for this List. |
function addLayoutComponent(comp:Component, constraints:Dynamic): Void
Implementation of LayoutManager interface @see LayoutManager.addLayoutComponent
function addSelectionInterval(index0:Int, index1:Int, ?programmatic:Bool = true): Void
@see ListSelectionModel#addSelectionInterval() @see #removeSelectionInterval()
index0 | index0. |
index1 | index1. |
programmatic | indicate if this is a programmatic change. |
function addSelectionListener(listener:Dynamic ->Void?priority:Int = 0, ?useWeakReference:Bool = false): Void
Adds a listener to list selection changed. @see org.aswing.event.SelectionEvent
listener | the listener to be add. |
priority | the priority |
useWeakReference | Determines whether the reference to the listener is strong or weak. |
function addStateListener(listener:Dynamic ->Void?priority:Int = 0, ?useWeakReference:Bool = false): Void
Add a listener to listen the viewpoat state change event.
When the viewpoat's state changed, the state is all about:
this.viewPosition
this.verticalUnitIncrement
this.verticalBlockIncrement
this.horizontalUnitIncrement
this.horizontalBlockIncrement
listener | the listener |
priority | the priority |
useWeakReference | Determines whether the reference to the listener is strong or weak. |
function clearSelection(?programmatic:Bool = true): Void
Clears the selection - after calling this method isSelectionEmpty will return true. This is a convenience method that just delegates to the selectionModel.
programmatic | indicate if this is a programmatic change. |
function contentsChanged(e:ListDataEvent): Void
Data in the list has changed, update JList if needed.
function ensureIndexIsVisible(index:Int): Void
Scrolls the JList to make the specified cell completely visible. @see #setFirstVisibleIndex()
function getAnchorSelectionIndex(): Int
Returns the first index argument from the most recent
addSelectionModel
or setSelectionInterval
call.
This is a convenience method that just delegates to the
selectionModel
.
@see ListSelectionModel#getAnchorSelectionIndex @see #addSelectionInterval() @see #setSelectionInterval() @see #addSelectionListener()
returns | the index that most recently anchored an interval selection |
function getLayoutAlignmentX(target:Container): Float
Implementation of LayoutManager interface @see LayoutManager.getLayoutAlignmentX
returns | AsWingConstants.CENTER |
function getLayoutAlignmentY(target:Container): Float
Implementation of LayoutManager interface @see LayoutManager.getLayoutAlignmentY
returns | 0 |
function getLeadSelectionIndex(): Int
Returns the second index argument from the most recent
#addSelectionInterval
or #setSelectionInterval
call.
This is a convenience method that just delegates to the
selectionModel
.
@see ListSelectionModel#getLeadSelectionIndex @see #addSelectionInterval() @see #setSelectionInterval() @see #addSelectionListener()
returns | the index that most recently ended a interval selection |
function getSelectedIndex(): Int
Return the selected index, if selection multiple, return the first. if not selected any, return -1.
returns | the selected index |
function getSelectedIndices(): Array<Dynamic>
Returns an array of all of the selected indices in increasing order.
returns | a array contains all selected indices |
function getSelectedValue(): Dynamic
Returns the first selected value, or null if the selection is empty.
returns | the first selected value |
function getSelectedValues(): Array<Dynamic>
Returns an array of the values for the selected cells. The returned values are sorted in increasing index order.
returns | the selected values or an empty list if nothing is selected |
function getViewportPane(): Component
Implementation of Viewportable
interface
@see Viewportable.getViewportPane
function intervalRemoved(e:ListDataEvent): Void
Data in the list has changed, update JList if needed.
function invalidateLayout(target:Container): Void
Implementation of LayoutManager interface @see LayoutManager.invalidateLayout
function isAutoDnDDropTargetAllown(): Bool
Returns is this list allown to automatically be as an drag and drop target. @see #org.aswing.MutableListModel @see #DNDNONE @see #DNDMOVE @see #DND_COPY
function isAutoDnDInitiatorAllown(): Bool
Returns is this list allown to automatically be as an drag and drop initiator. @see #org.aswing.MutableListModel @see #DNDNONE @see #DNDMOVE @see #DND_COPY
function isMutableModel(): Bool
Returns is the source data is acceptale to drop in this list as build-in support
function isSelectionEmpty(): Bool
Returns true if nothing is selected.
returns | true if nothing is selected, false otherwise. |
function layoutContainer(target:Container): Void
Implementation of LayoutManager interface @see LayoutManager.layoutContainer
function maximumLayoutSize(target:Container): IntDimension
Implementation of LayoutManager interface @see LayoutManager.maximumLayoutSize
function minimumLayoutSize(target:Container): IntDimension
Implementation of LayoutManager interface @see LayoutManager.minimumLayoutSize
function preferredLayoutSize(target:Container): IntDimension
Implementation of LayoutManager interface @see LayoutManager.preferredLayoutSize
function removeLayoutComponent(comp:Component): Void
Implementation of LayoutManager interface @see LayoutManager.removeLayoutComponent
function removeSelectionInterval(index0:Int, index1:Int, ?programmatic:Bool = true): Void
@see ListSelectionModel#removeSelectionInterval()
index0 | index0. |
index1 | index1. |
programmatic | indicate if this is a programmatic change. |
function removeSelectionListener(listener:Dynamic ->Void): Void
Removes a listener from list selection changed listeners. @see org.aswing.event.SelectionEvent
listener | the listener to be removed. |
function removeStateListener(listener:Dynamic ->Void): Void
Removes a state listener. @see org.aswing.event.AWEvent#STATE_CHANGED
listener | the listener to be removed. |
function scrollToBottomLeft(): Void
Scrolls to view bottom left content.
This will make the scrollbars of JScrollPane
scrolled automatically,
if it is located in a JScrollPane
.
function scrollToBottomRight(): Void
Scrolls to view bottom right content.
This will make the scrollbars of JScrollPane
scrolled automatically,
if it is located in a JScrollPane
.
function scrollToTopLeft(): Void
Scrolls to view top left content.
This will make the scrollbars of JScrollPane
scrolled automatically,
if it is located in a JScrollPane
.
function scrollToTopRight(): Void
Scrolls to view to right content.
This will make the scrollbars of JScrollPane
scrolled automatically,
if it is located in a JScrollPane
.
function selectAll(?programmatic:Bool = true): Void
Selects all elements in the list.
* @param programmatic indicate if this is a programmatic change. @see #setSelectionInterval
function setFirstVisibleIndex(index:Int): Void
scroll the list to view the specified index as first visible. If the list data elements is too short can not move the specified index to be first, just scroll as top as can. @see #ensureIndexIsVisible() @see #setLastVisibleIndex()
function setLastVisibleIndex(index:Int): Void
scroll the list to view the specified index as last visible If the list data elements is too short can not move the specified index to be last, just scroll as bottom as can. @see ensureIndexIsVisible() @see setFirstVisibleIndex()
function setSelectedIndex(index:Int, ?programmatic:Bool = true): Void
Selects a single cell. @see ListSelectionModel#setSelectionInterval @see #isSelectedIndex() @see #addSelectionListener()
* @see #ensureIndexIsVisible()
index | the index to be seleted. |
programmatic | indicate if this is a programmatic change. |
function setSelectedIndices(indices:Array<Dynamic>, ?programmatic:Bool = true): Void
Selects a set of cells.
This will not cause a scroll, if you want to scroll to visible the selected value, call '#ensureIndexIsVisible'.
@see #isSelectedIndex() @see #addSelectionListener() @see #ensureIndexIsVisible()
indices | an array of the indices of the cells to select. |
programmatic | indicate if this is a programmatic change. |
function setSelectedValue(value:Dynamic, ?programmatic:Bool = true): Void
Selects the specified object from the list. This will not cause a scroll, if you want to scroll to visible the selected value, call ensureIndexIsVisible(). @param programmatic indicate if this is a programmatic change. @see #setSelectedIndex() @see #ensureIndexIsVisible()
value | the value to be selected. * |
function setSelectedValues(values:Array<Dynamic>, ?programmatic:Bool = true): Void
Selects a set of cells.
This will not cause a scroll, if you want to scroll to visible the selected value, call ensureIndexIsVisible(). @see #isSelectedIndex() @see #addSelectionListener() @see #ensureIndexIsVisible()
values | an array of the values to select. |
programmatic | indicate if this is a programmatic change. |
function setSelectionInterval(index0:Int, index1:Int, ?programmatic:Bool = true): Void
@see ListSelectionModel#setSelectionInterval @see #removeSelectionInterval()
index0 | index0. |
index1 | index1. |
programmatic | indicate if this is a programmatic change. |
function updateListView(): Void
When your list data changed, and you want to update list view by hand. call this method.
This method is called automatically when setModel called with a different model to set.