Змінюй хід війни! Допомагай ЗСУ!

jTable Java ячейка вопрос открыт

  • Автор теми Автор теми ligorl
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 20.03.2010
Повідом.: 145
jTable Java ячейка вопрос открыт

Вопрос такой как закрасить в таблице ячейку в не зависимости что в ней лежит. тоесть табл | 5 | 5 | 6 | так вот первая ячейка с (5) закрасить а две остальные не трогать как. + google может поможет:)
 
Останнє редагування:
вопрос так написан, что даже отвечать не хочется.. согласовывайте хотя бы части речи между собой, или русский для вас - не родной язык?

что подразумевается под "закрасить"? изменить фон?

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
вот тут, думаю, есть всё, что вам нужно, читайте про рендереры. ну и, конечно, как вы сами сказали, гугл поможет...
 
да



спасибо внимательно изучу
 
Останнє редагування:
Помню, вы хотели Хорстмана полистать... там это есть :rolleyes:

Пишешь свой рисовальщик ячейки и назначаешь его таблице.
По умолчанию, ячейки отрисовываются примерно так:

javax.swing.table.TableCellRenderer{
Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column){
return new JLabel(value.toString());
};
}
 
это не то я предполагал что указую row и column и цвет и эта ячейка красится а все намного сложней
 
это не то я предполагал что указую row и column и цвет и эта ячейка красится а все намного сложней
Изменить в одну строчку цвет ячеек можно, но это затронет всю таблицу, поскольку в таблице отрисовщик (CellRenderer) задается на класс объекта значения (value), а не на ячейку.

DefaultTableCellRenderer render = new DefaultTableCellRenderer();
render.setBackground(new Color(233,33,233));
table.setDefaultRenderer(Object.class, null); #удаляем стандартный
table.setDefaultRenderer(Integer.class, render);
table.setDefaultRenderer(Boolean.class, new DefaultTableCellRenderer());
table.setDefaultRenderer(String.class, new DefaultTableCellRenderer());

Или переделываешь как нужно класс javax.swing.table.DefaultTableCellRenderer
и добавляешь его таблице table.setDefaultRenderer(Object.class , new myRenderer());
 
это не то я предполагал что указую row и column и цвет и эта ячейка красится а все намного сложней

если все сложнее, чем вы продеполагали, это ещё не значит, что "это не то". это, как раз, "то" ;)

до чего же вы ленивый человек.. по ссылке, которую я давал, всё написано. читайте со слов
To specify a cell-specific renderer, you need to define a JTable subclass that overrides the getCellRenderer method.

вот вам пример для вашей ситуации, проверил на своем рабочем проекте:
Код:
table = new JTable(model) {
    public TableCellRenderer getCellRenderer(int row, int column) {
        if ((row == 2) && (column == 2)) {
        	DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
    		renderer.setBackground(new Color(200, 200, 200));
            return renderer;
        }
        return super.getCellRenderer(row, column);
    }
};
ячейка (2, 2) станет серой.

так, как вы хотите - не будет, потому что со стороны разработчиков Swing это было бы не программирование, а детский сад. нужно было бы написать over 9000 методов в JTable для решения часто возникающих проблем типа вашей, и всё равно кому-то бы не хватило. это же решение универсально. да, присутствует "лишний код", как вам может показаться. но поверьте, меньше кода далеко не всегда означает, что он понятнее.
 
Останнє редагування:
Назад
Зверху Знизу