Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable изменение ширины столбцов 
V
    Опции темы
Foo
Дата 25.11.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 20.10.2006

Репутация: 2
Всего: 3



Есть Jtable у которой например 4 столбца, размеры 1 2 и 4 столбца стандартные, 3 столбец должен занимать оставшееся место. я делал

table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
и для столбцов указывал tc.setPreferredWidth(size);

Если известна заранее ширина таблицы, то можно всем столбцам задать преферед сайз и все будет вобщемто неплохо, но если он неизвестен?
Как указать 3 столбцу чтобы он занял место которое осталось после установки другими преферед сайз, т.е. псмотрел сколько есть места, отнял оттуда преферед сайзы остальных колонок, и сделал себе такой размер.

При этом нельзя делать фиксированными макс. и мин. размеры колонок, т.к. возможно пользователь захочет их изменить
--------------------
qip
PM MAIL   Вверх
Goliath
Дата 25.11.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 3
Всего: 5



Код

import java.awt.BorderLayout;
import java.awt.ScrollPane;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;

public class ResizeColumnSizeSample
{

    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setSize(640, 480);
        
        JTable table = new JTable(10, 5);
        TableModel model = table.getModel();
         TableColumn tc = null;
            for (int i = 0; i < model.getColumnCount(); i++) 
            {
             tc = table.getColumnModel().getColumn(i);
             if(i==0)
             {
                 tc.setMaxWidth(350);
                 tc.setMinWidth(250);
             }
             else
                 tc.setPreferredWidth(50);
            }
        frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
        frame.setVisible(true);
    }
}


--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
Foo
Дата 26.11.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 20.10.2006

Репутация: 2
Всего: 3



Цитата(Foo @  25.11.2006,  18:04 Найти цитируемый пост)
При этом нельзя делать фиксированными макс. и мин. размеры колонок, т.к. возможно пользователь захочет их изменить 


--------------------
qip
PM MAIL   Вверх
Goliath
Дата 27.11.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 3
Всего: 5



Так поставь вместо:
Код

tc.setMaxWidth(350);
tc.setMinWidth(250);

Код

tc.setPreferredWidth(350);

Даже так:
Код

TableModel model = table.getModel();
TableColumn tc = null;
for (int i = 0; i < model.getColumnCount(); i++) 
{
    tc = table.getColumnModel().getColumn(i);
    if(i==0)
          tc.setPreferredWidth(350);
}

--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
Foo
Дата 27.11.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 20.10.2006

Репутация: 2
Всего: 3



метод setPreferredWidth устанавливает желаемую ширину столбца, и если достаточно места все столбцы будут своей желаемой ширины. Но у меня ширина всей таблицы зарнеее неизвестно,  я только знаю что ее хватит для установления желаемой ширины 3-м столбцам, сколько места останется 4-му столбцу я незнаю, он должне занять все оставшееся от других трех место.
--------------------
qip
PM MAIL   Вверх
Goliath
Дата 27.11.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 3
Всего: 5



Код

JTable table = new JTable(10, 4);
TableModel model = table.getModel();
TableColumn tc = null;
for (int i = 0; i < model.getColumnCount(); i++) 
{
    tc = table.getColumnModel().getColumn(i);
    if(i<3)
         tc.setPreferredWidth(500);
 }

--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
Foo
Дата 29.11.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 20.10.2006

Репутация: 2
Всего: 3



Как можно убрать максимальную и мин. ширину ячеек, если уже засетил их
т.е. сделал
tc.setMinWidth(size);
tc.setMinWidth(size);

как сделать чтобы они стали неопределены?
--------------------
qip
PM MAIL   Вверх
Foo
Дата 4.12.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 20.10.2006

Репутация: 2
Всего: 3



все, с шириной все вопросы закрыты, всем спасибо за участие.
--------------------
qip
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.