Определение имени столбца по заголовку столбца в JTable

#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. Обратите внимание, что, как и другим, мне интересно, зачем вам это нужно. Это, вероятно, указывает на некоторое неправильное представление о вашей программе.