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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Model-Renderer-Editor 
:(
    Опции темы
sol78
Дата 11.9.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите найти ошибку в коде...
Нужно что бы ячейка таблицы реагировала на изменения...
Код

package GUI.Models.Editor;

import ManageMonitor.*;
import javax.swing.table.*;
import java.awt.event.*;
import java.awt.Component;
import javax.swing.*;
import java.util.EventObject;
import javax.swing.event.CellEditorListener;

public class StatusEditor extends AbstractCellEditor implements TableCellEditor {

    private JCheckBox  m_chbCtrl;
    private Folder folder;

    public StatusEditor() {
        m_chbCtrl=new JCheckBox();

    }

    public Object getCellEditorValue() {
        System.out.println(folder);
        return folder;
    }

    public boolean isCellEditable(EventObject anEvent) {
        return true;
    }


    public Component getTableCellEditorComponent(JTable table, Object value,
                                                 boolean isSelected, int row,
                                                 int column) {
        folder=(Folder)value;
        boolean state=folder.getStateAction();
         System.out.println(state);
       if(state){
           m_chbCtrl.setText("Active");
       }else{
           m_chbCtrl.setText("Disable");
       }
       m_chbCtrl.setSelected(state);

       return m_chbCtrl;
    }
}
 
Код


package GUI.Models.Renderer;

import ManageMonitor.*;
import javax.swing.table.*;
import java.awt.Component;
import javax.swing.*;

public class StatusRenderer implements TableCellRenderer {
    private JCheckBox m_chbCtrl = new JCheckBox();
    private Folder folder;

    public StatusRenderer() {
    
    }

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
       folder=((Folder)value);
        boolean state = folder.getStateAction();
        if (state) {
            m_chbCtrl.setText("Active");
        } else {
            m_chbCtrl.setText("Disable");
        }
        m_chbCtrl.setSelected(state);
        return m_chbCtrl;
    }
}


Код


package GUI.Models;

import DataBase.*;
import ManageMonitor.*;
import GUI.Controls.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.TableModelListener;

public class ManageMonitorModel extends AbstractTableModel{
    private ControlDB db=ControlDB.getInstance();
    private ArrayList m_Folders=new ArrayList();

    public ManageMonitorModel() {
        Folder currentFolder;

       for(int ind=0; ind<db.getCountFolderRecords();ind++){
            currentFolder=db.getFolderIndexOf(ind);
            m_Folders.add(ind,currentFolder);
//           m_Process.add(ind,new Thread(currentFolder));
//
//            if(currentFolder.getStateAction()){
//               // currentFolder.run();
//               ((Thread) m_Process.get(ind)).start();
//           }
        }
    }

    public int getColumnCount() {
        return 5;
    }

    public int getRowCount() {
        return m_Folders.size();
    }

    public Object getValueAt(int rowIndex, int columnIndex) {

        switch (columnIndex) {
        case 0:
            return rowIndex+1;
        case 1:
            return  m_Folders.get(rowIndex);
        case 2:
            return new JComboBox();
        case 3:
           return  ((Folder) m_Folders.get(rowIndex));
        case 4:
            return m_Folders.get(rowIndex);
        }
        return null;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
        case 0:
            return "N";
        case 1:
            return "Folder Name";
        case 2:
            return "Plagin";
        case 3:
            return "Status";
        case 4:
            return "Working Process";
        }
        return new String("NULL");
    }

    public Class getColumnClass(int columnIndex) {
        switch (columnIndex) {
        case 0:
            return String.class;
        case 1:
            return Folder.class;//FolderNameControl.class;
        case 2:
            return JComboBox.class;
        case 3:
            return Folder.class;
        case 4:
            return Folder.class;//ProccessWorkControl.class;
        default:
            return Object.class;
        }
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        if(columnIndex>=1 && columnIndex<=3){
            return true;
        }
        return false;
    }

    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    Folder currentFolder=(Folder)m_Folders.get(rowIndex);
        switch (columnIndex) {
        case 0: //N
            break;
        case 1://FolderName
            break;
        case 2://Plagin
            break;
        case 3://Status
              currentFolder.setStateAction(((Folder)aValue).getStateAction());
            break;
        case 4://Work Process
            break;
        }
        m_Folders.set(rowIndex,currentFolder);
        this.fireTableDataChanged();
        
}




}



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


Опытный
**


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

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



Как сообщить модели, что она изменилась?
Дело в том, что модель "автоматически" изменяется, при потере фокуса на чекбоксе, я хочу что бы это происходило на каждый щелчек мыши....
Как? 
PM MAIL   Вверх
nornad
Дата 12.9.2007, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А так не пойдёт - model.fireTableDataChanged() ? (метод AbstractTableModel)


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0418 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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