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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по классу ColumnRenderer, ColumnRenderer 
V
    Опции темы
skif18
Дата 10.12.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 17.5.2007
Где: Молдова, Кишинев

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



Разбираюсь с классами типа ColumnRenderer. Есть вот такой.
Код

package Sbit;


import javax.swing.JTable;
import javax.swing.SwingConstants;
//import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.Color;
import java.awt.Component;


public class ColumnRendererZaiavki extends DefaultTableCellRenderer 
{
    public static int r=0;
    public Component getTableCellRendererComponent(JTable table, Object value,
                    boolean isSelected, boolean hasFocus, int row, int column) 
    {    
         if (table.getSelectedRow()==row) {  setBackground(new Color(184,213,241));    }
         
         else { setBackground(Color.white);
              if (table.getModel().isCellEditable(row, column)==false) {  setBackground(new Color(238,238,238));  }
         
         
         }
                 super.setHorizontalAlignment(SwingConstants.CENTER);
                  if(column%3==0){
                                             int width = 200;
                                            table.getColumnModel().getColumn(column).setPreferredWidth(width);
                                            super.setHorizontalAlignment(SwingConstants.LEFT);
                     }else if((column%3)==1){

                                             int width = 80;
                                            table.getColumnModel().getColumn(column).setPreferredWidth(width);
                                            super.setHorizontalAlignment(SwingConstants.RIGHT);
                     }else if((column%3)==2){

                                             int width = 80;
                                             table.getColumnModel().getColumn(column).setPreferredWidth(width);
                                            super.setHorizontalAlignment(SwingConstants.RIGHT);
                                         }
//         setForeground(Color.RED);

     
         //super.setHorizontalAlignment(SwingConstants.CENTER);

        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }



Но при нем строка в таблице выделяется вся, ну и отдельная ячейка рамкой т.к. фокус на ней.
Вопрос. Как сделать чтобы не выделялась вся строка а только данная ячейка? Что в этом классе не предусмотрено?


--------------------

PM MAIL ICQ   Вверх
skif18
Дата 10.12.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 17.5.2007
Где: Молдова, Кишинев

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



понимаю что дело вот в этом
Код

if (table.getSelectedRow()==row) { 
    setBackground(new Color(184,213,241)); 
}

выделяет всю строку. а мне надо чтоб только ячейку...

Это сообщение отредактировал(а) skif18 - 10.12.2009, 12:02


--------------------

PM MAIL ICQ   Вверх
dorogoyIV
Дата 10.12.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

  Component c = super.getTableCellRendererComponent(table, value, isSelected,
                                                        hasFocus, row, column);
  if (table.getSelectedRow() == row &&
      table.getSelectedColumn() == column)
   c.setBackground(new Color(184, 213, 241));
   ...
   ...
  return c;

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 17.5.2007
Где: Молдова, Кишинев

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



решил вопрос.
 сделал так обращение к классу.
Код

private void setWith(int [] withColumn, JTable table) {
         
        for (int col=0; col<table.getColumnCount() ;col++)
        {    
            table.setColumnSelectionAllowed(false);
            table.setRowSelectionAllowed(false);
            table.setCellSelectionEnabled(true);
            table.getColumnModel().getColumn(col).setCellRenderer(new ColumnRendererZaiavki());
        }
    }    


Добавлено через 23 секунды
dorogoyIV, да сделал. спасибо большое.


--------------------

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

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

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


 




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


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

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