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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RowHeader в JTable - header расползается вниз по, header расползается вниз по ScrollPane 
:(
    Опции темы
le_chat
Дата 6.8.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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




Всем доброго дня

есть следующий код (слегка модифицированый код example'a)
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class RowHeaderExample extends JFrame {
    public RowHeaderExample() {
        super( "Row Header Example" );
        setSize( 300, 300 );

        String headers[] = {"Payment-Text", "Short-Number ", "Code", "d", "e", "f", "g", "h", "i"};

        DefaultTableModel dm = new DefaultTableModel( headers.length, 10 );
        JTable table = new JTable( dm );
        table.setTableHeader( null );

        JScrollPane scroll = new JScrollPane( table );

        JRowTableHeader rowHeader = new JRowTableHeader( headers );
        rowHeader.setPreferredSize( new Dimension( 100, 100 ) );
        scroll.setRowHeaderView( rowHeader );

        getContentPane().add( scroll, BorderLayout.CENTER );
    }


    public static void main( String[] args ) {
        RowHeaderExample frame = new RowHeaderExample();
        frame.addWindowListener( new WindowAdapter() {
            public void windowClosing( WindowEvent e ) {
                System.exit( 0 );
            }
        } );
        frame.setVisible( true );
//        frame.getScroll().setColumnHeaderView(null);
    }

    public static class JRowTableHeader extends JList {

        public JRowTableHeader( String[] rows ) {
            super();
            setModel( new RowHeaderListModel( rows ) );
            setCellRenderer( new RowHeaderRenderer() );

//        setFont( UIManager.getFont( "TableHeader.font" ) );
//        setBackground( UIManager.getColor( "TableHeader.background" ) );
//        setForeground( UIManager.getColor( "TableHeader.foreground" ) );
        }

        /**
         * List model
         */
        private class RowHeaderListModel extends AbstractListModel {

            private String[] rows;

            public RowHeaderListModel( String[] rows ) {
                this.rows = rows;
            }

            public int getSize() {
                return rows.length;
            }

            public Object getElementAt( int index ) {
                return rows[index];
            }
        }

        /**
         * Render for table
         */

        private class RowHeaderRenderer extends JLabel implements ListCellRenderer {

            private RowHeaderRenderer() {
                setOpaque( true );
                setHorizontalAlignment( CENTER );
                setBorder( UIManager.getBorder( "TableHeader.cellBorder" ) );

                setFont( UIManager.getFont( "TableHeader.font" ) );
                setBackground( UIManager.getColor( "TableHeader.background" ) );
                setForeground( UIManager.getColor( "TableHeader.foreground" ) );
            }

            public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) {

                setComponentOrientation( list.getComponentOrientation() );
//            if (isSelected) {
//                setBackground(list.getSelectionBackground());
//                setForeground(list.getSelectionForeground());
//            } else {
//                setBackground(list.getBackground());
//                setForeground(list.getForeground());
//            }

                if ( value instanceof Icon ) {
                    setIcon( ( Icon ) value );
                    setText( "" );
                } else {
                    setIcon( null );
                    setText( ( value == null ) ? "" : value.toString() );
                }

                setEnabled( list.isEnabled() );
                setFont( list.getFont() );

                return this;
            }
        }
    }
}


если начать растягивать фрейм вниз, то размер JList тоже будет увеличиваться, а JTable не изменяется. не могу понять в чем причина и как от этого избавиться.
PM MAIL   Вверх
Vofka
Дата 6.8.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Помоему таблица и не должна растягиваться по вертикали.По умолчанию увеличивается только ширина таблицы.Может я ошибаюсь конечно
PM MAIL   Вверх
le_chat
Дата 6.8.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я наверно не точно выразился. мне нужно чтобы JList тоже не растягивался =)
PM MAIL   Вверх
le_chat
Дата 6.8.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



  Фуф, почти целый день на эту ерунду убил!! 

  А решение - проще не придумаешь... 

  кому интересно - в JRowTableHeader перекрываем один метод у интерфейса Scrollable. Он как раз за это отвечает:
Код

        public boolean getScrollableTracksViewportHeight() {
            return false;
        }



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.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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