#java #header #jtable
#java #заголовок #jtable
Вопрос:
Есть ли какой-либо способ определить имя столбца по заголовку столбца с помощью компонента Java JTable
? Например, у меня мог бы быть заголовок столбца типа «Header» и имя столбца «Column». И я ищу метод, подобный Column_Name_From_Header («Заголовок») -> «Столбец».
Комментарии:
1. Что вы подразумеваете под «именем»? Для более быстрой справки отправьте SSCCE .
2. Пример приведен в первом ответе. JTable tbl = … String colName = tbl.getModel().getColumnName(10); Но вот имя столбца из целого значения — номер столбца.
3. понятия не имею, зачем вам понадобилось это значение и каким бы то ни было способом, зачем вам это знать,
Ответ №1:
Если у вас есть ссылка на JTable
, то самый простой способ получить имя столбца — получить его из базового TableModel
; например
JTable tbl = ...
String colName = tbl.getModel().getColumnName(10);
Обычно это желательно, поскольку доступ осуществляется с использованием индексов модели, а не индексов просмотра. Это означает, например, что если вы используете столбцы вашей JTable, имена столбцов в модели будут по-прежнему иметь тот же предсказуемый порядок.
Комментарии:
1. Ну, да. Но в этом примере у нас есть метод getColumnName, который возвращает имя столбца, используя целое число в качестве входных данных (например, 10). Не строковое значение заголовка столбца.
2. @Max: Я не совсем понимаю — у вас есть строка, и вы хотите получить обратно строку? Что такое заголовок, если не имя столбца?
3. Заголовок столбца — это то, что вы видите, когда данные загружаются в таблицу. Когда вы смотрите на таблицу в вашей программе. Например. «Яблоки». Имя столбца — это имя внутренней переменной типа «apples_1».
4. Что затем вызывает вопрос. Зачем вам (как вы думаете) нужна эта информация?
5. Я пытаюсь выполнить поиск по столбцам таблицы. И мне нужно исключить некоторые из них из набора поиска. Но я не хочу жестко кодировать, используя статические индексы столбцов. Вот почему.
Ответ №2:
Выполните итерацию по столбцам таблицы модели столбцов таблицы. Найдите тот, у которого задано значение заголовка (используя headerValue.equals(tableColumn.getHeaderValue()
). Затем спросите modelIndex
у столбца ( tableColumn.getModelIndex()
) и запросите у модели таблицы имя столбца по этому индексу : tableModel.getColumnName(index)
.
Комментарии:
1. Звучит разумно. Я новичок в Java. Попытаемся реализовать эту логику прямо сейчас. Я опубликую результаты позже.
2. Обратите внимание, что, как и другим, мне интересно, зачем вам это нужно. Это, вероятно, указывает на некоторое неправильное представление о вашей программе.