Ширина столбца установки Java JTable

Сначала разделить столбец запятой, затем groupby по столбцу и использовать генератор для сглаживания вложенных списков с помощью set и join:

df = (distinct_category['category'].str.split(', ')
                    .groupby(distinct_category['top_level_domain'])
                    .agg(lambda x: ', '.join(set(y for z in x for y in z)))
                    .reset_index())
print (df)

       top_level_domain                        category
0       doubleclick.net   Ads, Online Shopping, Web Ads
1  google-analytics.com               Internet Services
2            google.com  Content Server, Search Engines
3        inspectlet.com               Internet Services
4              live.com                   None Assigned
5       service-now.com     Business, Software/Hardware

Другим решением является присвоение обратно разделенных значений: [116 ]

df = (distinct_category.assign(category = distinct_category['category'].str.split(', '))
                       .groupby('top_level_domain')['category']
                       .agg(lambda x: ', '.join(set(y for z in x for y in z)))
                       .reset_index())
89
задан Jason Plank 26 April 2012 в 17:18
поделиться

3 ответа

Никакая потребность в опции, просто сделайте предпочтительную ширину последнего столбца максимумом, и это займет все дополнительное место.

table.getColumnModel().getColumn(0).setPreferredWidth(27);
table.getColumnModel().getColumn(1).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.getColumnModel().getColumn(3).setPreferredWidth(90);
table.getColumnModel().getColumn(4).setPreferredWidth(90);
table.getColumnModel().getColumn(6).setPreferredWidth(120);
table.getColumnModel().getColumn(7).setPreferredWidth(100);
table.getColumnModel().getColumn(8).setPreferredWidth(95);
table.getColumnModel().getColumn(9).setPreferredWidth(40);
table.getColumnModel().getColumn(10).setPreferredWidth(Integer.MAX_INT);
0
ответ дан 24 November 2019 в 07:22
поделиться

Что произойдет, если вы вызовете setMinWidth (400) в последнем столбце вместо из setPreferredWidth (400) ?

В JavaDoc для JTable внимательно прочтите документацию для doLayout () . Вот несколько битов выбора:

Когда метод вызывается в результате изменения размера закрывающего окна, resizingColumn имеет значение null. Это означает, что изменение размера произошло «вне» JTable. и изменение - или "дельта" - должно быть распределено по всем столбцам независимо от режим автоматического изменения размера этого JTable.

Возможно, поэтому AUTO_RESIZE_LAST_COLUMN вам не помог.

Примечание. Когда JTable корректирует ширину столбцов, он учитывает их минимальные и максимальные значения абсолютно.

Здесь говорится, что вы можете установить Min == Max для всех столбцов, кроме последних, затем установить Min = Preferred для последнего столбца и либо не устанавливать Max, либо установить очень большое значение для Max.

42
ответ дан 24 November 2019 в 07:22
поделиться

С JTable.AUTO_RESIZE_OFF таблица не изменит размер любого из столбцов за вас, поэтому будет выбрана ваша предпочтительная настройка. Если ваша цель - настроить столбцы по умолчанию на ваш предпочтительный размер, за исключением того, чтобы последний столбец заполнял остальную часть панели, у вас есть возможность использовать JTable.AUTO_RESIZE_LAST_COLUMN autoResizeMode, но это может быть наиболее эффективно при использовании с TableColumn.setMaxWidth () вместо TableColumn.setPreferredWidth () для всех столбцов, кроме последнего.

Убедившись, что AUTO_RESIZE_LAST_COLUMN действительно работает, вы можете поэкспериментировать с комбинацией TableColumn.setMaxWidth () и TableColumn.setMinWidth ()

21
ответ дан 24 November 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: