Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JCheckBox в JTable / 10 сообщений из 10, страница 1 из 1
23.01.2006, 15:04
    #33497538
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Всем привет!

Помогите разобраться .
Есть табличка. Надо в нее вставить колонку с JCheckBox'ами.
Вот кусочек кода: подправте как надо правильно :

Код: plaintext
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.
             while (resultSet.next())
            {
                Object[] row =  new  Object[columnCount];
                 boolean  tt = false;
	            // Индексация в ResultSet начинается с 1,  а не с 0.
	             for ( int  i= 1 ; i<columnCount+ 1 ; i++)
                {
                    Object entry = resultSet.getObject(i);
                     if (i== 9  && entry!= null )
                    {
                         row[i -  1 ] = zvvidList[Integer.parseInt(entry.toString().trim())];
                    }
                     else   if (i== 9  && entry== null )
                    {
                        row[i -  1 ] = zvvidList[ 0 ];
                    }
                     else   if  (i!= 9  && i!=  11 )
                    {
                         row[i- 1 ] = entry;
                    }
                     else   if  (i== 11 )
                    {
                         row[i- 1 ] =  Boolean .valueOf(entry.toString().trim());// Вот здесь я хочу вывести JCheckBox, а уменя выводится слово false.

                    }
		        }
                dbResults.addRow(row);
	        }
...
Рейтинг: 0 / 0
23.01.2006, 16:19
    #33497801
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Вот модель таблицы

Код: plaintext
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.
 public   class  DBResultsTableModelBorg  extends  AbstractTableModel
{
     private   int  Z= 0 ;        
     public  DBResultsBorg results;
     private  IntTextBean intbn;

     public  DBResultsTableModelBorg(DBResultsBorg results)
    {
          this .results = results;
    }
     public   int  getRowCount() 
    {
          return (results.getRowCount());
    }
     public   int  getColumnCount() 
    {
          return (results.getColumnCount());
    }
     public  String[] getColumnNamesEng()
    {
          return (results.getColumnNamesEng());
	}
     public  String[] getColumnNames()
    {
          return (results.getColumnNames());
    }
     public  String getColumnName( int  c)
    {
         return  results.getColumnNames()[c];
    }

     public  Object getValueAt( int  row,  int  column)
    {
          return (results.getRow(row)[column]);
    }

     public   void  setValueAt(Object aValue,  int  row,  int  column)
    {
         if (column== 11 )
        {
             if  (!results.getRow(row)[column].equals((String)aValue)) {setZ( 1 );}
                results.getRow(row)[column]= ( Boolean )aValue;
        }
         else 
        {
             if  (!results.getRow(row)[column].equals((String)aValue)) {setZ( 1 );}
                results.getRow(row)[column]= (String)aValue;
        }
            fireTableCellUpdated(row, column);
    }

    public   Class  getColumnClass( int  c)
   {
        return  getValueAt( 0 , c).getClass();
   }
    public   void  removeRow( int  row)
   {
         results.removeRow(row);
    }
     public   int [] getColumnTypes()
    {
          return (results.getColumnTypes());
    }
     public  String[] getColumnTypesNames()
    {
          return (results.getColumnTypesNames());
    }

     public   boolean  isCellEditable( int  row,  int  column)
    {
     if  (results.getRow(row)[ 8 ].trim().equals(""))
       {
            if  (column== 0  || column== 3  || column== 8 )
           {
                 return  false;
           }
            else 
           {
                return  true;
           }
        }
         else 
        {
            return  false;
        }
         return  false;
    }
}
...
Рейтинг: 0 / 0
23.01.2006, 16:22
    #33497824
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
тынц

ЗЫ первая ссылка в запросе к гуглу :)
...
Рейтинг: 0 / 0
23.01.2006, 16:33
    #33497872
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Timm тынц

ЗЫ первая ссылка в запросе к гуглу :)

У меня тоже хорошая ссылка есть:
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/index.html#TableToolTipsDemo
...
Рейтинг: 0 / 0
23.01.2006, 16:35
    #33497881
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Заклинило и не могу выкарабкаться...
...
Рейтинг: 0 / 0
23.01.2006, 17:23
    #33498024
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Я делаю запрос из таблицы ORACLE.

Код: plaintext
select vasja,katja,'false' from nebo

Как из этого запроса построить таблицу c JCheckBox
...
Рейтинг: 0 / 0
23.01.2006, 17:38
    #33498054
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Код: plaintext
1.
2.
3.
    public   Class  getColumnClass( int  c)
   {
        return  getValueAt( 0 , c).getClass();
   }
