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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Иерархические заголовки столбцов в JRE 1.5, как? 
V
    Опции темы
Goliath
Дата 3.3.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Посмотри тут.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Goliath
Дата 3.3.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



К сожалению, в этом посте нету решения данной проблемы. В JRE 1.4 я переписывал класс BasicTableHeaderUI и все работала нормально, могу выложить код. Но данный подход не работает в версии 1.5
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
LSD
Дата 4.3.2006, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Goliath @ 3.3.2006, 18:40 Найти цитируемый пост)
Но данный подход не работает в версии 1.5

Почему?


Цитата(Goliath @ 3.3.2006, 18:40 Найти цитируемый пост)
В JRE 1.4 я переписывал класс BasicTableHeaderUI и все работала нормально, могу выложить код.

Выкладывай smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Goliath
Дата 4.3.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Свой класс выкладывать не буду, потому что большой и все между собой связано. Выкладываю маленький пример, который работает в 1.4 но не работает в 1.5

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  JTableSample.rar 9,01 Kb
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
LSD
Дата 5.3.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Я пока не понял, почему не работает твой код, но нашел другое решение. Вот так работает и в JDK 1.4 и 1.5:
Код
public class MyComplexTableHeader extends JTableHeader
{
  public MyComplexTableHeader(TableColumnModel model)
  {
    super(model);
    GridBagLayout layout = new GridBagLayout();
    setLayout(layout);

    JLabel label = new JLabel("Complex header", JLabel.CENTER);
    label.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)));
    Insets nullInsets = new Insets(0, 0, 0, 0);
    int columnsCount = model.getColumnCount();
    add(label, new GridBagConstraints(0, 0, columnsCount, 1, 1.0, 0.5, GridBagConstraints.CENTER, GridBagConstraints.BOTH, nullInsets, 0, 0));
    for(int i = 0; i < columnsCount; i++)
    {
      final TableColumn column = model.getColumn(i);
      label = new JLabel(column.getHeaderValue().toString())
      {
        public Dimension getPreferredSize()
        {
          Dimension preferredSize = super.getPreferredSize();
          preferredSize.width = column.getWidth();
          return preferredSize;
        }
      };
      label.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
      add(label, new GridBagConstraints(i, 1, 1, 1, 0.0, 0.5, GridBagConstraints.CENTER, GridBagConstraints.BOTH, nullInsets, 0, 0));
    }
    setPreferredSize(layout.preferredLayoutSize(this));
  }

  protected void paintComponent(Graphics g)
  {
    g.clearRect(0, 0, getWidth(), getHeight());
  }

  public static void main(String[] args)
  {
    Object[][] data =
        {
            {"Val 1-1", "Val 1-2", "Val 1-3"},
            {"Val 2-1", "Val 2-2", "Val 2-3"},
            {"Val 3-1", "Val 3-2", "Val 3-3"}
        };
    Object[] columns = {"Col 1", "Col 2", "Col 3"};
    JTable table = new JTable(data, columns);
    table.setTableHeader(new MyComplexTableHeader(table.getColumnModel()));

    JFrame frame = new JFrame("Test frame");
    frame.getContentPane().add(new JScrollPane(table));
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Goliath
Дата 6.3.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



У меня вопросик по выше приведенному примеру. Попробовал я сделать более сложною структуру и понял что там фишка в GridBagConstraints. Можно по подробней о данном компоненте...
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
Goliath
Дата 7.3.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Goliath @ 6.3.2006, 16:05 Найти цитируемый пост)
У меня вопросик по выше приведенному примеру. Попробовал я сделать более сложною структуру и понял что там фишка в GridBagConstraints. Можно по подробней о данном компоненте...

Сорри, я прочел но забыл отписаться. Для начала почитай у нас в FAQ о нем. Если будут вопросы задавай.

Цитата(Goliath @ 7.3.2006, 11:04 Найти цитируемый пост)
Хорошо, а нету другого метода сделать сложную шапку.

Можно еще переопредилить метод paint() и самому полностью отрисовывать компонент.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Goliath
Дата 7.3.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



LSD я тебя уже наверное достал? Не могу понять в чем ошибка. Я выкладываю код не мог бы ты на него взглянуть, что там не так. У меня шапки колонок не растягиваться в ширину…

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  JTableTools.rar 8,81 Kb
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
Goliath
Дата 7.3.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо большое. Нашел ошибку в первом примере. Там, для того чтобы работала на 1.5 нужно заменить несколько строчек.
Код

JTable table = new JTable(dm) 
{
           
            protected JTableHeader createDefaultTableHeader() 
            {
                return new GroupableTableHeader(columnModel);
            }
            
};
        
table.getColumnModel().setColumnMargin(0);
TableColumnModel cm = table.getColumnModel();

Заменить на:
Код

JTable table = new JTable(dm);
table.getColumnModel().setColumnMargin(0);
TableColumnModel cm = table.getColumnModel();
table.setTableHeader(new GroupableTableHeader(cm));

Спасибо большое LSD. Без тебя не догнал бы smile

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


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Goliath @ 7.3.2006, 16:34 Найти цитируемый пост)
Спасибо большое LSD. Без тебя не догнал бы

Пожалуйста smile Тока я тут вроде и не при чем smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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