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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JComboBox в JTable, как работает Renderer и Editor 
:(
    Опции темы
malah
Дата 20.3.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго дня!
Проблема следующая: есть табличка, в ней элементы строки и JComboBox, сразу после запуска выбираю значение из первого Бокса и.... оно заносится во все остальные (они кстати пересекаются выпадающим списком).... Однако, после выбора во всех Боксах, проблема исчезает....
Вопрос № 1
Почему так происходит?
Вопрос № 2
Как это исправить?
Вопрос № 3
Может ли кто-нибудь детально описать процесс работы Renderer и Editor (включая параметры) на русском языке... Прочитал уже много чего, но ясности что то нет  smile 
Код

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableCellRenderer;
import java.awt.*;

/**
 * Created by IntelliJ IDEA.
 * User: sergey.malahov
 * Date: 18.03.2008
 * Time: 14:37:35
 * To change this template use File | Settings | File Templates.
 */
public class TableFrame extends JFrame {
    final String [] headers =  new String [] {"Column 1", "Column 2"};
    final String [] items = new String [] {"!1","@2","#3"};
    public TableFrame(){
        super("Таблица");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        DefaultTableModel mod = new  DefaultTableModel(headers, 3);
        for (int i = 0; i < mod.getRowCount(); i ++){
            mod.setValueAt("пункт № " + (i + 1) ,i,0);
            mod.setValueAt(new JComboBox(items),i,1);
        }
        JTable table = new JTable(mod);
        TableColumn col = table.getColumnModel().getColumn(1);
        col.setCellEditor(new Editor());
        col.setCellRenderer(new Rend());
        table.setSelectionMode(0);
        getContentPane().add(new JScrollPane(table));
        setSize(200,200);
        setVisible(true);
    }

    public static void main(String [] args){
        try{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            new TableFrame();
        }
        catch(Exception e){

        }
    }
    public class Rend extends JComboBox implements TableCellRenderer {
        Rend(){
            super(items);
        }

         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
             setSelectedItem(value);
             return this;
        }
    }
    public class Editor extends DefaultCellEditor {
        public Editor() {
            super(new JComboBox(items));
        }
    }
}

PM MAIL   Вверх
SySaD
Дата 21.3.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Renderer отвечает за статическое отображение ячейки, Editor - за работу с ячейкой (когда редактируешь).
Я писал классы как implements TableCellEditor и  implements TableCellRenderer. Создал класс для хранения инфы, отображаемой в ячейке (список элементов и выбранный элемент). В принципе достаточно все понятно описано в javadoc и 
http://www.exampledepot.com/egs/javax.swin...e/ComboBox.html
http://www.crionics.com/products/opensourc...eExamples2.html
http://java.sun.com/docs/books/tutorial/ui...e.html#combobox

если нужны детали - пиши в личку - недавно сам разбирался с этим вопросом - помогу чем смогу

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


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

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