что возвращает для колонки с true/false?
надо сделать так, чтобы возвращал java.lang.Boolean.class
...
Рейтинг: 0 / 0
23.01.2006, 18:26
    #33498147
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Timm
Код: plaintext
1.
2.
3.
    public   Class  getColumnClass( int  c)
   {
        return  getValueAt( 0 , c).getClass();
   }
что возвращает для колонки с true/false?
надо сделать так, чтобы возвращал java.lang.Boolean.class

Я добилась этого. Но в самой таблице светится слово "false" либо "true".
...
Рейтинг: 0 / 0
23.01.2006, 18:43
    #33498193
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
сделал все как в первой ссылке :-) работает ))
Код: plaintext
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.
 import  java.util.Calendar;
 import  java.util.GregorianCalendar;
 import  javax.swing.table.AbstractTableModel;

 public   class  TableValues  extends  AbstractTableModel {

   public   final   static   int  FIRST_NAME =  0 ;
   public   final   static   int  LAST_NAME =  1 ;
   public   final   static   int  DATE_OF_BIRTH =  2 ;
   public   final   static   int  ACCOUNT_BALANCE =  3 ;
   public   final   static   int  GENDER =  4 ;

   public   final   static   boolean  GENDER_MALE = true;
   public   final   static   boolean  GENDER_FEMALE = false;

   public   final   static  String[] columnNames = {
    "First Name", "Last Name", "Date of Birth", "Account Balance", "Gender"
  };

   public  Object[][] values = {
     {
      "Clay", "Ashworth", 
       new  GregorianCalendar( 1962 , Calendar.FEBRUARY,  20 ).getTime(), 
       new   Float ( 12345 . 67 ),  new   Boolean (GENDER_MALE)
    }, {
      "Jacob", "Ashworth", 
       new  GregorianCalendar( 1987 , Calendar.JANUARY,  6 ).getTime(), 
       new   Float ( 23456 . 78 ),  new   Boolean (GENDER_MALE)
    }, {
      "Jordan", "Ashworth", 
       new  GregorianCalendar( 1989 , Calendar.AUGUST,  31 ).getTime(), 
       new   Float ( 34567 . 89 ),  new   Boolean (GENDER_FEMALE)
    }, {
      "Evelyn", "Kirk", 
       new  GregorianCalendar( 1945 , Calendar.JANUARY,  16 ).getTime(), 
       new   Float (- 456 . 70 ),  new   Boolean (GENDER_FEMALE)
    }, {
      "Belle", "Spyres", 
       new  GregorianCalendar( 1907 , Calendar.AUGUST,  2 ).getTime(), 
       new   Float ( 567 . 00 ),  new   Boolean (GENDER_FEMALE)
    }
  };

   public   int  getRowCount() {
     return  values.length;
  } 

   public   int  getColumnCount() {
     return  values[ 0 ].length;
  } 

   public  Object getValueAt( int  row,  int  column) {
     return  values[row][column];
  } 

   public  String getColumnName( int  column) {
     return  columnNames[column];
  }

   public   Class  getColumnClass( int  column) {
     Class  dataType =  super .getColumnClass(column);
     if  (column == ACCOUNT_BALANCE) {
      dataType =  Float . class ;
    }
     else   if  (column == DATE_OF_BIRTH) {
      dataType = java.util.Date. class ;
    }
     else   if  (column == GENDER)
    {
        dataType = java.lang. Boolean . class ;
    }
     return  dataType;
  }

} 
Код: plaintext
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.
   import  java.awt.*;
   import  javax.swing.*;
   import  javax.swing.table.*;

   public   class  SimpleTableTest  extends  JFrame {

     protected  JTable table;

     public   static   void  main(String[] args) {
      SimpleTableTest stt =  new  SimpleTableTest();
      stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      stt.setSize( 400 ,  300 );
      stt.setVisible(true);
    } 

     public  SimpleTableTest() {
      Container pane = getContentPane();
      pane.setLayout( new  BorderLayout());
      TableValues tv =  new  TableValues();
      table =  new  JTable(tv);
      TableColumnModel tcm = table.getColumnModel();
      TableColumn tc = tcm.getColumn(TableValues.GENDER);
//      tc.setCellRenderer(new GenderRenderer());
      JScrollPane jsp =  new  JScrollPane(table);
      pane.add(jsp, BorderLayout.CENTER);
    }

  } 
...
Рейтинг: 0 / 0
23.01.2006, 23:14
    #33498507
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox в JTable
Timmсделал все как в первой ссылке :-) работает ))


Спасибо за помощь - помогло:))

Нашла еще такой способ:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
TableModel.getColumnClass( int  columnIndex)


DefaultTableModeltm = newDefaultTableModel()
{
    public   Class  getColumnClass( int  column)
   {
           return   Boolean . class ;
   }
}

...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JCheckBox в JTable / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]