Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49

Произворльная раскраска ячеек JTable в зависимости от значений которых нет в видимой таблице

17.04.2013, 11:51. Показов 3348. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Раскрасить ячейки в зависимости от данных имеющихся в этих ячейках не сложно.
А как оптимально раскрасить их в зависимости от значений которых нет в этой таблице?

Или можно ли сделать некоторые колонки таблицы невидимыми? Если да - то как, и тогда вопросы отпадают.

Казалось бы, чего проще было бы сделать так: jTable.getColumnModel().getColumn(..).se tVisible(false), когда надо, или .setVisible(true), но этого нет, .setWidth = 0 тоже проблему не решает, колонка всё равно видна, хоть и маленькая
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2013, 11:51
Ответы с готовыми решениями:

1C 8.3 Удаление строк в таблице значений в которых нет значений
Добрый день! Нужно написать обработчик, которые удаляет все строки в которых нет значений из таблицы значений на 1С.8,3. Помогите...

Закраска отдельных ячеек в таблице JTable
Всем привет :) Продолжаю изучение JTable и на этот раз подводным камнем встал, казалось бы, на первый взгляд, простой, вопрос о том как...

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

4
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
17.04.2013, 11:56
А кто Вам мешает написать свою модель таблицы? Это совсем просто, там интерфейс тривиальный. Держите у себя больше колонок, чем отображаете, соответственно, данные, которые не отображаете, используете в renderer-е для раскраски.
1
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49
17.04.2013, 12:06  [ТС]
Ну пока ещё не доехал до этого
Пытаюсь делать стандартными методами.
Буду посмотреть как пишется своя модель. Спасибки за совет!
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
17.04.2013, 13:20
Цитата Сообщение от konrads Посмотреть сообщение
Буду посмотреть как пишется своя модель. Спасибки за совет!
Да там реально всё просто. Вот, за 15 минут накидал.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package ru.skipy.tests;
 
import javax.swing.*;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import java.awt.*;
import java.text.MessageFormat;
import java.text.NumberFormat;
 
/**
 * TableColoringTest
 *
 * @author Eugene Matyushkin aka Skipy
 * @since 17.04.13
 */
public class TableColoringTest extends JFrame{
 
 
    TableColoringTest(){
        super("Table coloring test");
        Model m = new Model();
        JTable table = new JTable(m);
        Renderer r = new Renderer(m);
        table.setDefaultRenderer(Double.class, r);
        JPanel cp = new JPanel(new BorderLayout());
        cp.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
        cp.add(new JScrollPane(table));
        setContentPane(cp);
        setSize(400,300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        new TableColoringTest().setVisible(true);
    }
 
    static class Renderer extends JLabel implements TableCellRenderer{
 
        private MessageFormat format = new MessageFormat("{0,number,0.00}");
 
        private Model model;
 
        Renderer(Model model){
            setHorizontalTextPosition(JLabel.RIGHT);
            setHorizontalAlignment(JLabel.RIGHT);
            setOpaque(true);
            this.model = model;
        }
 
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            setText(format.format(new Object[]{value}));
            setForeground(new Color((Integer) model.getValueAt(row, 4)));
            setBackground(new Color((Integer) model.getValueAt(row, 5)));
            return this;
        }
    }
 
    static class Model implements TableModel {
 
        private Object[][] data = {{1, "Income advance", 1000.0, true, 0xFF0000, 0xFFFFB0},
                {2, "Income", 1000.0, true, 0x000000, 0xFFFFFF},
                {3, "Tax", -100.0, true, 0x0000FF, 0xA0D0FF},
                {4, "Loss", -200.0, false, 0xFF0000, 0x000000},
                {5, "Loan return", -1270.0, true, 0x0000FF, 0xC0C0C0},
        };
 
        private String[] cols = {"ID", "Description", "Sum", "Planned"};
        private Class<?>[] classes = {Integer.class, String.class, Double.class, Boolean.class};
 
        @Override
        public int getRowCount() {
            return data.length;
        }
 
        @Override
        public int getColumnCount() {
            return cols.length;
        }
 
        @Override
        public String getColumnName(int columnIndex) {
            return cols[columnIndex];
        }
 
        @Override
        public Class<?> getColumnClass(int columnIndex) {
            return classes[columnIndex];
        }
 
        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return false;
        }
 
        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            return data[rowIndex][columnIndex];
        }
 
        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {}
 
        @Override
        public void addTableModelListener(TableModelListener l) {}
 
        @Override
        public void removeTableModelListener(TableModelListener l) {}
    }
}
Единственное - обработку ошибок не делал.
1
2 / 2 / 0
Регистрация: 05.03.2013
Сообщений: 49
17.04.2013, 13:42  [ТС]
Спасибо за пример, вроде по тексту всё понятно, ежели чё не так будет, отмечусь ещё разок в этой теме
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2013, 13:42
Помогаю со студенческими работами здесь

Сделать одну из кнопок видимой в зависимости от значений из БД
Доброго времени, встала задача добавлять кнопки по нажатию на кнопку. Решил сделать это через множество заранее вставленных кнопок, которые...

Найти строки в таблице, которых нет в другой таблице
Здравствуйте! Помогите, пожалуйста, составить запрос. Думаю думаю, никак не могу сообразить. Значит есть таблица: phones ...

Подсчёт значений ячеек в зависимости от другой ячейки
Добрый день! Есть таблица: . Каждому значению первого столбика соответствуют 2 записи во втором: &quot;Приём&quot; и...

Заполнение столбца в зависимости от значений ячеек в строке
Доброго времени суток, читающий. В VBA я достаточно слаб, чтобы решать настолько нетривиальную задачу. Суть в чем. Есть Словарь...

JTable и как определить номер первой видимой строки?
Вопрос следующий. Предположим есть таблица со скролом. В таблице столько записей, что появляется скрол. Мы находимся в центре таблицы. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru