Класс 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 для пошаговой документации и примеров использования 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 является использование 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.
- С:
- 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 для построения набора столбцов по умолчанию, если это значение истинно. |
protected int |
autoResizeMode |
Определяет, автоматически ли таблица изменяет ширину столбцов таблицы, чтобы занять всю ширину таблицы, и как она выполняет изменение размера. |
protected TableCellEditor |
cellEditor |
Активный объект редактора ячейки, который перезаписывает экранное пространство, занимаемое текущей ячейкой, и позволяет пользователю изменить её содержимое. |
protected boolean |
cellSelectionEnabled |
Устарело начиная с Java 2 platform v1.3. |
protected TableColumnModel |
columnModel |
TableColumnModel таблицы. |
protected TableModel |
dataModel |
TableModel таблицы. |
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 истинно. |
protected boolean |
showVerticalLines |
Таблица рисует вертикальные линии между ячейками, если showVerticalLines истинно. |
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, инициализированную с помощью модели данных по умолчанию, модели столбцов по умолчанию и модели выделения по умолчанию. |
JTable |
Создаёт JTable с numRows и numColumns пустых ячеек, используя DefaultTableModel. |
JTable |
Создаёт JTable для отображения значений в двумерном массиве, rowData, с именами столбцов, columnNames. |
JTable |
Создаёт JTable для отображения значений в Vector Vectors, rowData, с именами столбцов, columnNames. |
JTable |
Создаёт JTable, инициализированную с dm в качестве модели данных, модели столбцов по умолчанию и модели выделения по умолчанию. |
JTable |
Создаёт JTable, инициализированную с dm в качестве модели данных, cm в качестве модели столбцов и моделью выделения по умолчанию. |
JTable |
Создаёт JTable, инициализированную с dm в качестве модели данных, cm в качестве модели столбцов и sm в качестве модели выделения. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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, среди прочего, установив tableHeader таблицы в качестве 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() |
Возвращает, является ли эта таблица всегда достаточно большой, чтобы заполнить высоту окружающего представления. |
Color |
getGridColor() |
Возвращает цвет, используемый для рисования линий сетки. |
Dimension |
getIntercellSpacing() |
Возвращает горизонтальное и вертикальное расстояние между ячейками. |
TableModel |
getModel() |
Возвращает TableModel, который предоставляет данные, отображаемые этой JTable. |
Dimension |
getPreferredScrollableViewportSize() |
Возвращает предпочтительный размер представления для этой таблицы. |
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, чтобы указать, что высота представления не определяет высоту таблицы, если getFillsViewportHeight равно true, а предпочтительная высота таблицы меньше высоты представления. |
boolean |
getScrollableTracksViewportWidth() |
Возвращает false, если autoResizeMode установлено в AUTO_RESIZE_OFF, что указывает, что ширина представления не определяет ширину таблицы. |
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's 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 для ячейки. |
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 |
Вызывается при изменении выбора строки — перерисовывает, чтобы показать новый выбор. |
Methods declared in class 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
Methods declared in class 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
Methods declared in class 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
TableModel таблицы.columnModel
protected TableColumnModel columnModel
TableColumnModel таблицы.selectionModel
protected ListSelectionModel selectionModel
ListSelectionModel таблицы, используемая для отслеживания выделенных строк.tableHeader
protected JTableHeader tableHeader
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
TableModel для построения набора столбцов по умолчанию.preferredViewportSize
protected Dimension preferredViewportSize
Scrollable для определения начальной видимой области.rowSelectionAllowed
protected boolean rowSelectionAllowed
cellSelectionEnabled
protected boolean cellSelectionEnabled
rowSelectionAllowed и свойство columnSelectionAllowed интерфейса columnModel. Или используйте метод getCellSelectionEnabled.editorComp
protected transient Component editorComp
Component, обрабатывающий редактирование.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)
JTable, инициализированный с dm в качестве модели данных, cm в качестве модели столбцов и sm в качестве модели выделения. Если любой из параметров равен null, этот метод инициализирует таблицу с соответствующей моделью по умолчанию. Флаг autoCreateColumnsFromModel устанавливается в значение false, если cm не равен null, в противном случае он устанавливается в true, а модель столбцов заполняется подходящими TableColumns для столбцов в dm.- Parameters:
-
dm- модель данных для таблицы -
cm- модель столбцов для таблицы -
sm- модель выделения строк для таблицы - See Also:
JTable
public JTable(int numRows, int numColumns)
JTable с numRows и numColumns пустых ячеек, используя DefaultTableModel. Столбцы будут иметь имена в формате "A", "B", "C" и т.д.- Parameters:
-
numRows- количество строк в таблице -
numColumns- количество столбцов в таблице - See Also:
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 в свою очередь вызывает этот метод, который является защищённым, чтобы это стандартное поведение установки можно было переопределить в подклассе.- See Also:
removeNotify
public void removeNotify()
unconfigureEnclosingScrollPane.- Overrides:
-
removeNotifyв классеJComponent - See Also:
unconfigureEnclosingScrollPane
protected void unconfigureEnclosingScrollPane()
configureEnclosingScrollPane, заменив columnHeaderView содержащей области прокрутки на null. Метод JTable в свою очередь вызывает этот метод, который является защищённым, чтобы это стандартное поведение отмены установки можно было переопределить в подклассе.- 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:
установитьРасстояниеМеждуЯчейками
@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.- Параметры:
-
intercellSpacing-Dimension, определяющий новую ширину и высоту между ячейками - См. также:
получитьРасстояниеМеждуЯчейками
public Dimension getIntercellSpacing()
- Возвращает:
- горизонтальное и вертикальное расстояние между ячейками
- См. также:
установитьЦветСетки
@BeanProperty(description="The grid color.") public void setGridColor(Color gridColor)
gridColor и перерисовывает таблицу. Цвет по умолчанию зависит от внешнего вида.- Параметры:
-
gridColor- новый цвет линий сетки - Исключения:
-
IllegalArgumentException- еслиgridColorимеет значениеnull - См. также:
получитьЦветСетки
public Color getGridColor()
- Возвращает:
- цвет, используемый для рисования линий сетки
- См. также:
установитьОтображениеСетки
@BeanProperty(description="The color used to draw the grid lines.") public void setShowGrid(boolean showGrid)
showGrid равно true, линии отображаются; в противном случае — нет. Нет метода getShowGrid, так как это состояние хранится в двух переменных — showHorizontalLines и showVerticalLines — которые можно запросить независимо.- Параметры:
-
showGrid— true, если таблица должна отображать линии сетки - См. также:
установитьОтображениеГоризонтальныхЛиний
@BeanProperty(description="Whether horizontal lines should be drawn in between the cells.") public void setShowHorizontalLines(boolean showHorizontalLines)
showHorizontalLines равно true, линии отображаются; в противном случае — нет.- Параметры:
-
showHorizontalLines— true, если таблица должна отображать горизонтальные линии - См. также:
установитьОтображениеВертикальныхЛиний
@BeanProperty(description="Whether vertical lines should be drawn in between the cells.") public void setShowVerticalLines(boolean showVerticalLines)
showVerticalLines равно true, линии отображаются; в противном случае — нет.- Параметры:
-
showVerticalLines— true, если таблица должна отображать вертикальные линии - См. также:
получитьОтображениеГоризонтальныхЛиний
public boolean getShowHorizontalLines()
- Возвращает:
- true, если таблица отображает горизонтальные линии между ячейками, и false — если нет
- См. также:
получитьОтображениеВертикальныхЛиний
public boolean getShowVerticalLines()
- Возвращает:
- true, если таблица отображает вертикальные линии между ячейками, и false — если нет
- См. также:
установитьРежимАвтоматическогоИзмененияРазмеры
@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().- Параметры:
-
mode- Одно из 5 допустимых значений: AUTO_RESIZE_OFF, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_SUBSEQUENT_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_ALL_COLUMNS - См. также:
получитьРежимАвтоматическогоИзмененияРазмеры
public int getAutoResizeMode()
- Возвращает:
- режим autoResizeMode таблицы
- См. также:
установитьАвтосозданиеСтолбцовИзМодели
@BeanProperty(description="Automatically populates the columnModel when a new TableModel is submitted.") public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
autoCreateColumnsFromModel этой таблицы. Этот метод вызывает createDefaultColumnsFromModel, если значение autoCreateColumnsFromModel изменяется с false на true.- Параметры:
-
autoCreateColumnsFromModel— true, если таблица должна автоматически создавать столбцы - См. также:
получитьАвтосозданиеСтолбцовИзМодели
public boolean getAutoCreateColumnsFromModel()
tableChanged указывает на изменение всей таблицы, то столбцы будут перестроены. Значение по умолчанию — true.- Возвращает:
- значение autoCreateColumnsFromModel таблицы
- См. также:
создатьСтолбцыПоУмолчаниюИзМодели
public void createDefaultColumnsFromModel()
getColumnCount, определенный в интерфейсе TableModel. Очищает все существующие столбцы перед созданием новых столбцов на основе данных из модели.
- См. также:
установитьОпределенныйРендерер
public void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)
TableColumn. Если рендерер является null, удаляет рендерер по умолчанию для этого класса столбца.- Параметры:
-
columnClass- устанавливает рендерер ячеек по умолчанию для этого класса столбца -
renderer- рендерер ячеек по умолчанию для этого класса столбца - См. также:
получитьОпределенныйРендерер
public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
TableColumn. При отрисовке ячеек рендерер извлекается из набора элементов в зависимости от класса ячеек в столбце. Если такого элемента для этого columnClass нет, метод возвращает элемент для самого конкретного суперкласса. JTable устанавливает элементы для Object, Number и Boolean, все из которых можно изменить или заменить.- Параметры:
-
columnClass- возвращает рендерер ячеек по умолчанию для этого класса столбца - Возвращает:
- рендерер для этого класса столбца
- См. также:
setDefaultEditor
public void setDefaultEditor(Class<?> columnClass, TableCellEditor editor)
TableColumn. Если редактирование в таблице или в конкретном столбце не требуется, используйте метод isCellEditable в интерфейсе TableModel, чтобы убедиться, что этот JTable не запустит редактор в этих столбцах. Если редактор 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 таблицы.
- Parameters:
-
b- нужно ли включить автоматическую обработку перетаскивания - Throws:
-
HeadlessException- еслиbравноtrueиGraphicsEnvironment.isHeadless()возвращаетtrue - Since:
- 1.4
- See Also:
getDragEnabled
public boolean getDragEnabled()
- Returns:
- значение свойства
dragEnabled - Since:
- 1.4
- See Also:
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, принимающий опускание.
- Parameters:
-
dropMode- режим опускания, который нужно использовать - Throws:
-
IllegalArgumentException- если режим опускания не поддерживается илиnull - Since:
- 1.6
- See Also:
getDropMode
public final DropMode getDropMode()
- Returns:
- режим опускания для этого компонента
- Since:
- 1.6
- See Also:
getDropLocation
@BeanProperty(bound=false) public final JTable.DropLocation getDropLocation()
null, если расположение в настоящее время не должно отображаться. Этот метод не предназначен для запроса расположения опускания из TransferHandler, поскольку расположение опускания устанавливается только после того, как TransferHandler's canImport вернулись и позволили отобразить расположение.
При изменении этого свойства компонент генерирует событие изменения свойства с именем "dropLocation".
- Returns:
- место опускания
- Since:
- 1.6
- See Also:
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.
- Parameters:
-
autoCreateRowSorter- нужно ли автоматически создаватьRowSorter - Since:
- 1.6
- See Also:
getAutoCreateRowSorter
public boolean getAutoCreateRowSorter()
true, если при каждом изменении модели должен создаваться и устанавливаться новый RowSorter в качестве сортировщика таблицы; в противном случае возвращает false.- Returns:
- true, если при изменении модели должен создаваться
RowSorter - Since:
- 1.6
setUpdateSelectionOnSort
@BeanProperty(expert=true, description="Whether or not to update the selection on sorting") public void setUpdateSelectionOnSort(boolean update)
- Parameters:
-
update- нужно ли обновлять выделение при сортировке - Since:
- 1.6
getUpdateSelectionOnSort
public boolean getUpdateSelectionOnSort()
- Returns:
- обновлять ли выделение при сортировке
- Since:
- 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. Применить состояние выделения якоря ко всем ячейкам между ним и указанной ячейкой.
- Параметры:
-
rowIndex- влияет на выделение вrow -
columnIndex- влияет на выделение вcolumn -
toggle- см. описание выше -
extend- если true, расширить текущее выделение - С:
- 1.3
getSelectionForeground
public Color getSelectionForeground()
- Возвращает:
- объект
Colorдля свойства foreground - См. также:
setSelectionForeground
@BeanProperty(description="A default foreground color for selected cells.") public void setSelectionForeground(Color selectionForeground)
Значение по умолчанию этого свойства определяется реализацией внешнего вида.
Это свойство, связанное с JavaBeans.
- Параметры:
-
selectionForeground- используемыйColorдля переднего плана выделенных элементов списка - См. также:
getSelectionBackground
public Color getSelectionBackground()
- Возвращает:
- используемый
Colorдля фона выделенных элементов списка - См. также:
setSelectionBackground
@BeanProperty(description="A default background color for selected cells.") public void setSelectionBackground(Color selectionBackground)
Значение по умолчанию этого свойства определяется реализацией внешнего вида.
Это свойство, связанное с JavaBeans.
- Параметры:
-
selectionBackground- используемыйColorдля фона выделенных ячеек - См. также:
getColumn
public TableColumn getColumn(Object identifier)
TableColumn для столбца в таблице, идентификатор которого равен identifier, при сравнении с использованием equals.- Параметры:
-
identifier- объект идентификатора - Возвращает:
- объект
TableColumn, соответствующий идентификатору - Исключение:
-
IllegalArgumentException- еслиidentifierявляетсяnullили столбец с этим идентификатором отсутствует
convertColumnIndexToModel
public int convertColumnIndexToModel(int viewColumnIndex)
viewColumnIndex в индекс столбца в модели таблицы. Возвращает индекс соответствующего столбца в модели. Если viewColumnIndex меньше нуля, возвращает viewColumnIndex.- Параметры:
-
viewColumnIndex- индекс столбца в представлении - Возвращает:
- индекс соответствующего столбца в модели
- См. также:
convertColumnIndexToView
public int convertColumnIndexToView(int modelColumnIndex)
modelColumnIndex в индекс столбца в представлении. Возвращает индекс соответствующего столбца в представлении; возвращает -1, если этот столбец не отображается. Если modelColumnIndex меньше нуля, возвращает modelColumnIndex.- Параметры:
-
modelColumnIndex- индекс столбца в модели - Возвращает:
- индекс соответствующего столбца в представлении
- См. также:
convertRowIndexToView
public int convertRowIndexToView(int modelRowIndex)
TableModel в представление. Если содержимое модели не отсортировано, индексы модели и представления совпадают.- Параметры:
-
modelRowIndex- индекс строки в терминах модели - Возвращает:
- индекс соответствующей строки в представлении, или -1, если строка не отображается
- Исключение:
-
IndexOutOfBoundsException- если сортировка включена и передан индекс, выходящий за пределы количества строкTableModel - С:
- 1.6
- См. также:
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. Это важное различие, поскольку при переупорядочивании столбцов пользователем столбец с заданным индексом в представлении изменится. При этом действия пользователя не влияют на порядок столбцов в модели.
- Parameters:
-
row- строка, значение которой требуется получить -
column- столбец, значение которого требуется получить - Returns:
- значение объекта в указанной ячейке
setValueAt
public void setValueAt(Object aValue, int row, int column)
row и столбцу column. Примечание: Столбец указан в порядке отображения в представлении таблицы, а не в порядке столбцов TableModel. Это важное различие, поскольку при переупорядочивании столбцов пользователем столбец с заданным индексом в представлении изменится. При этом действия пользователя не влияют на порядок столбцов в модели. aValue - новое значение.
- Parameters:
-
aValue- новое значение -
row- строка ячейки, которая будет изменена -
column- столбец ячейки, которая будет изменена - See Also:
isCellEditable
public boolean isCellEditable(int row, int column)
row и столбцу column редактируема. В противном случае вызов setValueAt для ячейки не повлияет. Примечание: Столбец указан в порядке отображения в представлении таблицы, а не в порядке столбцов TableModel. Это важное различие, поскольку при переупорядочивании столбцов пользователем столбец с заданным индексом в представлении изменится. При этом действия пользователя не влияют на порядок столбцов в модели.
- Parameters:
-
row- строка, значение которой требуется получить -
column- столбец, значение которого требуется получить - Returns:
- true, если ячейка редактируема
- See Also:
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 и используется во время отрисовки и редактирования для поиска соответствующих значений данных в модели. Номер столбца модели не изменяется при переупорядочивании столбцов в представлении.- Parameters:
-
aColumn- добавляемыйTableColumn - See Also:
removeColumn
public void removeColumn(TableColumn aColumn)
aColumn из массива столбцов этого JTable. Примечание: этот метод не удаляет столбец данных из модели; он только удаляет TableColumn, отвечавший за его отображение.- Parameters:
-
aColumn- удаляемыйTableColumn - See Also:
moveColumn
public void moveColumn(int column, int targetColumn)
column в позицию, которую в данный момент занимает столбец targetColumn в представлении. Прежний столбец в позиции targetColumn смещается влево или вправо, чтобы освободить место.- Parameters:
-
column- индекс перемещаемого столбца -
targetColumn- новый индекс столбца
columnAtPoint
public int columnAtPoint(Point point)
point находится, или -1, если результат не находится в диапазоне [0, getColumnCount()-1].- Parameters:
-
point- интересующее местоположение - Returns:
- индекс столбца, в котором
pointнаходится, или -1, если результат не находится в диапазоне [0,getColumnCount()-1] - See Also:
rowAtPoint
public int rowAtPoint(Point point)
point находится, или -1, если результат не находится в диапазоне [0, getRowCount()-1].- Parameters:
-
point- интересующее местоположение - Returns:
- индекс строки, в которой
pointнаходится, или -1, если результат не находится в диапазоне [0,getRowCount()-1] - See Also:
getCellRect
public Rectangle getCellRect(int row, int column, boolean includeSpacing)
row и column. Если includeSpacing имеет значение true, возвращаемое значение содержит полную высоту и ширину указанной строки и столбца. Если значение false, возвращаемый прямоугольник смещен на величину межклеточного интервала, чтобы вернуть истинные границы компонента отрисовки или редактирования, как он будет задан во время отрисовки. Если индекс столбца корректен, а индекс строки меньше нуля, метод возвращает прямоугольник с y и height значениями, установленными соответствующим образом, и x и width значениями, установленными в ноль. В общем случае, когда индексы строки или столбца указывают на ячейку за пределами соответствующего диапазона, метод возвращает прямоугольник, отображающий ближайший край ближайшей ячейки, которая находится в пределах диапазона таблицы. Когда оба индекса строки и столбца находятся вне диапазона, возвращаемый прямоугольник охватывает ближайшую точку ближайшей ячейки.
Во всех случаях, вычисления, использующие этот метод для вычисления результатов по одной оси, не завершаются ошибкой из-за аномалий в вычислениях по другой оси. Если ячейка недействительна, параметр includeSpacing игнорируется.
- Parameters:
-
row- индекс строки, где расположена нужная ячейка -
column- индекс столбца, где расположена нужная ячейка в отображении; он не обязательно совпадает с индексом столбца в модели данных таблицы; методconvertColumnIndexToView(int)может использоваться для преобразования индекса столбца модели данных в индекс столбца отображения -
includeSpacing- если false, возвращаются истинные границы ячейки — вычисленные путём вычитания межклеточного интервала из высоты и ширины моделей столбца и строки - Returns:
- прямоугольник, содержащий ячейку в расположении
row,column - See Also:
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]
где каждая индивидуальная дельта[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], алгоритм устанавливает все размеры на соответствующее ограничивающее значение (максимум или минимум).
sizeColumnsToFit
@Deprecated public void sizeColumnsToFit(boolean lastColumnOnly)
doLayout().- Parameters:
-
lastColumnOnly- определяет, следует ли изменять размер только последнего столбца - See Also:
sizeColumnsToFit
public void sizeColumnsToFit(int resizingColumn)
doLayout() вместо него.- Parameters:
-
resizingColumn- столбец, изменение размера которого потребовало этой корректировки, или -1, если такого столбца нет - See Also:
getToolTipText
public String getToolTipText(MouseEvent event)
JComponent getToolTipText, чтобы разрешить использование подсказок рендерера, если для него задан текст. Примечание: Чтобы JTable корректно отображал всплывающие подсказки своих рендереров, JTable должен быть зарегистрированным компонентом в ToolTipManager. Это делается автоматически в initializeLocalVars, но если в какой-то момент JTable будет сказано setToolTipText(null), он отрегистрирует компонент таблицы, и подсказки от рендереров больше не будут отображаться.
- Overrides:
-
getToolTipTextв классеJComponent - Parameters:
-
event-MouseEvent, инициировавший отображениеToolTip - Returns:
- строка, содержащая всплывающую подсказку
- See Also:
setSurrendersFocusOnKeystroke
public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
- Parameters:
-
surrendersFocusOnKeystroke- true, если редактор должен получить фокус, когда нажатие клавиш активирует редактор - Since:
- 1.4
- See Also:
getSurrendersFocusOnKeystroke
public boolean getSurrendersFocusOnKeystroke()
- Возвращает:
- true, если редактор должен получить фокус, когда нажатия клавиш вызывают активацию редактора
- Since:
- 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, если эти индексы находятся в допустимом диапазоне, и ячейка в этих индексах редактируема. Чтобы предотвратить редактирование определённой таблицы, столбца или значения ячейки, верните false из метода isCellEditable в интерфейсе TableModel.- Параметры:
-
row- строка для редактирования -
column- столбец для редактирования -
e- событие для передачи вshouldSelectCell; обратите внимание, что начиная с Java 2 платформы 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()
- Overrides:
-
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- объект TableUI L&F - См. также:
updateUI
public void updateUI()
UIManager о том, что L&F изменился. Заменяет текущий объект UI последней версией из UIManager.- Overrides:
-
updateUIв классеJComponent - См. также:
getUIClassID
@BeanProperty(bound=false) public String getUIClassID()
- Overrides:
-
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 изменился каким-либо образом.- Specified by:
-
sorterChangedв интерфейсеRowSorterListener - Параметры:
-
e-RowSorterEvent, описывающий изменение - Исключения:
-
NullPointerException- еслиeявляетсяnull - Since:
- 1.6
tableChanged
public void tableChanged(TableModelEvent e)
TableModel генерирует TableModelEvent. TableModelEvent должен быть построен в системе координат модели; соответствующее отображение в систему координат представления выполняется этой JTable при получении события. Код приложения не будет использовать эти методы напрямую, они используются внутренне JTable.
Обратите внимание, что начиная с версии 1.3, этот метод очищает выделение, если оно есть.
- Specified by:
-
tableChangedв интерфейсеTableModelListener - Parameters:
-
e- aTableModelEventдля уведомления слушателя о том, что модель таблицы изменилась
columnAdded
public void columnAdded(TableColumnModelEvent e)
Код приложения не будет использовать эти методы напрямую, они используются внутренне классом JTable.
- Specified by:
-
columnAddedв интерфейсеTableColumnModelListener - Parameters:
-
e- aTableColumnModelEvent - See Also:
columnRemoved
public void columnRemoved(TableColumnModelEvent e)
Код приложения не будет использовать эти методы напрямую, они используются внутренне классом JTable.
- Specified by:
-
columnRemovedв интерфейсеTableColumnModelListener - Parameters:
-
e- aTableColumnModelEvent - See Also:
columnMoved
public void columnMoved(TableColumnModelEvent e)
Код приложения не будет использовать эти методы напрямую, они используются внутренне классом JTable.
- Specified by:
-
columnMovedв интерфейсеTableColumnModelListener - Parameters:
-
e- полученное событие - See Also:
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, определяющийpreferredSizeJViewport, чьё представление — эта таблица - See Also:
getPreferredScrollableViewportSize
public Dimension getPreferredScrollableViewportSize()
- Specified by:
-
getPreferredScrollableViewportSizeв интерфейсеScrollable - Returns:
- объект
Dimension, содержащийpreferredSizeJViewport, отображающей эту таблицу - 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) и возвращает рендерер по умолчанию для этого типа данных. Примечание: В пакете table внутренние реализации всегда используют этот метод для предоставления рендереров, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- 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(), либо здесь, либо в пользовательских рендерерах.
Примечание: В пакете table внутренние реализации всегда используют этот метод для подготовки рендереров, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Parameters:
-
renderer-TableCellRendererдля подготовки -
row- строка ячейки для отрисовки, где 0 — первая строка -
column- столбец ячейки для отрисовки, где 0 — первый столбец - Returns:
Componentпод местоположением события
getCellEditor
public TableCellEditor getCellEditor(int row, int column)
row и column. Если для данного столбца определен не нулевой редактор, возвращается он. В противном случае, определяется класс данных в этом столбце (используя getColumnClass) и возвращается стандартный редактор для этого типа данных. Примечание: В пакете таблиц внутренние реализации всегда используют этот метод для предоставления редакторов, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Параметры:
-
row- строка редактируемой ячейки, где 0 - первая строка -
column- столбец редактируемой ячейки, где 0 - первый столбец - Возвращает:
- редактор для этой ячейки; если
nullвозвращает стандартный редактор для этого типа ячейки - См. также:
prepareEditor
public Component prepareEditor(TableCellEditor editor, int row, int column)
row, column. Примечание: В пакете таблиц внутренние реализации всегда используют этот метод для подготовки редакторов, чтобы это поведение по умолчанию можно было безопасно переопределить подклассом.
- Параметры:
-
editor- редактор, который нужно подготовить -
row- строка редактируемой ячейки, где 0 - первая строка -
column- столбец редактируемой ячейки, где 0 - первый столбец - Возвращает:
- редактируемую
Component
removeEditor
public void removeEditor()
paramString
protected String paramString()
null.- Переопределяет:
-
paramStringв классеJComponent - Возвращает:
- строковое представление этой таблицы
public boolean print() throws PrinterException
JTable в режиме PrintMode.FIT_WIDTH без заголовка и подвала. Во время печати будет отображаться модальный диалог прогресса с опцией прерывания. Примечание: в безголовом режиме диалоги не отображаются, и печать выполняется на стандартном принтере.
- Возвращает:
- true, если печать не отменена пользователем
- Исключения:
-
PrinterException- если в системе печати произошла ошибка, из-за которой работа была прервана - См. также:
public boolean print(JTable.PrintMode printMode) throws PrinterException
JTable в заданном режиме печати без заголовка и подвала. Во время печати будет отображаться модальный диалог прогресса с опцией прерывания. Примечание: в безголовом режиме диалоги не отображаются, и печать выполняется на стандартном принтере.
- Параметры:
-
printMode- режим печати, который должен использовать печатный объект - Возвращает:
- true, если печать не отменена пользователем
- Исключения:
-
PrinterException- если в системе печати произошла ошибка, из-за которой работа была прервана - См. также:
public boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat) throws PrinterException
JTable в заданном режиме печати со строками заголовка и подвала. Во время печати будет отображаться модальный диалог прогресса с опцией прерывания. Примечание: в безголовом режиме диалоги не отображаются, и печать выполняется на стандартном принтере.
- Параметры:
-
printMode- режим печати, который должен использовать печатный объект -
headerFormat-MessageFormat, определяющий текст для заголовка, или null для отсутствия -
footerFormat-MessageFormat, определяющий текст для подвала, или null для отсутствия - Возвращает:
- true, если печать не отменена пользователем
- Исключения:
-
PrinterException- если в системе печати произошла ошибка, из-за которой работа была прервана - См. также:
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- набор атрибутов печати, илиnullдля отсутствия -
interactive- печатать в интерактивном режиме - Возвращает:
- true, если печать не отменена пользователем
- Исключения:
-
HeadlessException- если методу нужно показать диалог печати или выполнить интерактивную печать, иGraphicsEnvironment.isHeadlessвернулtrue -
PrinterException- если в системе печати произошла ошибка, из-за которой работа была прервана - См. также:
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) для более подробного описания того, как печатается таблица.
- Parameters:
-
printMode- режим печати, который должен использовать объект для печати -
headerFormat-MessageFormat, определяющий текст для печати заголовка, илиnullдля отсутствия -
footerFormat-MessageFormat, определяющий текст для печати подвала, илиnullдля отсутствия -
showPrintDialog- отображать ли диалог печати -
attr-PrintRequestAttributeSet, определяющий атрибуты печати, илиnullдля отсутствия -
interactive- печатать ли в интерактивном режиме -
service- целевойPrintService, илиnullдля использования принтера по умолчанию - Returns:
- true, если печать не отменена пользователем
- Throws:
-
HeadlessException- если метод попрошен показать диалог печати или работать в интерактивном режиме, иGraphicsEnvironment.isHeadlessвозвращаетtrue -
PrinterException- если в системе печати произошла ошибка, из-за которой задание прервано - Since:
- 1.6
- See Also:
getPrintable
public Printable getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
Printable для печати этой таблицы JTable. Этот метод предназначен для тех, кто хочет настроить реализацию Printable по умолчанию, используемую методами JTable's print. Разработчики, которые просто хотят распечатать таблицу, должны использовать эти методы напрямую.
Printable может быть запрошен в одном из двух режимов печати. В обоих режимах строки таблицы естественным образом распространяются по нескольким страницам, размещая как можно больше строк на каждой странице. PrintMode.NORMAL указывает, что таблица печатается в её текущем размере. В этом режиме может потребоваться распределение столбцов по страницам аналогично строкам. При необходимости столбцы распределяются в порядке, согласованном с ComponentOrientation таблицы. PrintMode.FIT_WIDTH указывает, что выход должен быть уменьшен в масштабе, если необходимо, чтобы весь столбец таблицы (и все столбцы) размещались на каждой странице. Ширина и высота масштабируются одинаково, сохраняя соотношение сторон вывода.
Printable размещает часть таблицы на каждой странице с соответствующей частью заголовка таблицы, если она есть.
Текст заголовка и подвала можно добавить в вывод, предоставив MessageFormat аргументы. Код печати запрашивает строки из форматов, предоставляя один элемент, который может быть включён в отформатированную строку: Integer, представляющую текущий номер страницы.
Рекомендуется ознакомиться с документацией по MessageFormat, так как некоторые символы, такие как одинарная кавычка, являются специальными и требуют экранирования.
Вот пример создания 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-MessageFormat, определяющий текст для печати заголовка, или null для отсутствия -
footerFormat-MessageFormat, определяющий текст для печати подвала, или null для отсутствия - Returns:
Printableдля печати этой таблицы JTable- Since:
- 1.5
- See Also:
getAccessibleContext
@BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
- Specified by:
-
getAccessibleContextin interfaceAccessible - Overrides:
-
getAccessibleContextin classComponent - Returns:
- AccessibleJTable, служащий AccessibleContext для этой JTable
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/JTable.html
new JScrollPane(aTable).