Класс JTable
- Все реализованные интерфейсы:
-
ImageObserver,MenuContainer,Serializable,EventListener,Accessible,CellEditorListener,ListSelectionListener,RowSorterListener,TableColumnModelListener,TableModelListener,Scrollable
@JavaBean(defaultProperty="UI", description="A component which displays data in a two dimensional grid.") public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible, RowSorterListener
JTable используется для отображения и редактирования обычных двумерных таблиц ячеек. См. Как использовать таблицы в Java Tutorial для пошагового руководства и примеров использования JTable. Класс JTable предоставляет множество возможностей для настройки его отрисовки и редактирования, но также устанавливает значения по умолчанию для этих функций, чтобы простые таблицы можно было легко настроить. Например, чтобы создать таблицу с 10 строками и 10 столбцами чисел:
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() { return 10; }
public int getRowCount() { return 10;}
public Object getValueAt(int row, int col) { return Integer.valueOf(row*col); }
};
JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table);
JTable обычно размещаются внутри JScrollPane. По умолчанию JTable будет изменять свой размер так, чтобы горизонтальная полоса прокрутки не была необходима. Чтобы разрешить горизонтальную полосу прокрутки, вызовите setAutoResizeMode(int) с AUTO_RESIZE_OFF. Обратите внимание, что если вы хотите использовать JTable в автономном представлении (вне JScrollPane) и хотите отобразить заголовок, вы можете получить его, используя getTableHeader() и отобразить его отдельно.
Для включения сортировки и фильтрации строк используйте RowSorter. Вы можете настроить сортировщик строк двумя способами:
- Непосредственно задайте
RowSorter. Например:table.setRowSorter(new TableRowSorter(model)). - Задайте свойство
autoCreateRowSorterвtrue, чтобыJTableсоздалRowSorterза вас. Например:setAutoCreateRowSorter(true).
При разработке приложений, использующих JTable, стоит уделить пристальное внимание структурам данных, которые будут представлять данные таблицы. DefaultTableModel — это реализация модели, использующая Vector Vector Object для хранения значений ячеек. Помимо копирования данных из приложения в DefaultTableModel, можно также обернуть данные методами интерфейса TableModel, чтобы данные можно было передать в JTable напрямую, как в примере выше. Это часто приводит к более эффективным приложениям, так как модель свободна выбирать внутреннее представление, которое лучше всего подходит для данных. Хорошим правилом является использование AbstractTableModel в качестве базового класса для создания подклассов и DefaultTableModel в случаях, когда создание подклассов не требуется.
Директория "TableExample" в демонстрационной области исходного распределения содержит несколько полных примеров использования JTable, охватывающих то, как JTable можно использовать для предоставления редактируемого представления данных, полученных из базы данных, и как изменять столбцы в представлении для использования специализированных элементов отрисовки и редактирования.
JTable использует только целые числа для ссылки как на строки, так и на столбцы модели, которую он отображает. JTable просто берет табличный диапазон ячеек и использует getValueAt(int, int) для извлечения значений из модели во время отрисовки. Важно помнить, что индексы столбцов и строк, возвращаемые различными методами JTable, относятся к JTable (представление) и не обязательно совпадают с индексами, используемыми моделью.
По умолчанию столбцы могут быть переупорядочены в JTable так, чтобы столбцы представления отображались в другом порядке по сравнению со столбцами модели. Это никак не влияет на реализацию модели: при переупорядочении столбцов JTable сохраняет новый порядок столбцов во внутренней структуре и преобразует свои индексы столбцов перед запросом к модели.
Поэтому при написании TableModel, нет необходимости прослушивать события переупорядочения столбцов, так как модель будет запрошена в своей собственной системе координат независимо от происходящего в представлении. В демонстрационной области есть демонстрация алгоритма сортировки, использующего именно эту технику для введения еще одной системы координат, в которой изменяется порядок строк, а не порядок столбцов.
Аналогично, при использовании функциональности сортировки и фильтрации, предоставляемой RowSorter, основная TableModel не должна знать, как выполнять сортировку, а RowSorter будет обрабатывать ее. Преобразования координат необходимы при использовании методов строк JTable с базовой TableModel. Все методы строк JTable относятся к RowSorter, что не обязательно совпадает с TableModel. Например, выбор всегда относится к JTable, поэтому при использовании RowSorter вам нужно будет преобразовать его, используя convertRowIndexToView или convertRowIndexToModel. Ниже показано, как преобразовать координаты из JTable в координаты базовой модели:
int[] selection = table.getSelectedRows();
for (int i = 0; i < selection.length; i++) {
selection[i] = table.convertRowIndexToModel(selection[i]);
}
// selection is now in terms of the underlying TableModel
По умолчанию, если включена сортировка, JTable сохранит выделение и переменную высоту строк относительно модели при сортировке. Например, если выделена строка 0 относительно базовой модели, после сортировки будет выделена строка 0 относительно базовой модели. Визуально выделение может измениться, но относительно базовой модели оно останется прежним. Исключением является случай, когда индекс модели больше не отображается или был удален. Например, если строка 0 относительно модели была отфильтрована, выделение будет пустым после сортировки.
J2SE 5 добавляет методы к JTable для удобного доступа к некоторым общим потребностям печати. Простые новые методы print() позволяют быстро и легко добавить поддержку печати в ваше приложение. Кроме того, доступен новый метод getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat) для более продвинутых потребностей печати.
Как и все классы JComponent, вы можете использовать InputMap и ActionMap, чтобы связать объект Action с KeyStroke и выполнить действие при определенных условиях.
Предупреждение: Swing не является потокобезопасным. Более подробную информацию см. в Политике потоков Swing.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans была добавлена в пакет java.beans. См. XMLEncoder.
- Since:
- 1.2
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
protected class |
JTable.AccessibleJTable |
Этот класс реализует поддержку доступности для класса JTable. |
static final class |
JTable.DropLocation |
Подкласс TransferHandler.DropLocation, представляющий место для выпадения JTable. |
static enum |
JTable.PrintMode |
Режимы печати, используемые при печати JTable. |
Вложенные классы/интерфейсы, объявленные в классе javax.swing.JComponent
JComponent.AccessibleJComponent
Вложенные классы/интерфейсы, объявленные в классе java.awt.Container
Container.AccessibleAWTContainer
Вложенные классы/интерфейсы, объявленные в классе java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
AUTO_RESIZE_ALL_COLUMNS |
При всех операциях изменения размера пропорционально изменяются все столбцы. |
static final int |
AUTO_RESIZE_LAST_COLUMN |
При всех операциях изменения размера применяются корректировки только к последнему столбцу. |
static final int |
AUTO_RESIZE_NEXT_COLUMN |
При корректировке столбца в пользовательском интерфейсе следующий столбец корректируется в обратном направлении. |
static final int |
AUTO_RESIZE_OFF |
Не производить автоматической корректировки ширины столбцов; вместо этого использовать горизонтальную полосу прокрутки. |
static final int |
AUTO_RESIZE_SUBSEQUENT_COLUMNS |
При изменении пользовательского интерфейса последующие столбцы изменяются так, чтобы сохранить общую ширину; это поведение по умолчанию. |
protected boolean |
autoCreateColumnsFromModel |
Таблица будет запрашивать у TableModel построение набора столбцов по умолчанию, если это значение true. |
protected int |
autoResizeMode |
Определяет, автоматически ли таблица изменяет ширину столбцов, чтобы заполнить всю ширину таблицы, и как она выполняет это изменение. |
protected TableCellEditor |
cellEditor |
Объект активного редактора ячейки, который перекрывает экранное пространство, занимаемое текущей ячейкой, и позволяет пользователю изменить ее содержимое. |
protected boolean |
cellSelectionEnabled |
Устарело начиная с Java 2 platform v1.3. |
protected TableColumnModel |
columnModel |
Название таблицы. |
protected TableModel |
dataModel |
Описание таблицы. |
protected Hashtable |
defaultEditorsByColumnClass |
Таблица объектов, отображающих и редактирующих содержимое ячейки, индексированных по классам, как указано в getColumnClass в интерфейсе TableModel. |
protected Hashtable |
defaultRenderersByColumnClass |
Таблица объектов, отображающих содержимое ячейки, индексированных по классам, как указано в getColumnClass в интерфейсе TableModel. |
protected int |
editingColumn |
Идентифицирует столбец редактируемой ячейки. |
protected int |
editingRow |
Идентифицирует строку редактируемой ячейки. |
protected Component |
editorComp |
Если происходит редактирование, то Component, обрабатывающий это редактирование. |
protected Color |
gridColor |
Цвет сетки. |
protected Dimension |
preferredViewportSize |
Используется интерфейсом Scrollable для определения начальной видимой области. |
protected int |
rowHeight |
Высота каждой строки в таблице в пикселях. |
protected int |
rowMargin |
Высота отступа между ячейками в каждой строке в пикселях. |
protected boolean |
rowSelectionAllowed |
Истина, если в этой таблице разрешена выборка строк. |
protected Color |
selectionBackground |
Цвет фона выделенных ячеек. |
protected Color |
selectionForeground |
Цвет переднего плана выделенных ячеек. |
protected ListSelectionModel |
selectionModel |
Модель ListSelectionModel таблицы, используемая для отслеживания выбора строк. |
protected boolean |
showHorizontalLines |
Таблица рисует горизонтальные линии между ячейками, если showHorizontalLines равно true. |
protected boolean |
showVerticalLines |
Таблица рисует вертикальные линии между ячейками, если showVerticalLines равно true. |
protected JTableHeader |
tableHeader |
TableHeader , работающая с таблицей. |
Поля, объявленные в классе javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Поля, объявленные в классе java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Поля, объявленные в интерфейсе java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
JTable() |
Создаёт таблицу по умолчанию, инициализированную моделью данных по умолчанию, моделью столбцов по умолчанию и моделью выбора по умолчанию. |
JTable |
Создаёт таблицу с numRows и numColumns пустых ячеек, используя DefaultTableModel. |
JTable |
Создаёт таблицу для отображения значений в двумерном массиве rowData, с именами столбцов columnNames. |
JTable |
Создаёт таблицу для отображения значений в Vector Vectors, rowData, с именами столбцов columnNames. |
JTable |
Создаёт таблицу, инициализированную dm в качестве модели данных, моделью столбцов по умолчанию и моделью выбора по умолчанию. |
JTable |
Создаёт таблицу, инициализированную dm в качестве модели данных, cm в качестве модели столбцов и моделью выбора по умолчанию. |
JTable |
Создаёт таблицу, инициализированную dm в качестве модели данных, cm в качестве модели столбцов и sm в качестве модели выбора. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
void |
addColumn |
Добавляет aColumn в конец массива столбцов, хранящихся в модели столбцов этого JTable. |
void |
addColumnSelectionInterval |
Добавляет столбцы с index0 по index1 (включительно) в текущий выбор. |
void |
addNotify() |
Вызывает метод configureEnclosingScrollPane. |
void |
addRowSelectionInterval |
Добавляет строки с index0 по index1 (включительно) в текущий выбор. |
void |
changeSelection |
Обновляет модели выбора таблицы, в зависимости от состояния двух флагов: toggle и extend. |
void |
clearSelection() |
Снимает выделение со всех выделенных столбцов и строк. |
void |
columnAdded |
Вызывается при добавлении столбца в модель столбцов таблицы. |
int |
columnAtPoint |
Возвращает индекс столбца, в котором находится point, или -1, если результат не находится в диапазоне [0, getColumnCount()-1]. |
void |
columnMarginChanged |
Вызывается при перемещении столбца из-за изменения отступа. |
void |
columnMoved |
Вызывается при перепозиционировании столбца. |
void |
columnRemoved |
Вызывается при удалении столбца из модели столбцов таблицы. |
void |
columnSelectionChanged |
Вызывается при изменении модели выбора TableColumnModel. |
protected void |
configureEnclosingScrollPane() |
Если этот JTable является viewportView содержащего JScrollPane (обычная ситуация), настроить этот ScrollPane, среди прочего, установив модель столбцов таблицы в качестве columnHeaderView области прокрутки. |
int |
convertColumnIndexToModel |
Преобразует индекс столбца в представлении по viewColumnIndex в индекс столбца в модели таблицы. |
int |
convertColumnIndexToView |
Преобразует индекс столбца в модели таблицы по modelColumnIndex в индекс столбца в представлении. |
int |
convertRowIndexToModel |
Преобразует индекс строки в представлении в соответствующий индекс в базовой TableModel. |
int |
convertRowIndexToView |
Преобразует индекс строки в TableModel в индекс в представлении. |
protected TableColumnModel |
createDefaultColumnModel() |
Возвращает объект модели столбцов по умолчанию, который является DefaultTableColumnModel. |
void |
createDefaultColumnsFromModel() |
Создает столбцы по умолчанию для таблицы из модели данных, используя метод getColumnCount, определенный в интерфейсе TableModel. |
protected TableModel |
createDefaultDataModel() |
Возвращает объект модели таблицы по умолчанию, который является DefaultTableModel. |
protected void |
createDefaultEditors() |
Создает стандартные редакторы ячеек для объектов, чисел и булевых значений. |
protected void |
createDefaultRenderers() |
Создает стандартные визуализаторы ячеек для объектов, чисел с плавающей точкой, дат, булевых значений и значков. |
protected ListSelectionModel |
createDefaultSelectionModel() |
Возвращает объект модели выделения по умолчанию, который является DefaultListSelectionModel. |
protected JTableHeader |
createDefaultTableHeader() |
Возвращает объект заголовка таблицы по умолчанию, который является JTableHeader. |
static JScrollPane |
createScrollPaneForTable |
Устарело. |
void |
doLayout() |
Вызывает отрисовку строк и столбцов этой таблицы. |
boolean |
editCellAt |
Программно начинает редактирование ячейки по координатам row и column, если эти индексы находятся в допустимом диапазоне, и ячейка в этих индексах редактируема. |
boolean |
editCellAt |
Программно начинает редактирование ячейки по координатам row и column, если эти индексы находятся в допустимом диапазоне, и ячейка в этих индексах редактируема. |
void |
editingCanceled |
Вызывается при отмене редактирования. |
void |
editingStopped |
Вызывается при завершении редактирования. |
AccessibleContext |
getAccessibleContext() |
Получает AccessibleContext, связанный с этой JTable. |
boolean |
getAutoCreateColumnsFromModel() |
Определяет, будет ли таблица создавать столбцы по умолчанию из модели. |
boolean |
getAutoCreateRowSorter() |
Возвращает true, если при каждом изменении модели должен создаваться и устанавливаться новый RowSorter в качестве сортировщика таблицы; в противном случае, возвращает false. |
int |
getAutoResizeMode() |
Возвращает режим автоматического изменения размера таблицы. |
TableCellEditor |
getCellEditor() |
Возвращает активный редактор ячейки, который является null , если таблица в настоящее время не редактирует. |
TableCellEditor |
getCellEditor |
Возвращает подходящий редактор для ячейки, указанной row и column. |
Rectangle |
getCellRect |
Возвращает прямоугольник для ячейки, расположенной на пересечении row и column. |
TableCellRenderer |
getCellRenderer |
Возвращает подходящий визуализатор ячейки для указанной строки и столбца. |
boolean |
getCellSelectionEnabled() |
Возвращает true, если модели выбора строк и столбцов включены. |
TableColumn |
getColumn |
Возвращает объект TableColumn для столбца в таблице, идентификатор которого равен identifier, при сравнении с помощью equals. |
Class |
getColumnClass |
Возвращает тип столбца, отображаемого в представлении по столбцу column. |
int |
getColumnCount() |
Возвращает количество столбцов в модели столбцов. |
TableColumnModel |
getColumnModel() |
Возвращает TableColumnModel, содержащий всю информацию о столбцах этой таблицы. |
String |
getColumnName |
Возвращает имя столбца, отображаемого в представлении по столбцу column. |
boolean |
getColumnSelectionAllowed() |
Возвращает true, если столбцы могут быть выбраны. |
TableCellEditor |
getDefaultEditor |
Возвращает редактор, который должен использоваться, когда редактор не был задан в TableColumn. |
TableCellRenderer |
getDefaultRenderer |
Возвращает визуализатор ячеек, который должен использоваться, когда визуализатор не был задан в TableColumn. |
boolean |
getDragEnabled() |
Возвращает, включена ли автоматическая обработка перетаскивания. |
final JTable.DropLocation |
getDropLocation() |
Возвращает расположение, которое этот компонент должен визуально указать как место выгрузки во время операции перетаскивания над компонентом, или null, если местоположение в данный момент не должно отображаться. |
final DropMode |
getDropMode() |
Возвращает режим выгрузки для этого компонента. |
int |
getEditingColumn() |
Возвращает индекс столбца, содержащего ячейку, которая в данный момент редактируется. |
int |
getEditingRow() |
Возвращает индекс строки, содержащей ячейку, которая в данный момент редактируется. |
Component |
getEditorComponent() |
Возвращает компонент, который обрабатывает сеанс редактирования. |
boolean |
getFillsViewportHeight() |
Возвращает значение, указывающее, всегда ли эта таблица делает себя достаточно большой, чтобы заполнить высоту окружающего viewport. |
Color |
getGridColor() |
Возвращает цвет, используемый для рисования линий сетки. |
Dimension |
getIntercellSpacing() |
Возвращает горизонтальное и вертикальное расстояние между ячейками. |
TableModel |
getModel() |
Возвращает TableModel, предоставляющий данные, отображаемые этой JTable. |
Dimension |
getPreferredScrollableViewportSize() |
Возвращает предпочтительный размер viewport для этой таблицы. |
Printable |
getPrintable |
Возвращает Printable для использования при печати этого JTable. |
int |
getRowCount() |
Возвращает количество строк, которые могут быть показаны в JTable, при неограниченном пространстве. |
int |
getRowHeight() |
Возвращает высоту строки таблицы в пикселях. |
int |
getRowHeight |
Возвращает высоту, в пикселях, ячеек в row. |
int |
getRowMargin() |
Получает количество пустого пространства между ячейками, в пикселях. |
boolean |
getRowSelectionAllowed() |
Возвращает true, если строки могут быть выбраны. |
RowSorter |
getRowSorter() |
Возвращает объект, ответственный за сортировку. |
int |
getScrollableBlockIncrement |
Возвращает visibleRect.height или visibleRect.width, в зависимости от ориентации этой таблицы. |
boolean |
getScrollableTracksViewportHeight() |
Возвращает false, чтобы указать, что высота viewport не определяет высоту таблицы, если только getFillsViewportHeight не true, и предпочтительная высота таблицы меньше высоты viewport. |
boolean |
getScrollableTracksViewportWidth() |
Возвращает false, если autoResizeMode установлено в AUTO_RESIZE_OFF, что указывает, что ширина viewport не определяет ширину таблицы. |
int |
getScrollableUnitIncrement |
Возвращает шаг прокрутки (в пикселях), который полностью раскрывает новую строку или столбец (в зависимости от ориентации). |
int |
getSelectedColumn() |
Возвращает индекс первого выбранного столбца, -1, если столбец не выбран. |
int |
getSelectedColumnCount() |
Возвращает количество выбранных столбцов. |
int[] |
getSelectedColumns() |
Возвращает индексы всех выбранных столбцов. |
int |
getSelectedRow() |
Возвращает индекс первой выбранной строки, -1, если строка не выбрана. |
int |
getSelectedRowCount() |
Возвращает количество выбранных строк. |
int[] |
getSelectedRows() |
Возвращает индексы всех выбранных строк. |
Color |
getSelectionBackground() |
Возвращает цвет фона для выделенных ячеек. |
Color |
getSelectionForeground() |
Возвращает цвет переднего плана для выделенных ячеек. |
ListSelectionModel |
getSelectionModel() |
Возвращает ListSelectionModel, используемый для сохранения состояния выбора строк. |
boolean |
getShowHorizontalLines() |
Возвращает true, если таблица рисует горизонтальные линии между ячейками, false — если не рисует. |
boolean |
getShowVerticalLines() |
Возвращает true, если таблица рисует вертикальные линии между ячейками, false — если не рисует. |
boolean |
getSurrendersFocusOnKeystroke() |
Возвращает true, если редактор должен получить фокус, когда нажатия клавиш активируют редактор |
JTableHeader |
getTableHeader() |
Возвращает tableHeader, используемый этим JTable. |
String |
getToolTipText |
Переопределяет метод JComponent getToolTipText для того, чтобы использовать подсказки рендерера, если у него установлен текст. |
TableUI |
getUI() |
Возвращает объект L&F, который отображает этот компонент. |
String |
getUIClassID() |
Возвращает суффикс, используемый для построения имени класса L&F, используемого для отображения этого компонента. |
boolean |
getUpdateSelectionOnSort() |
Возвращает true, если выбор должен быть обновлен после сортировки. |
Object |
getValueAt |
Возвращает значение ячейки в позиции row и column. |
protected void |
initializeLocalVars() |
Инициализирует свойства таблицы их значениями по умолчанию. |
boolean |
isCellEditable |
Возвращает true, если ячейка в позиции row и column редактируема. |
boolean |
isCellSelected |
Возвращает true, если указанные индексы находятся в допустимом диапазоне строк и столбцов, и ячейка в указанной позиции выбрана. |
boolean |
isColumnSelected |
Возвращает true, если указанный индекс находится в допустимом диапазоне столбцов и столбец в этом индексе выбран. |
boolean |
isEditing() |
Возвращает true, если ячейка находится в режиме редактирования. |
boolean |
isRowSelected |
Возвращает true, если указанный индекс находится в допустимом диапазоне строк и строка в этом индексе выбрана. |
void |
moveColumn |
Перемещает столбец column в позицию, которую в данный момент занимает столбец targetColumn в представлении. |
protected String |
paramString() |
Возвращает строковое представление этой таблицы. |
Component |
prepareEditor |
Подготавливает редактор, запрашивая у модели данных значение и состояние выбора ячейки в позиции row, column. |
Component |
prepareRenderer |
Подготавливает рендерер, запрашивая у модели данных значение и состояние выбора ячейки в позиции row, column. |
boolean |
print() |
Удобный метод, который отображает диалоговое окно печати и затем печатает эту JTable в режиме PrintMode.FIT_WIDTH, без заголовка и подвала. |
boolean |
print |
Удобный метод, который отображает диалоговое окно печати и затем печатает эту JTable в заданном режиме печати, без заголовка и подвала. |
boolean |
print |
Удобный метод, который отображает диалоговое окно печати и затем печатает эту JTable в заданном режиме печати, со строками заголовка и подвала. |
boolean |
print |
Печатает эту таблицу, как указано в полном методе print, с указанным по умолчанию принтером в качестве службы печати. |
boolean |
print |
Печатает эту JTable. |
void |
removeColumn |
Удаляет aColumn из массива столбцов этой JTable. |
void |
removeColumnSelectionInterval |
Снимает выделение столбцов с index0 по index1, включительно. |
void |
removeEditor() |
Отбрасывает объект редактора и освобождает занимаемое им пространство для отображения ячеек. |
void |
removeNotify() |
Вызывает метод unconfigureEnclosingScrollPane. |
void |
removeRowSelectionInterval |
Снимает выделение строк с index0 по index1, включительно. |
protected void |
resizeAndRepaint() |
Эквивалентно revalidate, за которым следует repaint. |
int |
rowAtPoint |
Возвращает индекс строки, в которой находится point, или -1, если результат не находится в диапазоне [0, getRowCount()-1]. |
void |
selectAll() |
Выбирает все строки, столбцы и ячейки в таблице. |
void |
setAutoCreateColumnsFromModel |
Устанавливает флаг autoCreateColumnsFromModel этой таблицы. |
void |
setAutoCreateRowSorter |
Указывает, следует ли создавать RowSorter для таблицы всякий раз, когда её модель меняется. |
void |
setAutoResizeMode |
Устанавливает режим автоматического изменения размера таблицы при изменении её размера. |
void |
setCellEditor |
Устанавливает активный редактор ячейки. |
void |
setCellSelectionEnabled |
Устанавливает, позволяет ли эта таблица одновременно иметь как выбор столбцов, так и выбор строк. |
void |
setColumnModel |
Устанавливает модель столбцов для этой таблицы в columnModel и регистрируется для уведомлений о событиях от новой модели столбцов. |
void |
setColumnSelectionAllowed |
Устанавливает, можно ли выбирать столбцы в этой модели. |
void |
setColumnSelectionInterval |
Выбирает столбцы с index0 по index1, включительно. |
void |
setDefaultEditor |
Устанавливает стандартный редактор ячеек, который будет использоваться, если редактор не был установлен в TableColumn. |
void |
setDefaultRenderer |
Устанавливает стандартный рендерер ячеек, который будет использоваться, если рендерер не был установлен в TableColumn. |
void |
setDragEnabled |
Включает или выключает автоматическую обработку перетаскивания. |
final void |
setDropMode |
Устанавливает режим выгрузки для этого компонента. |
void |
setEditingColumn |
Устанавливает переменную editingColumn. |
void |
setEditingRow |
Устанавливает переменную editingRow. |
void |
setFillsViewportHeight |
Устанавливает, будет ли эта таблица всегда достаточно большой, чтобы заполнить высоту окружающего области просмотра. |
void |
setGridColor |
Устанавливает цвет, используемый для рисования линий сетки, в gridColor и перерисовывает. |
void |
setIntercellSpacing |
Устанавливает rowMargin и columnMargin — высоту и ширину пространства между ячейками — в intercellSpacing. |
void |
setModel |
Устанавливает модель данных для этой таблицы в dataModel и регистрируется у неё для получения уведомлений о событиях от новой модели данных. |
void |
setPreferredScrollableViewportSize |
Устанавливает предпочтительный размер области просмотра для этой таблицы. |
void |
setRowHeight |
Устанавливает высоту всех ячеек в пикселях в rowHeight, перевалидирует и перерисовывает. |
void |
setRowHeight |
Устанавливает высоту для row в rowHeight, перевалидирует и перерисовывает. |
void |
setRowMargin |
Устанавливает количество пустого пространства между ячейками в соседних строках. |
void |
setRowSelectionAllowed |
Устанавливает, можно ли выбирать строки в этой модели. |
void |
setRowSelectionInterval |
Выбирает строки с index0 по index1, включительно. |
void |
setRowSorter |
Устанавливает RowSorter. |
void |
setSelectionBackground |
Устанавливает цвет фона для выделенных ячеек. |
void |
setSelectionForeground |
Устанавливает цвет переднего плана для выделенных ячеек. |
void |
setSelectionMode |
Устанавливает режим выбора таблицы, позволяющий только одиночные выборы, один непрерывный интервал или несколько интервалов. |
void |
setSelectionModel |
Устанавливает модель выбора строк для этой таблицы в selectionModel и регистрируется для уведомлений о событиях от новой модели выбора. |
void |
setShowGrid |
Устанавливает, рисует ли таблица линии сетки вокруг ячеек. |
void |
setShowHorizontalLines |
Устанавливает, рисует ли таблица горизонтальные линии между ячейками. |
void |
setShowVerticalLines |
Устанавливает, рисует ли таблица вертикальные линии между ячейками. |
void |
setSurrendersFocusOnKeystroke |
Устанавливает, получают ли редакторы в этом JTable фокус клавиатуры при активации редактора в результате перенаправления событий клавиатуры JTable для ячейки. |
void |
setTableHeader |
Устанавливает tableHeader работающий с этим JTable в newHeader. |
void |
setUI |
Устанавливает объект L&F, который отрисовывает этот компонент, и перерисовывает. |
void |
setUpdateSelectionOnSort |
Указывает, следует ли обновлять выбор после сортировки. |
void |
setValueAt |
Устанавливает значение для ячейки в модели таблицы в row и column. |
void |
sizeColumnsToFit |
Устарело. Начиная со Swing версии 1.0.3, заменено на doLayout(). |
void |
sizeColumnsToFit |
Устарело начиная с Java 2 platform v1.4. |
void |
sorterChanged |
RowSorterListener уведомление о том, что RowSorter изменился каким-либо образом. |
void |
tableChanged |
Вызывается, когда TableModel этой таблицы генерирует TableModelEvent. |
protected void |
unconfigureEnclosingScrollPane() |
Отменяет действие configureEnclosingScrollPane, заменяя columnHeaderView окружающего области просмотра на null. |
void |
updateUI() |
Уведомление от UIManager о том, что изменился L&F. |
void |
valueChanged |
Вызывается при изменении выбора строк — перерисовывает, чтобы отобразить новый выбор. |
Методы, объявленные в классе javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Методы, объявленные в классе java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
Методы, объявленные в классе java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
Подробное описание полей
AUTO_RESIZE_OFF
public static final int AUTO_RESIZE_OFF
- См. также:
AUTO_RESIZE_NEXT_COLUMN
public static final int AUTO_RESIZE_NEXT_COLUMN
- См. также:
AUTO_RESIZE_SUBSEQUENT_COLUMNS
public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS
- См. также:
AUTO_RESIZE_LAST_COLUMN
public static final int AUTO_RESIZE_LAST_COLUMN
- См. также:
AUTO_RESIZE_ALL_COLUMNS
public static final int AUTO_RESIZE_ALL_COLUMNS
- См. также:
dataModel
protected TableModel dataModel
columnModel
protected TableColumnModel columnModel
selectionModel
protected ListSelectionModel selectionModel
tableHeader
protected JTableHeader tableHeader
rowHeight
protected int rowHeight
rowMargin
protected int rowMargin
gridColor
protected Color gridColor
showHorizontalLines
protected boolean showHorizontalLines
showHorizontalLines равно true.showVerticalLines
protected boolean showVerticalLines
showVerticalLines равно true.autoResizeMode
protected int autoResizeMode
autoCreateColumnsFromModel
protected boolean autoCreateColumnsFromModel
preferredViewportSize
protected Dimension preferredViewportSize
rowSelectionAllowed
protected boolean rowSelectionAllowed
cellSelectionEnabled
protected boolean cellSelectionEnabled
rowSelectionAllowed и свойство columnSelectionAllowed интерфейса columnModel. Или используйте метод getCellSelectionEnabled. editorComp
protected transient Component editorComp
cellEditor
protected transient TableCellEditor cellEditor
null если таблица не находится в режиме редактирования.editingColumn
protected transient int editingColumn
editingRow
protected transient int editingRow
defaultRenderersByColumnClass
protected transient Hashtable<Object,Object> defaultRenderersByColumnClass
getColumnClass интерфейса TableModel. defaultEditorsByColumnClass
protected transient Hashtable<Object,Object> defaultEditorsByColumnClass
getColumnClass интерфейса TableModel. selectionForeground
protected Color selectionForeground
selectionBackground
protected Color selectionBackground
Подробное описание конструкторов
JTable
public JTable()
- См. также:
JTable
public JTable(TableModel dm)
dm, моделью столбцов по умолчанию и моделью выделения по умолчанию.- Параметры:
-
dm- модель данных таблицы - См. также:
JTable
public JTable(TableModel dm, TableColumnModel cm)
dm, моделью столбцов cm и моделью выделения по умолчанию.- Параметры:
-
dm- модель данных таблицы -
cm- модель столбцов таблицы - См. также:
JTable
public JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
dm, моделью столбцов cm и моделью выделения sm. Если любой из параметров равен null, этот метод инициализирует таблицу соответствующей моделью по умолчанию. Флаг autoCreateColumnsFromModel устанавливается в false, если cm не равен null, иначе он устанавливается в true, и модель столбцов заполняется подходящими TableColumns для столбцов в dm. - Параметры:
-
dm- модель данных таблицы -
cm- модель столбцов таблицы -
sm- модель выделения строк таблицы - См. также:
JTable
public JTable(int numRows, int numColumns)
numRows и numColumns пустых ячеек, используя DefaultTableModel. Столбцы будут иметь имена в формате "A", "B", "C" и т.д.- Параметры:
-
numRows- количество строк в таблице -
numColumns- количество столбцов в таблице - См. также:
JTable
public JTable(Vector<? extends Vector> rowData, Vector<?> columnNames)
JTable для отображения значений в Vector Vectors, rowData, с именами столбцов, columnNames. Vectors в rowData должны содержать значения для этой строки. Другими словами, значение ячейки в строке 1, столбце 5 можно получить следующим кодом: ((Vector)rowData.elementAt(1)).elementAt(5);
- Parameters:
-
rowData- данные для новой таблицы -
columnNames- имена каждого столбца
JTable
public JTable(Object[][] rowData, Object[] columnNames)
JTable для отображения значений в двумерном массиве, rowData, с именами столбцов, columnNames. rowData — массив строк, поэтому значение ячейки в строке 1, столбце 5 можно получить следующим кодом: rowData[1][5];
Все строки должны иметь одинаковую длину с columnNames.
- Parameters:
-
rowData- данные для новой таблицы -
columnNames- имена каждого столбца
Подробное описание методов
addNotify
public void addNotify()
configureEnclosingScrollPane. - Overrides:
-
addNotifyв классеJComponent - See Also:
configureEnclosingScrollPane
protected void configureEnclosingScrollPane()
JTable является viewportView охватывающей JScrollPane (обычная ситуация), сконфигурируйте эту ScrollPane, в том числе установив tableHeader таблицы в качестве columnHeaderView области прокрутки. Когда JTable добавляется к JScrollPane обычным способом, используя new JScrollPane(myTable), вызывается addNotify в JTable (когда таблица добавляется в область просмотра). Метод JTable's addNotify в свою очередь вызывает этот метод, который является защищённым, чтобы эта процедура установки по умолчанию могла быть переопределена подклассом.- See Also:
removeNotify
public void removeNotify()
unconfigureEnclosingScrollPane. - Overrides:
-
removeNotifyв классеJComponent - See Also:
unconfigureEnclosingScrollPane
protected void unconfigureEnclosingScrollPane()
configureEnclosingScrollPane путём замены columnHeaderView охватывающей области прокрутки на null. Метод JTable's removeNotify вызывает этот метод, который защищён, чтобы эта процедура отмены установки по умолчанию могла быть переопределена подклассом.- Since:
- 1.3
- See Also:
createScrollPaneForTable
@Deprecated public static JScrollPane createScrollPaneForTable(JTable aTable)
new JScrollPane(aTable). new JScrollPane(aTable). - Parameters:
-
aTable-JTableдля использования в области прокрутки - Returns:
JScrollPaneсозданный с помощьюaTable
setTableHeader
@BeanProperty(description="The JTableHeader instance which renders the column headers.") public void setTableHeader(JTableHeader tableHeader)
tableHeader, работающий с этой JTable на newHeader. Допустимо иметь null tableHeader. - Parameters:
-
tableHeader- новый tableHeader - See Also:
getTableHeader
public JTableHeader getTableHeader()
tableHeader, используемый этой JTable.- Returns:
tableHeaderиспользуемый этой таблицей- See Also:
setRowHeight
@BeanProperty(description="The height of the specified row.") public void setRowHeight(int rowHeight)
rowHeight, перевалидирует и перерисовывает. Высота ячеек будет равна высоте строки минус отступ строки.- Parameters:
-
rowHeight- новая высота строки - Throws:
-
IllegalArgumentException- еслиrowHeightменьше 1 - See Also:
getRowHeight
public int getRowHeight()
- Returns:
- высота строки таблицы в пикселях
- See Also:
setRowHeight
@BeanProperty(description="The height in pixels of the cells in <code>row</code>") public void setRowHeight(int row, int rowHeight)
row на rowHeight, перевалидирует и перерисовывает. Высота ячеек в этой строке будет равна высоте строки минус отступ строки.- Parameters:
-
row- строка, высота которой изменяется -
rowHeight- новая высота строки в пикселях - Throws:
-
IllegalArgumentException- еслиrowHeightменьше 1 - Since:
- 1.3
getRowHeight
public int getRowHeight(int row)
row в пикселях.- Parameters:
-
row- строка, высота которой требуется - Returns:
- высота ячеек в строке в пикселях
- Since:
- 1.3
setRowMargin
@BeanProperty(description="The amount of space between cells.") public void setRowMargin(int rowMargin)
- Parameters:
-
rowMargin- количество пикселей между ячейками в строке - See Also:
getRowMargin
public int getRowMargin()
getIntercellSpacing().height. - Returns:
- количество пикселей между ячейками в строке
- See Also:
setIntercellSpacing
@BeanProperty(bound=false, description="The spacing between the cells, drawn in the background color of the JTable.") public void setIntercellSpacing(Dimension intercellSpacing)
rowMargin и columnMargin - высоту и ширину пространства между ячейками - на intercellSpacing. - Parameters:
-
intercellSpacing-Dimension, определяющий новую ширину и высоту между ячейками - See Also:
getIntercellSpacing
public Dimension getIntercellSpacing()
- Returns:
- горизонтальное и вертикальное расстояние между ячейками
- See Also:
setGridColor
@BeanProperty(description="The grid color.") public void setGridColor(Color gridColor)
gridColor и перерисовывает. Цвет по умолчанию зависит от темы.- Parameters:
-
gridColor- новый цвет линий сетки - Throws:
-
IllegalArgumentException- еслиgridColorявляетсяnull - See Also:
getGridColor
public Color getGridColor()
- Returns:
- цвет, используемый для рисования линий сетки
- See Also:
setShowGrid
@BeanProperty(description="The color used to draw the grid lines.") public void setShowGrid(boolean showGrid)
showGrid равно true, линии отображаются; если false, нет. Нет getShowGrid метода, так как это состояние хранится в двух переменных — showHorizontalLines и showVerticalLines — каждую из которых можно запросить независимо.- Parameters:
-
showGrid- true, если представление таблицы должно отображать линии сетки - See Also:
setShowHorizontalLines
@BeanProperty(description="Whether horizontal lines should be drawn in between the cells.") public void setShowHorizontalLines(boolean showHorizontalLines)
showHorizontalLines равно true, линии отображаются; если false, нет.- Parameters:
-
showHorizontalLines- true, если представление таблицы должно отображать горизонтальные линии - See Also:
setShowVerticalLines
@BeanProperty(description="Whether vertical lines should be drawn in between the cells.") public void setShowVerticalLines(boolean showVerticalLines)
showVerticalLines равно true, линии отображаются; если false, нет.- Parameters:
-
showVerticalLines- true, если представление таблицы должно отображать вертикальные линии - See Also:
getShowHorizontalLines
public boolean getShowHorizontalLines()
- Returns:
- true, если таблица отображает горизонтальные линии между ячейками, false, если нет
- See Also:
getShowVerticalLines
public boolean getShowVerticalLines()
- Returns:
- true, если таблица отображает вертикальные линии между ячейками, false, если нет
- See Also:
setAutoResizeMode
@BeanProperty(enumerationValues={"JTable.AUTO_RESIZE_OFF","JTable.AUTO_RESIZE_NEXT_COLUMN","JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS","JTable.AUTO_RESIZE_LAST_COLUMN","JTable.AUTO_RESIZE_ALL_COLUMNS"}, description="Whether the columns should adjust themselves automatically.") public void setAutoResizeMode(int mode) doLayout().- Parameters:
-
mode- Одно из 5 допустимых значений: AUTO_RESIZE_OFF, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_SUBSEQUENT_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_ALL_COLUMNS - See Also:
getAutoResizeMode
public int getAutoResizeMode()
- Returns:
- режим autoResizeMode таблицы
- See Also:
setAutoCreateColumnsFromModel
@BeanProperty(description="Automatically populates the columnModel when a new TableModel is submitted.") public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
autoCreateColumnsFromModel этой таблицы. Этот метод вызывает createDefaultColumnsFromModel, если autoCreateColumnsFromModel изменяется с false на true.- Parameters:
-
autoCreateColumnsFromModel- true, если таблица должна автоматически создавать столбцы - See Also:
getAutoCreateColumnsFromModel
public boolean getAutoCreateColumnsFromModel()
setModel очистит все существующие столбцы и создаст новые столбцы из новой модели. Кроме того, если событие в уведомлении tableChanged указывает, что вся таблица изменилась, столбцы будут перестроены. Значение по умолчанию — true.- Returns:
- autoCreateColumnsFromModel таблицы
- See Also:
createDefaultColumnsFromModel
public void createDefaultColumnsFromModel()
getColumnCount, определённого в интерфейсе TableModel. Очищает любые существующие столбцы перед созданием новых столбцов на основе информации из модели.
- See Also:
setDefaultRenderer
public void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)
TableColumn. Если renderer null, удаляет рендерер по умолчанию для этого класса столбца.- Parameters:
-
columnClass- установить рендерер ячеек по умолчанию для этого класса столбца -
renderer- рендерер ячеек по умолчанию для этого класса столбца - See Also:
getDefaultRenderer
public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
TableColumn. Во время отрисовки ячеек рендерер извлекается из Hashtable в соответствии с классом ячеек в столбце. Если записи для этого columnClass нет, метод возвращает запись для самого специфичного суперкласса. JTable устанавливает записи для Object, Number, и Boolean, которые можно изменить или заменить.- Parameters:
-
columnClass- вернуть рендерер ячеек по умолчанию для этого класса столбца - Returns:
- рендерер для этого класса столбца
- See Also:
setDefaultEditor
public void setDefaultEditor(Class<?> columnClass, TableCellEditor editor)
TableColumn. Если редактирование в таблице или в определённом столбце не требуется, используйте метод isCellEditable в интерфейсе TableModel, чтобы убедиться, что этот JTable не запустит редактор в этих столбцах. Если editor null, удаляет редактор по умолчанию для этого класса столбца.- Parameters:
-
columnClass- установить редактор ячеек по умолчанию для этого класса столбца -
editor- редактор ячеек по умолчанию для этого класса столбца - See Also:
getDefaultEditor
public TableCellEditor getDefaultEditor(Class<?> columnClass)
TableColumn. Во время редактирования ячеек редактор извлекается из Hashtable в соответствии с классом ячеек в столбце. Если записи для этого columnClass нет, метод возвращает запись для самого специфичного суперкласса. JTable устанавливает записи для Object, Number, и Boolean, которые можно изменить или заменить.- Parameters:
-
columnClass- вернуть редактор ячеек по умолчанию для этого класса столбца - Returns:
- редактор ячеек по умолчанию для этого класса столбца
- See Also:
setDragEnabled
@BeanProperty(bound=false, description="determines whether automatic drag handling is enabled") public void setDragEnabled(boolean b)
true, а TransferHandler таблицы должно быть non-null. Значение по умолчанию свойства dragEnabled равно false. Задача соблюдения этого свойства и распознавания жеста перетаскивания пользователем лежит на реализации внешнего вида и поведения, и в частности, на TableUI таблицы. Когда включена автоматическая обработка перетаскивания, большинство внешних видов и ощущений (включая те, которые являются подклассами BasicLookAndFeel) начинают операцию перетаскивания, когда пользователь нажимает кнопку мыши над элементом (в режиме одиночного выбора) или выделением (в других режимах выбора), а затем перемещает мышь на несколько пикселей. Установка этого свойства в true может, следовательно, оказывать незначительное влияние на поведение выделения.
Если используется внешний вид и поведение, игнорирующий это свойство, вы все равно можете начать операцию перетаскивания, вызвав exportAsDrag для TransferHandler таблицы.
- Параметры:
-
b- включить или выключить автоматическую обработку перетаскивания - Исключения:
-
HeadlessException- еслиbявляетсяtrueиGraphicsEnvironment.isHeadless()возвращаетtrue - С версии:
- 1.4
- См. также:
getDragEnabled
public boolean getDragEnabled()
- Возвращает:
- значение свойства
dragEnabled - С версии:
- 1.4
- См. также:
setDropMode
public final void setDropMode(DropMode dropMode)
DropMode.USE_SELECTION. Однако рекомендуется использовать один из других режимов для улучшения пользовательского опыта. DropMode.ON, например, обеспечивает аналогичное поведение отображения элементов как выделенных, но делает это без влияния на фактическое выделение в таблице. JTable поддерживает следующие режимы перетаскивания:
DropMode.USE_SELECTIONDropMode.ONDropMode.INSERTDropMode.INSERT_ROWSDropMode.INSERT_COLSDropMode.ON_OR_INSERTDropMode.ON_OR_INSERT_ROWSDropMode.ON_OR_INSERT_COLS
Режим перетаскивания имеет значение только в том случае, если этот компонент имеет TransferHandler, который принимает перетаскиваемые элементы.
- Параметры:
-
dropMode- используемый режим перетаскивания - Исключения:
-
IllegalArgumentException- если режим перетаскивания не поддерживается илиnull - С версии:
- 1.6
- См. также:
getDropMode
public final DropMode getDropMode()
- Возвращает:
- режим перетаскивания для этого компонента
- С версии:
- 1.6
- См. также:
getDropLocation
@BeanProperty(bound=false) public final JTable.DropLocation getDropLocation()
null, если в настоящее время не следует отображать местоположение. Этот метод не предназначен для запроса местоположения перетаскивания из TransferHandler, поскольку местоположение перетаскивания устанавливается только после того, как TransferHandler's canImport вернул значение и разрешил отображение местоположения.
Когда это свойство изменяется, компонент генерирует событие изменения свойства с именем "dropLocation".
- Возвращает:
- местоположение перетаскивания
- С версии:
- 1.6
- См. также:
setAutoCreateRowSorter
@BeanProperty(preferred=true, description="Whether or not to turn on sorting by default.") public void setAutoCreateRowSorter(boolean autoCreateRowSorter)
RowSorter для таблицы всякий раз, когда изменяется ее модель. Когда вызывается setAutoCreateRowSorter(true),
TableRowSorter немедленно создается и устанавливается в таблице. Пока свойство autoCreateRowSorter остается true, каждый раз при изменении модели создается новый
TableRowSorter и устанавливается в качестве сортировщика строк таблицы. Значение по умолчанию для свойства autoCreateRowSorter равно false.
- Параметры:
-
autoCreateRowSorter- следует ли автоматически создаватьRowSorter - С версии:
- 1.6
- См. также:
getAutoCreateRowSorter
public boolean getAutoCreateRowSorter()
true, если всякий раз при изменении модели следует создавать новый RowSorter и устанавливать его в качестве сортировщика таблицы; в противном случае возвращает false. - Возвращает:
- true, если
RowSorterследует создавать при изменении модели - С версии:
- 1.6
setUpdateSelectionOnSort
@BeanProperty(expert=true, description="Whether or not to update the selection on sorting") public void setUpdateSelectionOnSort(boolean update)
- Параметры:
-
update- обновлять ли выделение при сортировке - С версии:
- 1.6
getUpdateSelectionOnSort
public boolean getUpdateSelectionOnSort()
- Возвращает:
- следует ли обновлять выделение при сортировке
- С версии:
- 1.6
setRowSorter
@BeanProperty(description="The table\'s RowSorter") public void setRowSorter(RowSorter<? extends TableModel> sorter)
RowSorter. RowSorter используется для обеспечения сортировки и фильтрации JTable. Этот метод очищает выделение и сбрасывает любые переменные высоты строк.
Этот метод генерирует PropertyChangeEvent, когда это уместно, с именем свойства "rowSorter". Для обратной совместимости этот метод генерирует дополнительное событие с именем свойства "sorter".
Если базовая модель RowSorter отличается от модели этого JTable, это приведет к неопределенному поведению.
- Параметры:
-
sorter-RowSorter;nullотключает сортировку - С версии:
- 1.6
- См. также:
getRowSorter
public RowSorter<? extends TableModel> getRowSorter()
- Возвращает:
- объект, ответственный за сортировку
- С версии:
- 1.6
setSelectionMode
@BeanProperty(enumerationValues={"ListSelectionModel.SINGLE_SELECTION","ListSelectionModel.SINGLE_INTERVAL_SELECTION","ListSelectionModel.MULTIPLE_INTERVAL_SELECTION"}, description="The selection mode used by the row and column selection models.") public void setSelectionMode(int selectionMode) Примечание: JTable предоставляет все методы для обработки выбора столбцов и строк. При установке состояний, таких как setSelectionMode, он не только обновляет режим для модели выбора строк, но также устанавливает аналогичные значения в модели выбора columnModel. Если вы хотите, чтобы модели выбора строк и столбцов работали в разных режимах, установите их оба напрямую.
Модели выбора строк и столбцов для JTable по умолчанию используют DefaultListSelectionModel, поэтому JTable работает так же, как JList. См. метод setSelectionMode в JList для получения подробной информации о режимах.
- Параметры:
-
selectionMode- режим, используемый моделями выбора строк и столбцов - См. также:
setRowSelectionAllowed
@BeanProperty(visualUpdate=true, description="If true, an entire row is selected for each selected cell.") public void setRowSelectionAllowed(boolean rowSelectionAllowed)
- Параметры:
-
rowSelectionAllowed- true, если эта модель будет разрешать выбор строк - См. также:
getRowSelectionAllowed
public boolean getRowSelectionAllowed()
- Возвращает:
- true, если строки можно выбрать, иначе false
- См. также:
setColumnSelectionAllowed
@BeanProperty(visualUpdate=true, description="If true, an entire column is selected for each selected cell.") public void setColumnSelectionAllowed(boolean columnSelectionAllowed)
- Параметры:
-
columnSelectionAllowed- true, если эта модель позволит выбирать столбцы - См. также:
getColumnSelectionAllowed
public boolean getColumnSelectionAllowed()
- Возвращает:
- true, если столбцы могут быть выбраны, иначе false
- См. также:
setCellSelectionEnabled
@BeanProperty(visualUpdate=true, description="Select a rectangular region of cells rather than rows or columns.") public void setCellSelectionEnabled(boolean cellSelectionEnabled)
isCellSelected для изменения этого поведения по умолчанию. Этот метод эквивалентен установке свойств rowSelectionAllowed и columnSelectionAllowed модели columnModel в указанное значение.- Параметры:
-
cellSelectionEnabled- true, если разрешен одновременный выбор строки и столбца - См. также:
getCellSelectionEnabled
public boolean getCellSelectionEnabled()
getRowSelectionAllowed() &&
getColumnSelectionAllowed(). - Возвращает:
- true, если модели выбора строк и столбцов включены
- См. также:
selectAll
public void selectAll()
clearSelection
public void clearSelection()
setRowSelectionInterval
public void setRowSelectionInterval(int index0, int index1)
index0 по index1, включительно.- Параметры:
-
index0- одна граница интервала -
index1- другая граница интервала - Исключения:
-
IllegalArgumentException- еслиindex0илиindex1находятся вне [0,getRowCount()-1]
setColumnSelectionInterval
public void setColumnSelectionInterval(int index0, int index1)
index0 по index1, включительно.- Параметры:
-
index0- одна граница интервала -
index1- другая граница интервала - Исключения:
-
IllegalArgumentException- еслиindex0илиindex1находятся вне [0,getColumnCount()-1]
addRowSelectionInterval
public void addRowSelectionInterval(int index0, int index1)
index0 по index1, включительно, к текущему выбору.- Параметры:
-
index0- одна граница интервала -
index1- другая граница интервала - Исключения:
-
IllegalArgumentException- еслиindex0илиindex1находятся вне [0,getRowCount()-1]
addColumnSelectionInterval
public void addColumnSelectionInterval(int index0, int index1)
index0 по index1, включительно, к текущему выбору.- Параметры:
-
index0- одна граница интервала -
index1- другая граница интервала - Исключения:
-
IllegalArgumentException- еслиindex0илиindex1находятся вне [0,getColumnCount()-1]
removeRowSelectionInterval
public void removeRowSelectionInterval(int index0, int index1)
index0 по index1, включительно.- Параметры:
-
index0- одна граница интервала -
index1- другая граница интервала - Исключения:
-
IllegalArgumentException- еслиindex0илиindex1находятся вне [0,getRowCount()-1]
removeColumnSelectionInterval
public void removeColumnSelectionInterval(int index0, int index1)
index0 по index1, включительно.- Параметры:
-
index0- одна граница интервала -
index1- другая граница интервала - Исключения:
-
IllegalArgumentException- еслиindex0илиindex1находятся вне [0,getColumnCount()-1]
getSelectedRow
@BeanProperty(bound=false) public int getSelectedRow()
- Возвращает:
- индекс первой выбранной строки
getSelectedColumn
@BeanProperty(bound=false) public int getSelectedColumn()
- Возвращает:
- индекс первого выбранного столбца
getSelectedRows
@BeanProperty(bound=false) public int[] getSelectedRows()
- Возвращает:
- массив целых чисел, содержащий индексы всех выбранных строк, или пустой массив, если ни одна строка не выбрана
- См. также:
getSelectedColumns
@BeanProperty(bound=false) public int[] getSelectedColumns()
- Возвращает:
- массив целых чисел, содержащий индексы всех выбранных столбцов, или пустой массив, если ни один столбец не выбран
- См. также:
getSelectedRowCount
@BeanProperty(bound=false) public int getSelectedRowCount()
- Возвращает:
- количество выбранных строк, 0, если нет выбранных строк
getSelectedColumnCount
@BeanProperty(bound=false) public int getSelectedColumnCount()
- Возвращает:
- количество выбранных столбцов, 0, если нет выбранных столбцов
isRowSelected
public boolean isRowSelected(int row)
- Параметры:
-
row- строка в модели строк - Возвращает:
- true, если
rowявляется допустимым индексом и строка по этому индексу выбрана (где 0 - первая строка)
isColumnSelected
public boolean isColumnSelected(int column)
- Параметры:
-
column- столбец в модели столбцов - Возвращает:
- true, если
columnявляется допустимым индексом и столбец по этому индексу выбран (где 0 - первый столбец)
isCellSelected
public boolean isCellSelected(int row, int column)
- Параметры:
-
row- запрашиваемая строка -
column- запрашиваемый столбец - Возвращает:
- true, если
rowиcolumnявляются допустимыми индексами и ячейка с индексом(row, column)выбрана, где первая строка и первый столбец имеют индекс 0
changeSelection
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
toggle и extend. Большинство изменений выделения, являющихся результатом событий клавиатуры или мыши, полученных пользовательским интерфейсом, передаются через этот метод, чтобы поведение могло быть переопределено подклассом. Некоторые пользовательские интерфейсы могут потребовать больше функциональности, чем предоставляет этот метод, например, при манипулировании лидером для несмежных выделений, и могут не вызывать этот метод для некоторых изменений выделения. Эта реализация использует следующие соглашения:
-
toggle: false,extend: false. Очистить предыдущее выделение и гарантировать, что новая ячейка выбрана. -
toggle: false,extend: true. Расширить предыдущее выделение от якоря до указанной ячейки, очистив все остальные выделения. -
toggle: true,extend: false. Если указанная ячейка выбрана, снять выбор. Если она не выбрана, выбрать её. -
toggle: true,extend: true. Применить состояние выделения якоря ко всем ячейкам между ним и указанной ячейкой.
- Parameters:
-
rowIndex- влияет на выделение вrow -
columnIndex- влияет на выделение вcolumn -
toggle- см. описание выше -
extend- если true, расширить текущее выделение - Since:
- 1.3
getSelectionForeground
public Color getSelectionForeground()
- Returns:
- объект
Colorдля свойства foreground - See Also:
setSelectionForeground
@BeanProperty(description="A default foreground color for selected cells.") public void setSelectionForeground(Color selectionForeground)
Значение по умолчанию этого свойства определяется реализацией внешнего вида.
Это свойство JavaBeans.
- Parameters:
-
selectionForeground-Colorдля использования в переднем плане для выделенных элементов списка - See Also:
getSelectionBackground
public Color getSelectionBackground()
- Returns:
Colorдля фона выделенных элементов списка- See Also:
setSelectionBackground
@BeanProperty(description="A default background color for selected cells.") public void setSelectionBackground(Color selectionBackground)
Значение по умолчанию этого свойства определяется реализацией внешнего вида.
Это свойство JavaBeans.
- Parameters:
-
selectionBackground-Colorдля фона выделенных ячеек - See Also:
getColumn
public TableColumn getColumn(Object identifier)
TableColumn для столбца в таблице, идентификатор которого равен identifier, при сравнении с использованием equals.- Parameters:
-
identifier- объект идентификатора - Returns:
- объект
TableColumn, соответствующий идентификатору - Throws:
-
IllegalArgumentException- еслиidentifierимеет значениеnullили вTableColumnнет столбца с данным идентификатором
convertColumnIndexToModel
public int convertColumnIndexToModel(int viewColumnIndex)
viewColumnIndex в индекс столбца в модели таблицы. Возвращает индекс соответствующего столбца в модели. Если viewColumnIndex меньше нуля, возвращает viewColumnIndex.- Parameters:
-
viewColumnIndex- индекс столбца в представлении - Returns:
- индекс соответствующего столбца в модели
- See Also:
convertColumnIndexToView
public int convertColumnIndexToView(int modelColumnIndex)
modelColumnIndex в индекс столбца в представлении. Возвращает индекс соответствующего столбца в представлении; возвращает -1, если этот столбец не отображается. Если modelColumnIndex меньше нуля, возвращает modelColumnIndex.- Parameters:
-
modelColumnIndex- индекс столбца в модели - Returns:
- индекс соответствующего столбца в представлении
- See Also:
convertRowIndexToView
public int convertRowIndexToView(int modelRowIndex)
TableModel в представление. Если содержимое модели не отсортировано, индексы модели и представления совпадают.- Parameters:
-
modelRowIndex- индекс строки относительно модели - Returns:
- индекс соответствующей строки в представлении или -1, если строка не отображается
- Throws:
-
IndexOutOfBoundsException- если сортировка включена и передан индекс, выходящий за пределы количества строкTableModel - Since:
- 1.6
- See Also:
convertRowIndexToModel
public int convertRowIndexToModel(int viewRowIndex)
TableModel. Если содержимое модели не отсортировано, индексы модели и представления совпадают.- Parameters:
-
viewRowIndex- индекс строки в представлении - Returns:
- индекс соответствующей строки в модели
- Throws:
-
IndexOutOfBoundsException- если сортировка включена и передан индекс, выходящий за пределы диапазонаJTable, как определено методомgetRowCount - Since:
- 1.6
- See Also:
getRowCount
@BeanProperty(bound=false) public int getRowCount()
JTable, при неограниченном пространстве. Если указана RowSorter с фильтром, количество возвращенных строк может отличаться от количества в базовой TableModel.- Returns:
- количество отображаемых строк в
JTable - See Also:
getColumnCount
@BeanProperty(bound=false) public int getColumnCount()
- Returns:
- количество столбцов в таблице
- See Also:
getColumnName
public String getColumnName(int column)
column.- Parameters:
-
column- столбец в представлении, который запрашивается - Returns:
- имя столбца в позиции
columnв представлении, где первый столбец - столбец 0
getColumnClass
public Class<?> getColumnClass(int column)
column.- Parameters:
-
column- столбец в представлении, который запрашивается - Returns:
- тип столбца в позиции
columnв представлении, где первый столбец - столбец 0
getValueAt
public Object getValueAt(int row, int column)
row и column. Примечание: Столбец задается в порядке отображения в таблице, а не в порядке столбцов TableModel. Это важное различие, потому что при перестановке пользователем столбцов в таблице столбец с заданным индексом в представлении изменится. При этом действия пользователя не влияют на порядок столбцов модели.
- Параметры:
-
row- строка, значение которой требуется получить -
column- столбец, значение которого требуется получить - Возвращает:
- объект в указанной ячейке
setValueAt
public void setValueAt(Object aValue, int row, int column)
row и column. Примечание: Столбец задается в порядке отображения в таблице, а не в порядке столбцов TableModel. Это важное различие, потому что при перестановке пользователем столбцов в таблице столбец с заданным индексом в представлении изменится. При этом действия пользователя не влияют на порядок столбцов модели. aValue - новое значение.
- Параметры:
-
aValue- новое значение -
row- строка изменяемой ячейки -
column- столбец изменяемой ячейки - См. также:
isCellEditable
public boolean isCellEditable(int row, int column)
row и column редактируема. В противном случае вызов setValueAt для ячейки не будет иметь эффекта. Примечание: Столбец задается в порядке отображения в таблице, а не в порядке столбцов TableModel. Это важное различие, потому что при перестановке пользователем столбцов в таблице столбец с заданным индексом в представлении изменится. При этом действия пользователя не влияют на порядок столбцов модели.
- Параметры:
-
row- строка, значение которой требуется получить -
column- столбец, значение которого требуется получить - Возвращает:
- true, если ячейка редактируема
- См. также:
addColumn
public void addColumn(TableColumn aColumn)
aColumn в конец массива столбцов, хранимого в модели столбцов этого JTable. Если имя столбца aColumn равно null, устанавливает имя столбца aColumn в значение, возвращаемое getModel().getColumnName(). Чтобы добавить столбец в эту JTable для отображения modelColumn столбца данных в модели с заданным width, cellRenderer, и cellEditor можно использовать:
addColumn(new TableColumn(modelColumn, width, cellRenderer, cellEditor));
[Любой из конструкторов TableColumn может быть использован вместо этого.] Номер столбца модели хранится внутри TableColumn и используется во время отрисовки и редактирования для поиска соответствующих значений данных в модели. Номер столбца модели не меняется при перестановке столбцов в представлении.- Параметры:
-
aColumn- добавляемыйTableColumn - См. также:
removeColumn
public void removeColumn(TableColumn aColumn)
aColumn из массива столбцов этого JTable. Примечание: этот метод не удаляет столбец данных из модели; он просто удаляет TableColumn который отвечал за его отображение.- Параметры:
-
aColumn- удаляемыйTableColumn - См. также:
moveColumn
public void moveColumn(int column, int targetColumn)
column в позицию, занимаемую столбцом targetColumn в представлении. Прежний столбец в позиции targetColumn сдвигается влево или вправо, чтобы освободить место.- Параметры:
-
column- индекс перемещаемого столбца -
targetColumn- новый индекс столбца
columnAtPoint
public int columnAtPoint(Point point)
point расположен, или -1, если результат не находится в диапазоне [0, getColumnCount()-1].- Параметры:
-
point- местоположение - Возвращает:
- индекс столбца, в котором
pointрасположен, или -1, если результат не находится в диапазоне [0,getColumnCount()-1] - См. также:
rowAtPoint
public int rowAtPoint(Point point)
point расположен, или -1, если результат не находится в диапазоне [0, getRowCount()-1].- Параметры:
-
point- местоположение - Возвращает:
- индекс строки, в которой
pointрасположен, или -1, если результат не находится в диапазоне [0,getRowCount()-1] - См. также:
getCellRect
public Rectangle getCellRect(int row, int column, boolean includeSpacing)
row и column. Если includeSpacing равно true, возвращаемое значение имеет полную высоту и ширину указанной строки и столбца. Если false, возвращаемый прямоугольник смещен с учетом межклеточного отступа, чтобы получить истинные границы компонента отрисовки или редактирования, как он будет установлен во время отрисовки. Если индекс столбца допустим, но индекс строки меньше нуля, метод возвращает прямоугольник с соответствующими значениями y и height, а значения x и width оба установлены в ноль. В общем случае, когда либо индекс строки, либо индекс столбца указывают на ячейку за пределами соответствующего диапазона, метод возвращает прямоугольник, отображающий ближайший край ближайшей ячейки, которая находится в пределах диапазона таблицы. Когда и индекс строки, и индекс столбца находятся вне диапазона, возвращаемый прямоугольник охватывает ближайшую точку ближайшей ячейки.
Во всех случаях вычисления, использующие этот метод для вычисления результатов по одной оси, не потерпят неудачу из-за аномалий в вычислениях по другой оси. Когда ячейка не допустима, параметр includeSpacing игнорируется.
- Параметры:
-
row- индекс строки, где расположена нужная ячейка -
column- индекс столбца, где расположена нужная ячейка в представлении; он необязательно совпадает с индексом столбца в модели данных таблицы; методconvertColumnIndexToView(int)может использоваться для преобразования индекса столбца модели данных в индекс столбца представления -
includeSpacing- если false, возвращает истинные границы ячейки - вычисленные путем вычитания межклеточного отступа из высоты и ширины моделей столбца и строки - Возвращает:
- прямоугольник, содержащий ячейку по координатам
row,column - См. также:
doLayout
public void doLayout()
JTable была равна ширине таблицы. Перед началом вывода метод получает resizingColumn tableHeader. Когда метод вызывается в результате изменения размера окружающего окна, resizingColumn null. Это означает, что изменение размера произошло «вне» JTable, и изменение — или «дельта» — должно быть распределено по всем столбцам независимо от режима автоматического изменения размера JTable.
Если resizingColumn не null, то это один из столбцов в таблице, который изменил размер, а не сама таблица. В этом случае режимы автоматического изменения размера управляют способом распределения дополнительного (или недостающего) пространства между доступными столбцами.
Режимы следующие:
- AUTO_RESIZE_OFF: Совсем не автоматически настраивать ширину столбцов. Используйте горизонтальную полосу прокрутки для размещения столбцов, когда их сумма превышает ширину
Viewport. ЕслиJTableне находится вJScrollPane, это может привести к тому, что части таблицы будут невидимы. - AUTO_RESIZE_NEXT_COLUMN: Используйте только столбец после столбца, подвергшегося изменению размера. В результате этого «граница» или разделитель между соседними ячейками могут настраиваться независимо.
- AUTO_RESIZE_SUBSEQUENT_COLUMNS: Используйте все столбцы после того, который был изменен, для поглощения изменений. Это поведение по умолчанию.
- AUTO_RESIZE_LAST_COLUMN: Автоматически изменять размер только последнего столбца. Если пределы последнего столбца препятствуют назначению желаемого размера, установите ширину последнего столбца до соответствующего предела и не вносите дальнейших изменений.
- AUTO_RESIZE_ALL_COLUMNS: Распределите дельту между всеми столбцами в
JTable, включая тот, который изменяется.
Примечание: Когда JTable вносит коррективы в ширину столбцов, он абсолютно учитывает их минимальные и максимальные значения. Поэтому возможно, что даже после вызова этого метода общая ширина столбцов все еще не равна ширине таблицы. В этом случае JTable не переходит в режим AUTO_RESIZE_OFF, чтобы отобразить полосу прокрутки или нарушить другие обязательства своего текущего режима автоматического изменения размера — вместо этого он позволяет установить свои границы больше (или меньше), чем сумма минимальных или максимальных значений столбцов, что означает, что либо места не хватит для отображения всех столбцов, либо столбцы не заполнят границы JTable. В первом случае некоторые столбцы будут обрезаны, а во втором — область будет закрашена фоновым цветом JTable во время рисования.
Механизм распределения дельты между доступными столбцами реализован в частном методе в классе JTable:
adjustSizes(long targetSize, final Resizable3 r, boolean inverse)объяснение которого приведено в следующем разделе.
Resizable3 — это частный интерфейс, который позволяет любой структуре данных, содержащей коллекцию элементов с размером, предпочтительным размером, максимальным размером и минимальным размером, манипулировать своими элементами с помощью алгоритма. Распределение дельты
Обзор
Назовем «ДЕЛЬТА» разницу между целевым размером и суммой предпочтительных размеров элементов в r. Индивидуальные размеры вычисляются путем взятия исходных предпочтительных размеров и добавления доли ДЕЛЬТЫ — эта доля зависит от того, насколько каждый предпочтительный размер удален от своего ограничивающего предела (минимального или максимального).
Определение
Обозначим индивидуальные ограничения как min[i], max[i] и pref[i].
Обозначим их суммы как MIN, MAX и PREF.
Каждый новый размер будет рассчитан с помощью:
size[i] = pref[i] + delta[i]
где каждая индивидуальная delta[i] вычисляется следующим образом: Если (ДЕЛЬТА < 0), мы находимся в режиме уменьшения, где:
DELTA
delta[i] = ------------ * (pref[i] - min[i])
(PREF - MIN)
Если (ДЕЛЬТА > 0), мы находимся в режиме расширения, где:
DELTA
delta[i] = ------------ * (max[i] - pref[i])
(MAX - PREF)
Общий эффект заключается в том, что суммарный размер перемещается на ту же долю, k, к общему минимуму или максимуму, и эта доля гарантирует размещение необходимого пространства, ДЕЛЬТА.
Детали
Наивное вычисление представленных здесь формул было бы подвержено совокупным ошибкам округления, вызванным выполнением этой операции в конечной точности (с использованием целых чисел). Для решения этой проблемы множитель выше постоянно пересчитывается, и это учитывает ошибки округления в предыдущих итерациях. Результатом является алгоритм, генерирующий набор целых чисел, сумма которых точно равна заданной targetSize, и он делает это, равномерно распределяя ошибки округления по заданным элементам.
Когда достигаются пределы MAX и MIN
Когда targetSize находится вне диапазона [MIN, MAX], алгоритм устанавливает все размеры на их соответствующее предельное значение (максимум или минимум).
- Overrides:
-
doLayoutв классеContainer - См. также:
sizeColumnsToFit
@Deprecated public void sizeColumnsToFit(boolean lastColumnOnly)
doLayout().- Параметры:
-
lastColumnOnly- определяет, следует ли изменять размер только последнего столбца - См. также:
sizeColumnsToFit
public void sizeColumnsToFit(int resizingColumn)
doLayout() вместо него.- Параметры:
-
resizingColumn- столбец, изменение размера которого потребовало этого изменения, или -1, если такого столбца нет - См. также:
getToolTipText
public String getToolTipText(MouseEvent event)
JComponent's getToolTipText для использования подсказок рендерера, если у него есть заданный текст. Примечание: Чтобы JTable правильно отображал всплывающие подсказки своих рендереров, JTable должен быть зарегистрированным компонентом в ToolTipManager. Это делается автоматически в initializeLocalVars, но если в дальнейшем JTable получит команду setToolTipText(null), он дезактивирует компонент таблицы, и никакие подсказки от рендереров больше не будут отображаться.
- Переопределяет:
-
getToolTipTextв классеJComponent - Параметры:
-
event-MouseEvent, инициировавший отображениеToolTip - Возвращает:
- строку, содержащую всплывающую подсказку
- См. также:
setSurrendersFocusOnKeystroke
public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
- Параметры:
-
surrendersFocusOnKeystroke- true, если редактор должен получить фокус, когда нажатия клавиш приводят к активации редактора - С:
- 1.4
- См. также:
getSurrendersFocusOnKeystroke
public boolean getSurrendersFocusOnKeystroke()
- Возвращает:
- true, если редактор должен получить фокус, когда нажатия клавиш приводят к активации редактора
- С:
- 1.4
- См. также:
editCellAt
public boolean editCellAt(int row, int column)
row и столбце column, если эти индексы находятся в допустимом диапазоне, и ячейка в этих индексах редактируема. Обратите внимание, что это удобный метод для editCellAt(int, int, null).- Параметры:
-
row- строка для редактирования -
column- столбец для редактирования - Возвращает:
- false, если ячейку нельзя отредактировать по какой-либо причине или индексы недопустимы
editCellAt
public boolean editCellAt(int row, int column, EventObject e)
row и столбце column, если эти индексы находятся в допустимом диапазоне, и ячейка в этих индексах редактируема. Чтобы предотвратить редактирование JTable конкретной таблицы, столбца или значения ячейки, верните false из метода isCellEditable в интерфейсе TableModel.- Параметры:
-
row- строка для редактирования -
column- столбец для редактирования -
e- событие для передачи вshouldSelectCell; обратите внимание, что начиная с Java 2 platform v1.2, вызовshouldSelectCellбольше не выполняется - Возвращает:
- false, если ячейку нельзя отредактировать по какой-либо причине или индексы недопустимы
isEditing
@BeanProperty(bound=false) public boolean isEditing()
- Возвращает:
- true, если таблица редактирует ячейку
- См. также:
getEditorComponent
@BeanProperty(bound=false) public Component getEditorComponent()
- Возвращает:
- Компонент, обрабатывающий сеанс редактирования
getEditingColumn
public int getEditingColumn()
- Возвращает:
- индекс столбца, содержащего ячейку, которая в настоящее время находится в режиме редактирования; возвращает -1, если ничего не редактируется
- См. также:
getEditingRow
public int getEditingRow()
- Возвращает:
- индекс строки, содержащей ячейку, которая в настоящее время находится в режиме редактирования; возвращает -1, если ничего не редактируется
- См. также:
getUI
public TableUI getUI()
- Переопределяет:
-
getUIв классеJComponent - Возвращает:
- объект L&F, отображающий этот компонент
setUI
@BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.") public void setUI(TableUI ui)
- Параметры:
-
ui- объект L&F TableUI - См. также:
updateUI
public void updateUI()
UIManager, что вид L&F изменился. Заменяет текущий объект UI последней версией из UIManager.- Переопределяет:
-
updateUIв классеJComponent - См. также:
getUIClassID
@BeanProperty(bound=false) public String getUIClassID()
- Переопределяет:
-
getUIClassIDв классеJComponent - Возвращает:
- строку "TableUI"
- См. также:
setModel
@BeanProperty(description="The model that is the source of the data for this view.") public void setModel(TableModel dataModel)
dataModel и регистрируется с ней для получения уведомлений о слушателях от новой модели данных.- Параметры:
-
dataModel- новый источник данных для этой таблицы - Исключения:
-
IllegalArgumentException- еслиdataModelявляетсяnull - См. также:
getModel
public TableModel getModel()
TableModel, который предоставляет данные, отображаемые в этой JTable.- Возвращает:
TableModel, предоставляющий данные, отображаемые в этойJTable- См. также:
setColumnModel
@BeanProperty(description="The object governing the way columns appear in the view.") public void setColumnModel(TableColumnModel columnModel)
columnModel и регистрируется для получения уведомлений от новой модели столбцов. Также устанавливает модель столбцов JTableHeader в columnModel.- Параметры:
-
columnModel- новый источник данных для этой таблицы - Исключения:
-
IllegalArgumentException- еслиcolumnModelявляетсяnull - См. также:
getColumnModel
public TableColumnModel getColumnModel()
TableColumnModel, содержащий всю информацию о столбцах этой таблицы.- Возвращает:
- объект, предоставляющий состояние столбцов таблицы
- См. также:
setSelectionModel
@BeanProperty(description="The selection model for rows.") public void setSelectionModel(ListSelectionModel selectionModel)
selectionModel и регистрируется для получения уведомлений от новой модели выбора.- Параметры:
-
selectionModel- новая модель выбора - Исключения:
-
IllegalArgumentException- еслиselectionModelявляетсяnull - См. также:
getSelectionModel
public ListSelectionModel getSelectionModel()
ListSelectionModel, используемый для поддержания состояния выбора строк.- Возвращает:
- объект, предоставляющий состояние выбора строк,
nullесли выбор строк не разрешен - См. также:
sorterChanged
public void sorterChanged(RowSorterEvent e)
RowSorterListener уведомление о том, что RowSorter изменился каким-либо образом.- Определено в:
-
sorterChangedв интерфейсеRowSorterListener - Параметры:
-
e-RowSorterEvent, описывающий изменение - Исключения:
-
NullPointerException- еслиeявляетсяnull - С:
- 1.6
tableChanged
public void tableChanged(TableModelEvent e)
TableModel этой таблицы генерирует TableModelEvent. TableModelEvent должен быть построен в системе координат модели; соответствующее отображение в систему координат представления выполняется этим JTable при получении события. Код приложения не будет использовать эти методы явно, они используются внутри JTable.
Обратите внимание, что начиная с версии 1.3, этот метод очищает выделение, если оно есть.
- Определено в:
-
tableChangedв интерфейсеTableModelListener - Параметры:
-
e-TableModelEventдля уведомления слушателя о том, что модель таблицы изменилась
columnAdded
public void columnAdded(TableColumnModelEvent e)
Код приложения не будет использовать эти методы явно, они используются внутри JTable.
- Определено в:
-
columnAddedв интерфейсеTableColumnModelListener - Параметры:
-
e-TableColumnModelEvent - См. также:
columnRemoved
public void columnRemoved(TableColumnModelEvent e)
Код приложения не будет использовать эти методы явно, они используются внутри JTable.
- Определено в:
-
columnRemovedв интерфейсеTableColumnModelListener - Параметры:
-
e-TableColumnModelEvent - См. также:
columnMoved
public void columnMoved(TableColumnModelEvent e)
Код приложения не будет использовать эти методы явно, они используются внутри JTable.
- Определено в:
-
columnMovedв интерфейсеTableColumnModelListener - Параметры:
-
e- полученное событие - См. также:
columnMarginChanged
public void columnMarginChanged(ChangeEvent e)
Прикладной код не будет использовать эти методы явно, они используются внутри JTable.
- Specified by:
-
columnMarginChangedв интерфейсеTableColumnModelListener - Parameters:
-
e- полученное событие - See Also:
columnSelectionChanged
public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel изменяется. Прикладной код не будет использовать эти методы явно, они используются внутри JTable.
- Specified by:
-
columnSelectionChangedв интерфейсеTableColumnModelListener - Parameters:
-
e- полученное событие - See Also:
valueChanged
public void valueChanged(ListSelectionEvent e)
Прикладной код не будет использовать эти методы явно, они используются внутри JTable.
- Specified by:
-
valueChangedв интерфейсеListSelectionListener - Parameters:
-
e- полученное событие - See Also:
editingStopped
public void editingStopped(ChangeEvent e)
Прикладной код не будет использовать эти методы явно, они используются внутри JTable.
- Specified by:
-
editingStoppedв интерфейсеCellEditorListener - Parameters:
-
e- полученное событие - See Also:
editingCanceled
public void editingCanceled(ChangeEvent e)
Прикладной код не будет использовать эти методы явно, они используются внутри JTable.
- Specified by:
-
editingCanceledв интерфейсеCellEditorListener - Parameters:
-
e- полученное событие - See Also:
setPreferredScrollableViewportSize
@BeanProperty(bound=false, description="The preferred size of the viewport.") public void setPreferredScrollableViewportSize(Dimension size)
- Parameters:
-
size- объектDimension, определяющийpreferredSizeобласти просмотра, в которой отображается эта таблица - See Also:
getPreferredScrollableViewportSize
public Dimension getPreferredScrollableViewportSize()
- Specified by:
-
getPreferredScrollableViewportSizeв интерфейсеScrollable - Returns:
- объект
DimensionсpreferredSizeобласти просмотра, которая отображает эту таблицу - See Also:
getScrollableUnitIncrement
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
Этот метод вызывается каждый раз, когда пользователь запрашивает прокрутку на единицу.
- Specified by:
-
getScrollableUnitIncrementв интерфейсеScrollable - Parameters:
-
visibleRect- область просмотра, видимая в области просмотра -
orientation- либоSwingConstants.VERTICALилиSwingConstants.HORIZONTAL -
direction- меньше нуля для прокрутки вверх/влево, больше нуля для вниз/вправо - Returns:
- приращение "единицы" для прокрутки в указанном направлении
- See Also:
getScrollableBlockIncrement
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
visibleRect.height или visibleRect.width, в зависимости от ориентации этой таблицы. Обратите внимание, что начиная со Swing 1.1.1 (Java 2 v 1.2.2) возвращаемое значение гарантирует, что область просмотра будет четко выровнена по границе строки.- Specified by:
-
getScrollableBlockIncrementв интерфейсеScrollable - Parameters:
-
visibleRect- Область просмотра, видимая в области просмотра -
orientation- Либо SwingConstants.VERTICAL, либо SwingConstants.HORIZONTAL. -
direction- Меньше нуля для прокрутки вверх/влево, больше нуля для прокрутки вниз/вправо. - Returns:
-
visibleRect.heightилиvisibleRect.widthв зависимости от ориентации - See Also:
getScrollableTracksViewportWidth
@BeanProperty(bound=false) public boolean getScrollableTracksViewportWidth()
autoResizeMode установлено в AUTO_RESIZE_OFF, что указывает на то, что ширина области просмотра не определяет ширину таблицы. В противном случае возвращает true.- Specified by:
-
getScrollableTracksViewportWidthв интерфейсеScrollable - Returns:
- false, если
autoResizeModeустановлено вAUTO_RESIZE_OFF, в противном случае возвращает true - See Also:
getScrollableTracksViewportHeight
@BeanProperty(bound=false) public boolean getScrollableTracksViewportHeight()
false, чтобы указать, что высота области просмотра не определяет высоту таблицы, если только getFillsViewportHeight не равно true, и предпочтительная высота таблицы меньше высоты области просмотра.- Specified by:
-
getScrollableTracksViewportHeightв интерфейсеScrollable - Returns:
-
false, если толькоgetFillsViewportHeightне равноtrue, и таблица должна быть растянута, чтобы заполнить область просмотра - See Also:
setFillsViewportHeight
@BeanProperty(description="Whether or not this table is always made large enough to fill the height of an enclosing viewport") public void setFillsViewportHeight(boolean fillsViewportHeight)
false.
- Parameters:
-
fillsViewportHeight- всегда ли эта таблица должна быть достаточно большой, чтобы заполнить высоту содержащей её области просмотра - Since:
- 1.6
- See Also:
getFillsViewportHeight
public boolean getFillsViewportHeight()
- Returns:
- всегда ли эта таблица делает себя достаточно большой, чтобы заполнить высоту содержащей её области просмотра
- Since:
- 1.6
- See Also:
createDefaultRenderers
protected void createDefaultRenderers()
- See Also:
createDefaultEditors
protected void createDefaultEditors()
- See Also:
initializeLocalVars
protected void initializeLocalVars()
createDefaultDataModel
protected TableModel createDefaultDataModel()
DefaultTableModel. Подкласс может переопределить этот метод, чтобы вернуть другой объект модели таблицы.- Returns:
- объект модели таблицы по умолчанию
- See Also:
createDefaultColumnModel
protected TableColumnModel createDefaultColumnModel()
DefaultTableColumnModel. Подкласс может переопределить этот метод, чтобы вернуть другой объект модели столбцов.- Returns:
- объект модели столбцов по умолчанию
- See Also:
createDefaultSelectionModel
protected ListSelectionModel createDefaultSelectionModel()
DefaultListSelectionModel. Подкласс может переопределить этот метод, чтобы вернуть другой объект модели выбора.- Returns:
- объект модели выбора по умолчанию
- See Also:
createDefaultTableHeader
protected JTableHeader createDefaultTableHeader()
JTableHeader. Подкласс может переопределить этот метод, чтобы вернуть другой объект заголовка таблицы.- Returns:
- объект заголовка таблицы по умолчанию
- See Also:
resizeAndRepaint
protected void resizeAndRepaint()
revalidate за которым следует repaint.getCellEditor
public TableCellEditor getCellEditor()
null если таблица в данный момент не редактируется.- Returns:
- объект
TableCellEditor, осуществляющий редактирование, илиnullесли таблица в данный момент не редактируется. - See Also:
setCellEditor
@BeanProperty(description="The table\'s active cell editor.") public void setCellEditor(TableCellEditor anEditor)
- Parameters:
-
anEditor- активный редактор ячейки - See Also:
setEditingColumn
public void setEditingColumn(int aColumn)
editingColumn. - Parameters:
-
aColumn- столбец редактируемой ячейки - See Also:
setEditingRow
public void setEditingRow(int aRow)
editingRow. - Parameters:
-
aRow- строка редактируемой ячейки - See Also:
getCellRenderer
public TableCellRenderer getCellRenderer(int row, int column)
TableColumn для этого столбца есть рендерер, отличный от null, возвращает его. В противном случае находит класс данных в этом столбце (используя getColumnClass) и возвращает рендерер по умолчанию для этого типа данных. Примечание: В пакете таблиц внутренние реализации всегда используют этот метод для предоставления рендереров, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Parameters:
-
row- строка рендерируемой ячейки, где 0 - первая строка -
column- столбец рендерируемой ячейки, где 0 - первый столбец - Returns:
- назначенный рендерер; если
nullвозвращает рендерер по умолчанию для этого типа объекта - See Also:
prepareRenderer
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
row, column. Возвращает компонент (возможно, Component или JComponent ) под позицией события. Во время печати этот метод настраивает рендерер без указания выбора или фокуса, чтобы предотвратить их отображение в печатном выводе. Для выполнения других настроек в зависимости от того, печатается ли таблица или нет, вы можете проверить значение JComponent.isPaintingForPrint(), либо здесь, либо внутри пользовательских рендереров.
Примечание: В пакете таблиц внутренние реализации всегда используют этот метод для подготовки рендереров, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Parameters:
-
renderer- рендерер для подготовки -
row- строка рендерируемой ячейки, где 0 - первая строка -
column- столбец рендерируемой ячейки, где 0 - первый столбец - Returns:
- компонент
Componentпод позицией события
getCellEditor
public TableCellEditor getCellEditor(int row, int column)
row и column. Если у TableColumn для этого столбца есть редактор, отличный от null, возвращает его. В противном случае находит класс данных в этом столбце (используя getColumnClass) и возвращает редактор по умолчанию для этого типа данных. Примечание: В пакете таблиц внутренние реализации всегда используют этот метод для предоставления редакторов, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Parameters:
-
row- строка редактируемой ячейки, где 0 - первая строка -
column- столбец редактируемой ячейки, где 0 - первый столбец - Returns:
- редактор для этой ячейки; если
nullвозвращает редактор по умолчанию для этой ячейки - See Also:
prepareEditor
public Component prepareEditor(TableCellEditor editor, int row, int column)
row, column. Примечание: В пакете таблиц внутренние реализации всегда используют этот метод для подготовки редакторов, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Parameters:
-
editor- редактор, подлежащий настройке -
row- строка редактируемой ячейки, где 0 - первая строка -
column- столбец редактируемой ячейки, где 0 - первый столбец - Returns:
- редактируемый
Component
removeEditor
public void removeEditor()
paramString
protected String paramString()
null.- Overrides:
-
paramStringв классеJComponent - Returns:
- строковое представление этой таблицы
public boolean print() throws PrinterException
JTable в режиме PrintMode.FIT_WIDTH, без заголовка или подвала. В течение печати будет отображаться модальное диалоговое окно прогресса с опцией отмены. Примечание: В режиме без графического интерфейса диалоговые окна не отображаются, и печать происходит на стандартном принтере.
- Returns:
- true, если печать не отменена пользователем
- Throws:
-
SecurityException- если данному потоку запрещено инициировать запрос на печать -
PrinterException- если ошибка в системе печати привела к прерыванию задания - Since:
- 1.5
- See Also:
public boolean print(JTable.PrintMode printMode) throws PrinterException
JTable в заданном режиме печати без заголовка или подвала. Модальное диалоговое окно с опцией отмены будет отображаться на время печати. Примечание: в режиме без графической оболочки диалоги не отображаются, и печать происходит на стандартном принтере.
- Параметры:
-
printMode- режим печати, который должен использовать печатаемый объект - Возвращает:
- true, если печать не отменена пользователем
- Исключение:
-
SecurityException- если этому потоку не разрешено инициировать запрос на задание печати -
PrinterException- если в системе печати произошла ошибка, которая привела к прерыванию задания - С:
- 1.5
- См. также:
public boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat) throws PrinterException
JTable в заданном режиме печати с указанным текстом заголовка и подвала. Модальное диалоговое окно с опцией отмены будет отображаться на время печати. Примечание: в режиме без графической оболочки диалоги не отображаются, и печать происходит на стандартном принтере.
- Параметры:
-
printMode- режим печати, который должен использовать печатаемый объект -
headerFormat-MessageFormat, определяющий текст, который будет использоваться для печати заголовка, или null для отсутствия заголовка -
footerFormat-MessageFormat, определяющий текст, который будет использоваться для печати подвала, или null для отсутствия подвала - Возвращает:
- true, если печать не отменена пользователем
- Исключение:
-
SecurityException- если этому потоку не разрешено инициировать запрос на задание печати -
PrinterException- если в системе печати произошла ошибка, которая привела к прерыванию задания - С:
- 1.5
- См. также:
public boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintRequestAttributeSet attr, boolean interactive) throws PrinterException, HeadlessException
print, со стандартным принтером, заданным как служба печати.- Параметры:
-
printMode- режим печати, который должен использовать печатаемый объект -
headerFormat-MessageFormat, определяющий текст, который будет использоваться для печати заголовка, илиnullдля отсутствия заголовка -
footerFormat-MessageFormat, определяющий текст, который будет использоваться для печати подвала, илиnullдля отсутствия подвала -
showPrintDialog- отображать или нет диалог печати -
attr-PrintRequestAttributeSet, определяющий любые атрибуты печати, илиnullдля отсутствия атрибутов -
interactive- печатать в интерактивном режиме или нет - Возвращает:
- true, если печать не отменена пользователем
- Исключение:
-
HeadlessException- если методу требуется показать диалог печати или выполнить действия в интерактивном режиме, аGraphicsEnvironment.isHeadlessвозвращаетtrue -
SecurityException- если этому потоку не разрешено инициировать запрос на задание печати -
PrinterException- если в системе печати произошла ошибка, которая привела к прерыванию задания - С:
- 1.5
- См. также:
public boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintRequestAttributeSet attr, boolean interactive, PrintService service) throws PrinterException, HeadlessException
JTable. Выполняет действия, которые большинство разработчиков выполняют для печати JTable. Короче говоря, она подготавливает таблицу, вызывает getPrintable для получения соответствующего Printable, а затем отправляет его на принтер. Параметр boolean позволяет указать, отображать ли пользователю диалог печати. Если диалог отображается, пользователь может использовать его для изменения принтера назначения или атрибутов печати, а также для отмены печати. Еще два параметра позволяют указать PrintService и атрибуты печати. Эти параметры могут быть использованы для предоставления начальных значений для диалога печати или для указания значений, когда диалог не отображается.
Второй параметр boolean позволяет указать, выполнять ли печать в интерактивном режиме. Если true, для всей длительности печати будет отображаться модальное диалоговое окно с опцией отмены. Это диалоговое окно также блокирует любые действия пользователя, которые могут повлиять на таблицу. Однако оно не может предотвратить изменение таблицы кодом (например, другим потоком, который публикует обновления с помощью SwingUtilities.invokeLater). Поэтому разработчик несет ответственность за обеспечение того, чтобы никакой другой код не изменял таблицу каким-либо образом во время печати (недействительные изменения включают изменения размера, рендереров или базовых данных). Поведение печати не определено при изменении таблицы во время печати.
Если для этого параметра указано false, диалоговое окно не будет отображаться, и печать начнется сразу же в потоке обработки событий. Это блокирует обработку других событий, включая перерисовку, до завершения печати. Хотя это эффективно предотвращает изменение таблицы, это не обеспечивает хорошего пользовательского опыта. По этой причине указание false рекомендуется только при печати из приложения без видимого графического интерфейса.
Примечание: попытка отобразить диалог печати или выполнить действия в интерактивном режиме в режиме без графической оболочки приведет к HeadlessException.
Прежде чем получить печатаемый объект, этот метод корректно прервет редактирование, если необходимо, чтобы предотвратить отображение редактора в результатах печати. Кроме того, JTable подготовит свои рендеры во время печати таким образом, что выделение и фокус не будут отображаться. Что касается дальнейшей настройки внешнего вида таблицы в распечатке, разработчики могут предоставить пользовательские рендеры или код рисования, который условлен на значении JComponent.isPaintingForPrint().
См. getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat) для получения дополнительной информации о том, как печатается таблица.
- Параметры:
-
printMode- режим печати, который должен использовать печатаемый объект -
headerFormat-MessageFormat, определяющий текст, который будет использоваться для печати заголовка, илиnullдля отсутствия заголовка -
footerFormat-MessageFormat, определяющий текст, который будет использоваться для печати подвала, илиnullдля отсутствия подвала -
showPrintDialog- отображать или нет диалог печати -
attr-PrintRequestAttributeSet, определяющий любые атрибуты печати, илиnullдля отсутствия атрибутов -
interactive- печатать в интерактивном режиме или нет -
service- принтер назначенияPrintService, илиnullдля использования стандартного принтера - Возвращает:
- true, если печать не отменена пользователем
- Исключение:
-
HeadlessException- если методу требуется показать диалог печати или выполнить действия в интерактивном режиме, аGraphicsEnvironment.isHeadlessвозвращаетtrue -
SecurityException- если существует менеджер безопасности и его методSecurityManager.checkPrintJobAccess()запрещает этому потоку создавать запрос на задание печати -
PrinterException- если в системе печати произошла ошибка, которая привела к прерыванию задания - С:
- 1.6
- См. также:
getPrintable
public Printable getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
Этот метод предназначен для тех, кто хочет настроить реализацию печати по умолчанию, используемую методами JTable. Разработчики, которые просто хотят напечатать таблицу, должны использовать один из этих методов напрямую.
Объект для печати может быть запрошен в одном из двух режимов печати. В обоих режимах строки таблицы естественным образом распределяются по нескольким страницам, размещая по возможности максимальное количество строк на странице. PrintMode.NORMAL указывает, что таблица должна быть напечатана в ее текущем размере. В этом режиме может потребоваться распределить столбцы по страницам аналогичным образом, как и строки. В случае необходимости столбцы распределяются в порядке, соответствующем ComponentOrientation таблицы. PrintMode.FIT_WIDTH указывает, что вывод должен быть уменьшен, если необходимо, чтобы вся ширина (и, следовательно, все столбцы) таблицы помещались на каждой странице. Ширина и высота масштабируются равномерно, сохраняя соотношение сторон вывода.
Printable отображает часть таблицы на каждой странице с соответствующим разделом из JTableHeader, если он есть.
Текст заголовка и подвала можно добавить в вывод, предоставив MessageFormat аргументы. Код печати запрашивает строки из форматов, предоставляя один элемент, который может быть включен в отформатированную строку: Integer , представляющий текущий номер страницы.
Рекомендуется ознакомиться с документацией по MessageFormat, так как некоторые символы, такие как одинарная кавычка, являются специальными и требуют экранирования.
Вот пример создания объекта для печати, который может быть использован для печати "Таблица Дюка: Страница - " и текущего номера страницы:
// notice the escaping of the single quote
// notice how the page number is included with "{0}"
MessageFormat format = new MessageFormat("Duke''s Table: Page - {0}");
Printable ограничивает то, что он отображает, на печатаемой области каждой страницы, которую он печатает. В определенных обстоятельствах он может обнаружить, что не может поместить все содержимое страницы в эту область. В таких случаях вывод может быть обрезан, но реализация делает все возможное, чтобы поступить разумно. Вот несколько ситуаций, где это известно, и как эта конкретная реализация может с ними справиться:
- В любом режиме, когда текст заголовка или подвала слишком широк, чтобы полностью поместиться в печатаемую область - печатается как можно больше текста, начиная с начала, как определяется
ComponentOrientationтаблицы. - В любом режиме, когда строка слишком высока, чтобы поместиться в печатаемую область - печатается верхняя часть строки, а нижняя граница таблицы не рисуется.
- В
PrintMode.NORMALрежиме, когда столбец слишком широк, чтобы поместиться в печатаемую область - печатается центральная часть столбца, а левая и правая границы таблицы опускаются.
Совершенно допустимо, чтобы этот Printable был вложен в другой, чтобы создать сложные отчеты и документы. Вы даже можете запросить, чтобы различные страницы были отображены в различных областях для печати. Реализация должна быть готова обработать это (возможно, вычисляя расположение динамически). Однако предоставление разной высоты для каждой страницы, вероятно, не будет хорошо работать с PrintMode.NORMAL при необходимости распределять столбцы по страницам.
Что касается настройки внешнего вида таблицы в печатном результате, JTable само позаботится о скрытии выделения и фокуса во время печати. Для дополнительных настроек ваши обработчики или код рисования могут настроить вид на основе значения JComponent.isPaintingForPrint()
Также, перед вызовом этого метода, вы можете сначала изменить состояние таблицы, например, отменить редактирование ячейки или попросить пользователя соответствующим образом изменить размер таблицы. Однако вы не должны изменять состояние таблицы после получения этого Printable (недопустимые изменения включают изменения размера или исходных данных). Поведение возвращаемого Printable не определено после изменения таблицы.
- Parameters:
-
printMode- режим печати, который должен использовать объект для печати -
headerFormat- объект для форматирования текста, используемого для печати заголовка, или null для отсутствия заголовка -
footerFormat- объект для форматирования текста, используемого для печати подвала, или null для отсутствия подвала - Returns:
- объект для печати этой JTable
- Since:
- 1.5
- See Also:
getAccessibleContext
@BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
- Specified by:
-
getAccessibleContextв интерфейсеAccessible - Overrides:
-
getAccessibleContextв классеComponent - Returns:
- AccessibleJTable, который служит AccessibleContext этой JTable
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/JTable.html
new JScrollPane(aTable).