Class Table
- All Implemented Interfaces:
Animation, Editable, StyleListener, Iterable<Component>
The Table class represents a grid of data that can be used for rendering a grid
of components/labels. The table reflects and updates the underlying model data.
Table relies heavily on the com.codename1.ui.table.TableLayout class and
com.codename1.ui.table.TableModel interface to present its UI. Unlike a
com.codename1.ui.List a Table doesn't feature a separate renderer
and instead allows developers to derive the class.
Form hi = new Form("Table", new BorderLayout());
TableModel model = new DefaultTableModel(new String[] {"Col 1", "Col 2", "Col 3"}, new Object[][] {
{"Row 1", "Row A", "Row X"},
{"Row 2", "Row B can now stretch", null},
{"Row 3", "Row C", "Row Z"},
{"Row 4", "Row D", "Row K"},
}) {
public boolean isCellEditable(int row, int col) {
return col != 0;
}
};
Table table = new Table(model) {
@Override
protected Component createCell(Object value, int row, int column, boolean editable) { // (1)
Component cell;
if(row == 1 && column == 1) { // (2)
Picker p = new Picker();
p.setType(Display.PICKER_TYPE_STRINGS);
p.setStrings("Row B can now stretch", "This is a good value", "So Is This", "Better than text field");
p.setSelectedString((String)value); // (3)
p.setUIID("TableCell");
p.addActionListener((e) -> getModel().setValueAt(row, column, p.getSelectedString())); // (4)
cell = p;
} else {
cell = super.createCell(value, row, column, editable);
}
if(row > -1 && row % 2 == 0) { // (5)
// pinstripe effect
cell.getAllStyles().setBgColor(0xeeeeee);
cell.getAllStyles().setBgTransparency(255);
}
return cell;
}
@Override
protected TableLayout.Constraint createCellConstraint(Object value, int row, int column) {
TableLayout.Constraint con = super.createCellConstraint(value, row, column);
if(row == 1 && column == 1) {
con.setHorizontalSpan(2);
}
con.setWidthPercentage(33);
return con;
}
};
hi.add(BorderLayout.CENTER, table);
hi.show();
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intConstant denoting that inner borders should be drawn fullystatic final intConstant denoting that only inner borders columns should be drawnstatic final intConstant denoting that inner borders should not be drawn at allstatic final intConstant denoting that only inner borders rows should be drawnFields inherited from class Component
BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR -
Constructor Summary
ConstructorsConstructorDescriptionTable()Constructor for usage by GUI builder and automated tools, normally one should use the version that accepts the modelTable(TableModel model) Create a table with a new modelTable(TableModel model, boolean includeHeader) Create a table with a new model -
Method Summary
Modifier and TypeMethodDescriptionprotected ComponentcreateCell(Object value, int row, int column, boolean editable) Creates a cell based on the given valueprotected TableLayout.ConstraintcreateCellConstraint(Object value, int row, int column) Creates the table cell constraint for the given cell, this method can be overriden for the purposes of modifying the table constraints.protected Comparator<Object> createColumnSortComparator(int column) Returns a generic comparator that tries to work in a way that will sort columns with similar object types.voidInvoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy.intIndicates the alignment of the cells see label alignment for detailsintgetCellColumn(Component cell) Returns the column in which the given cell is placedintgetCellRow(Component cell) Returns the row in which the given cell is placedintReturns the current inner border modegetModel()Returns the model instanceString[]A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder codeString[]This method is here to workaround an XMLVM array type bug where property types aren't identified properly, it returns the names of the types using the following type names: String,int,double,long,byte,short,char,String[],String[][],byte[],Image,Image[],Object[],ListModel,ListCellRendererClass[]Matches the property names method (see that method for further details).getPropertyValue(String name) Returns the current value of the property name, this method is used by the GUI builderintReturns the selected column in the tableintReturns the selected row in the tableintIndicates the alignment of the title see label alignment for detailsprotected booleanBy default createCell/constraint won't be invoked for null values by overriding this method to return true you can replace this behaviorvoidAllows subclasses to bind functionality that relies on fully initialized and "ready for action" component statebooleanIndicates whether the table border should be drawnbooleanIndicates whether the table should render a table header as the first rowbooleanSort support can be toggled with this flagprotected voidThis method can be overriden by a component to draw on top of itself or its children after the component or the children finished drawing in a similar way to the glass pane but more refined per componentvoidsetBorderSpacing(int horizontal, int vertical) Sets the spacing of cells border (relevant only for separate borders and not for collapsed)voidsetCellAlignment(int cellAlignment) Indicates the alignment of the cells see label alignment for detailsvoidsetCollapseBorder(boolean collapseBorder) Indicates whether the borders of the cells should collapse to form a one line bordervoidsetDrawBorder(boolean drawBorder) Indicates whether the table border should be drawnvoidsetDrawEmptyCellsBorder(boolean drawEmptyCellsBorder) Indicates whether empty cells should have borders (relevant only for separate borders and not for collapsed)voidsetIncludeHeader(boolean includeHeader) Indicates whether the table should render a table header as the first rowvoidsetInnerBorderMode(int innerBorder) Sets how to draw the inner border (All of it, only rows/columns, none, groups) Note that setting to any mode other than NONE/ALL will result in the border drawing as collapsed whether this is a collpased border or notvoidsetModel(TableModel model) Replaces the underlying modelsetPropertyValue(String name, Object value) Sets a new value to the given property, returns an error message if failed and null if successful.voidsetSortSupported(boolean sortSupported) Sort support can be toggled with this flagvoidsetTitleAlignment(int titleAlignment) Indicates the alignment of the title see label alignment for detailsprotected booleanshouldDrawInnerBorderAfterRow(int row) Returns whether an inner border should be drawn after the specified row.voidsort(int column, boolean ascending) Sorts the given column programmaticallyinttranslateSortedRowToModelRow(int row) If the table is sorted returns the position of the row in the actual underlying modelMethods inherited from class Container
add, add, add, add, add, add, addAll, addComponent, addComponent, addComponent, addComponent, animateHierarchy, animateHierarchyAndWait, animateHierarchyFade, animateHierarchyFadeAndWait, animateLayout, animateLayoutAndWait, animateLayoutFade, animateLayoutFadeAndWait, animateUnlayout, animateUnlayoutAndWait, applyRTL, calcPreferredSize, cancelRepaints, clearClientProperties, constrainHeightWhenScrollable, constrainWidthWhenScrollable, contains, createAnimateHierarchy, createAnimateHierarchyFade, createAnimateLayout, createAnimateLayoutFade, createAnimateLayoutFadeAndWait, createAnimateMotion, createAnimateUnlayout, createReplaceTransition, dragInitiated, drop, encloseIn, encloseIn, findDropTargetAt, findFirstFocusable, fireClicked, flushReplace, forceRevalidate, getBottomGap, getChildrenAsList, getClosestComponentTo, getComponentAt, getComponentAt, getComponentCount, getComponentIndex, getGridPosX, getGridPosY, getLayout, getLayoutHeight, getLayoutWidth, getLeadComponent, getLeadParent, getResponderAt, getSafeAreaRoot, getScrollIncrement, getSideGap, getUIManager, initLaf, invalidate, isEnabled, isSafeArea, isSafeAreaRoot, isScrollableX, isScrollableY, isSelectableInteraction, isSurface, iterator, iterator, keyPressed, keyReleased, layoutContainer, morph, morphAndWait, paint, paintComponentBackground, paramString, pointerPressed, refreshTheme, removeAll, removeComponent, replace, replace, replaceAndWait, replaceAndWait, replaceAndWait, revalidate, revalidateLater, revalidateWithAnimationSafety, scrollComponentToVisible, setCellRenderer, setEnabled, setLayout, setLeadComponent, setSafeArea, setSafeAreaRoot, setScrollable, setScrollableX, setScrollableY, setScrollIncrement, setShouldCalcPreferredSize, setShouldLayout, setUIManager, updateTabIndicesMethods inherited from class Component
addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, animate, announceForAccessibility, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityText, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, keyRepeated, laidOut, longKeyPress, longPointerPress, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHover, pointerHoverPressed, pointerHoverReleased, pointerPressed, pointerReleased, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, setAccessibilityText, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUIIDFinal, setUnselectedStyle, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContainsMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
INNER_BORDERS_NONE
public static final int INNER_BORDERS_NONEConstant denoting that inner borders should not be drawn at all- See Also:
-
INNER_BORDERS_ROWS
public static final int INNER_BORDERS_ROWSConstant denoting that only inner borders rows should be drawn- See Also:
-
INNER_BORDERS_COLS
public static final int INNER_BORDERS_COLSConstant denoting that only inner borders columns should be drawn- See Also:
-
INNER_BORDERS_ALL
public static final int INNER_BORDERS_ALLConstant denoting that inner borders should be drawn fully- See Also:
-
-
Constructor Details
-
Table
public Table()Constructor for usage by GUI builder and automated tools, normally one should use the version that accepts the model -
Table
Create a table with a new model
Parameters
model: the model underlying this table
-
Table
Create a table with a new model
Parameters
-
model: the model underlying this table -
includeHeader: Indicates whether the table should render a table header as the first row
-
-
-
Method Details
-
getSelectedRow
public int getSelectedRow()Returns the selected row in the table
Returns
the offset of the selected row in the table if a selection exists
-
includeNullValues
protected boolean includeNullValues()By default createCell/constraint won't be invoked for null values by overriding this method to return true you can replace this behavior
Returns
false by default
-
getSelectedColumn
public int getSelectedColumn()Returns the selected column in the table
Returns
the offset of the selected column in the table if a selection exists
-
paintGlass
This method can be overriden by a component to draw on top of itself or its children after the component or the children finished drawing in a similar way to the glass pane but more refined per component
Parameters
g: the graphics context
- Overrides:
paintGlassin classContainer
-
createColumnSortComparator
Returns a generic comparator that tries to work in a way that will sort columns with similar object types. This method can be overridden to create custom sort orders or return null and thus disable sorting for a specific column
Parameters
column: the column that's sorted
Returns
the comparator instance
-
sort
public void sort(int column, boolean ascending) Sorts the given column programmatically
Parameters
-
column: the column to sort -
ascending: true to sort in ascending order
-
-
createCell
-
initComponent
public void initComponent()Allows subclasses to bind functionality that relies on fully initialized and "ready for action" component state- Overrides:
initComponentin classComponent
-
deinitialize
public void deinitialize()Invoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy. This allows the component to deregister animators and cleanup after itself. This method is the opposite of the initComponent() method.- Overrides:
deinitializein classComponent
-
getModel
Returns the model instance
Returns
the model instance
-
setModel
Replaces the underlying model
Parameters
model: the new model
-
isDrawBorder
public boolean isDrawBorder()Indicates whether the table border should be drawn
Returns
the drawBorder
-
setDrawBorder
public void setDrawBorder(boolean drawBorder) Indicates whether the table border should be drawn
Parameters
drawBorder: the drawBorder to set
-
getInnerBorderMode
public int getInnerBorderMode()Returns the current inner border mode
Returns
the current inner border mode (one of the INNER_BORDER_* constants)
-
setInnerBorderMode
public void setInnerBorderMode(int innerBorder) Sets how to draw the inner border (All of it, only rows/columns, none, groups) Note that setting to any mode other than NONE/ALL will result in the border drawing as collapsed whether this is a collpased border or not
Parameters
innerBorder: one of the INNER_BORDER_* constants
-
shouldDrawInnerBorderAfterRow
protected boolean shouldDrawInnerBorderAfterRow(int row) Returns whether an inner border should be drawn after the specified row. This allows customization in subclasses to create for example the effects of segments in atable, i.e. instead of a line after each row - lines after "chunks" of rows. Note that this is queried only when the inner border mode is set to INNER_BORDER_ROWS
Parameters
row: The row in question
Returns
true to draw inner border, false otherwise
-
setCollapseBorder
public void setCollapseBorder(boolean collapseBorder) Indicates whether the borders of the cells should collapse to form a one line border
Parameters
collapseBorder: true to collapse (default), false for separate borders
-
setDrawEmptyCellsBorder
public void setDrawEmptyCellsBorder(boolean drawEmptyCellsBorder) Indicates whether empty cells should have borders (relevant only for separate borders and not for collapsed)
Parameters
drawEmptyCellsBorder: - true to draw (default), false otherwise
-
setBorderSpacing
public void setBorderSpacing(int horizontal, int vertical) Sets the spacing of cells border (relevant only for separate borders and not for collapsed)
Parameters
-
horizontal: - The horizontal spacing -
vertical: - The vertical spacing
-
-
getTitleAlignment
public int getTitleAlignment()Indicates the alignment of the title see label alignment for details
Returns
the title alignment
See also
- com.codename1.ui.Label#setAlignment(int)
-
setTitleAlignment
public void setTitleAlignment(int titleAlignment) Indicates the alignment of the title see label alignment for details
Parameters
titleAlignment: the title alignment
See also
- com.codename1.ui.Label#setAlignment(int)
-
getCellColumn
Returns the column in which the given cell is placed
Parameters
cell: the component representing the cell placed in the table
Returns
the column in which the cell was placed in the table
-
getCellRow
Returns the row in which the given cell is placed
Parameters
cell: the component representing the cell placed in the table
Returns
the row in which the cell was placed in the table
-
getCellAlignment
public int getCellAlignment()Indicates the alignment of the cells see label alignment for details
Returns
the cell alignment
See also
- com.codename1.ui.Label#setAlignment(int)
-
setCellAlignment
public void setCellAlignment(int cellAlignment) Indicates the alignment of the cells see label alignment for details
Parameters
cellAlignment: the table cell alignment
See also
- com.codename1.ui.Label#setAlignment(int)
-
isIncludeHeader
public boolean isIncludeHeader()Indicates whether the table should render a table header as the first row
Returns
the includeHeader
-
setIncludeHeader
public void setIncludeHeader(boolean includeHeader) Indicates whether the table should render a table header as the first row
Parameters
includeHeader: the includeHeader to set
-
createCellConstraint
Creates the table cell constraint for the given cell, this method can be overriden for the purposes of modifying the table constraints.
Parameters
-
value: the value of the cell -
row: the table row -
column: the table column
Returns
the table constraint
-
-
getPropertyNames
A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder code
Returns
the property names allowing mutation
- Overrides:
getPropertyNamesin classComponent
-
getPropertyTypes
Matches the property names method (see that method for further details).
Returns
the types of the properties
- Overrides:
getPropertyTypesin classComponent
-
getPropertyTypeNames
This method is here to workaround an XMLVM array type bug where property types aren't identified properly, it returns the names of the types using the following type names: String,int,double,long,byte,short,char,String[],String[][],byte[],Image,Image[],Object[],ListModel,ListCellRenderer
Returns
Array of type names
- Overrides:
getPropertyTypeNamesin classComponent
-
getPropertyValue
Returns the current value of the property name, this method is used by the GUI builder
Parameters
name: the name of the property
Returns
the value of said property
- Overrides:
getPropertyValuein classComponent
-
setPropertyValue
Sets a new value to the given property, returns an error message if failed and null if successful. Notice that some builtin properties such as "$designMode" might be sent to components to indicate application state.
Parameters
-
name: the name of the property -
value: new value for the property
Returns
error message or null
- Overrides:
setPropertyValuein classComponent
-
-
translateSortedRowToModelRow
public int translateSortedRowToModelRow(int row) If the table is sorted returns the position of the row in the actual underlying model
Parameters
row: @param row the row as it visually appears in the table or in thecreateCellmethod
Returns
- Returns:
- the position of the row in the physical model, this will be the same value if the table isn't sorted
-
isSortSupported
public boolean isSortSupported()Sort support can be toggled with this flag
Returns
the sortSupported
-
setSortSupported
public void setSortSupported(boolean sortSupported) Sort support can be toggled with this flag
Parameters
sortSupported: the sortSupported to set
-