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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DefaultCellEditor, установка выравнивания 
V
    Опции темы
GZep
Дата 5.12.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

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



Здравствуте, нужно сделать выравнивание чекбокса при onpress. То есть так выравнивание работает, но когда я нажимаю и удерживаю - перестает.
Код

        class CheckBoxEditor extends javax.swing.DefaultCellEditor {
            public CheckBoxEditor() {
                super(new javax.swing.JCheckBox());
                //setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            }
        }
        
        class CheckBoxRenderer extends javax.swing.JCheckBox implements javax.swing.table.TableCellRenderer {
            public CheckBoxRenderer() {
                setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            }
            public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                setSelected((value != null && ((Boolean) value).booleanValue()));
                return this;
            }
        }

        getColumnModel().getColumn(0).setCellEditor(new CheckBoxEditor());        
        getColumnModel().getColumn(0).setCellRenderer(new CheckBoxRenderer());

нужную строчку закомментировал.

З.Ы. а еще setSelected((value != null && ((Boolean) value).booleanValue())); - это нельзя как-нибудь оптимизировать? (покрасивее записать чтоли...)


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
powerOn
Дата 6.12.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Попробуй вот так editor поменять:
Код

class CheckBoxEditor extends javax.swing.DefaultCellEditor
{
    public CheckBoxEditor()
    {
        super(new javax.swing.JCheckBox());

        ((javax.swing.JCheckBox) getComponent())
                .setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    }
}



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
GZep
Дата 6.12.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

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



powerOn, работает! smile спасибо.

А как сделать, чтобы фон не менялся. Например, стандартый - белый фон, становися синим, когда выделяешь строчку. Теперь эта колонка с чек боксами всегда серая, никак не реагирует на выделения... я ведь на задавал никаких тут цветов, почему не остались стандартные?...

Добавлено через 54 секунды
З.Ы. может есть какой-нибудь простой пример с чек боксом в ячейке, где минисум кода и он только нужный?


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
powerOn
Дата 6.12.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Посмотри вот этот код:
Код

class CheckBoxRenderer extends javax.swing.JCheckBox implements javax.swing.table.TableCellRenderer
{
    public CheckBoxRenderer()
    {
        setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    }

    public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, Object value, 
            boolean isSelected, boolean hasFocus, int row, int column)
    {
        // Подсвечиваем или сбрасываем выделение.
        if (isSelected) 
        {
            setBackground(table.getSelectionBackground());
        }
        else
        {
            setBackground(table.getBackground());
        }

        // Установка текущего значения.
        setSelected( value != null ? (Boolean) value : false);
        return this;
    }
}




--------------------
user posted image нет времени думать - нужно писать КОД!

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


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

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



powerOn, вау отличный код!дает ответ сразу на 2 вопроса... СПАСИБО.

З.Ы. вот хочу сказать на счет java: на самом деле пока я понял, зачем нужен этот несчастный Renderer и вообще откуда он... перерыскал огромное количесва кода пока не дошло... обычно давали варианты на реализацию чекбокса в ячейке, расчитывая, что человек уже знает на счет этих "особенностей" (до этого я делал таблицы только в разных субд и (x)?html. Я это пишу все к тому, что ИМХО по java очень мало материала для "нубов", который в определенные моменты чрезвычайно полезен.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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