Ячейки не могут быть типа JLabel. JTable - это не сетка компонентов. Это сетка, ячейки которой отрисовываются, например, одним рендрером - JLabel. Т.е. отрисовка таблицы может проводиться всего одним компонентом JLabel, одним рендерером. Таблица просит рендерер отрисовать ячейку, а не вставляет по компоненту в каждую ячейку.
Это я к тому, что к сожалению нельзя получить ячейку как JLabel, взять у нее размеры и на основе них выставить колонке максимальную, минимальную, предпочтительную и/или текущую ширину. Это нужно сделать до того, как начнет работать рендерер (так как ячейка при отрисовке уже имеет ширину, т.е. отрисовывается с уже вычисленным размером). Либо в процессе его работы, что может привести к множественному перерисовыванию таблицы. Короче, надо выставить для TableColumn maxWidth (setMaxWidth()), а вот в какой момент это надо делать и какой задать размер - вопрос. Это надо смотреть конкретно по твоей задаче.
Ну а отключить горизонтальный скролинг - это выставить нужный horizontalScrollBarPolicy у JScrollPane.
Если размерность таблицы в процессе работы с ней не изменяется (т.е. строчки не добавляются и не удаляются), то я бы предложил вообще сделать без JTable. MigLayout (http://www.miglayout.com/) на обычной JPanel отлично сделает то, что нужно
Comments 3
Это я к тому, что к сожалению нельзя получить ячейку как JLabel, взять у нее размеры и на основе них выставить колонке максимальную, минимальную, предпочтительную и/или текущую ширину. Это нужно сделать до того, как начнет работать рендерер (так как ячейка при отрисовке уже имеет ширину, т.е. отрисовывается с уже вычисленным размером). Либо в процессе его работы, что может привести к множественному перерисовыванию таблицы.
Короче, надо выставить для TableColumn maxWidth (setMaxWidth()), а вот в какой момент это надо делать и какой задать размер - вопрос. Это надо смотреть конкретно по твоей задаче.
Ну а отключить горизонтальный скролинг - это выставить нужный horizontalScrollBarPolicy у JScrollPane.
Reply
Reply
MigLayout (http://www.miglayout.com/) на обычной JPanel отлично сделает то, что нужно
Reply
Leave a comment