powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Текущая строка в таблице JTable
2 сообщений из 2, страница 1 из 1
Текущая строка в таблице JTable
    #33743999
Suomi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем, всем доброго времени, помогите, плз, я создал таблику JTable на основе переопределения методов абстрактного класса AbstractTableModel и вот задача возникает, как по первому щелчку мышки на строке текущей получить ее номер,значение первого столбца в этой текущей строке и окрасить эту тек строку скажем в красный цвет, а если я щелкаю мышкой по этой окрашенной строке второй раз, то этот заданный красный цвет убирается.
Помогите люди добрые, очень нужно!


Код: 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.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
 public   class  SimpleTableClass  extends  JFrame {

     protected  JTable table;
   private  GridLayout gridLayout1 =  new  GridLayout();

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

     public  SimpleTableClass() {
      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);
      //jLabel1.setText(table.getSelectedRow());
      //int rowIndex = table.getSelectedRow();
      //System.out.println("Строка равна " + "" + rowIndex);


     try  {
      //jbInit();
    }
     catch (Exception e) {
      e.printStackTrace();
    }
    }
 

  }

 package  table;

 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;
  }

}
...
Рейтинг: 0 / 0
Текущая строка в таблице JTable
    #33744354
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про выделение строк я уже писал тебе, а теперь что касается раскраски:
Код: 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.
 public   class  ColorEditor  extends  AbstractCellEditor
                          implements  TableCellEditor,
                                    ActionListener {
    Color currentColor;
    JButton button;
    JColorChooser colorChooser;
    JDialog dialog;
     protected   static   final  String EDIT = "edit";

     public  ColorEditor() {
        button =  new  JButton();
        button.setActionCommand(EDIT);
        button.addActionListener( this );
        button.setBorderPainted(false);
        colorChooser =  new  JColorChooser();
        dialog = JColorChooser.createDialog(button,
                                        "Раскраска таблицы",
                                        true,  
                                        colorChooser,
                                         this ,      null ); 
    }

     public   void  actionPerformed(ActionEvent e) {
         if  (EDIT.equals(e.getActionCommand())) {
            button.setBackground(currentColor);
            colorChooser.setColor(currentColor);
            dialog.setVisible(true);
            fireEditingStopped(); 
        }  else  { 
            currentColor = colorChooser.getColor();
        }
    }
     public  Object getCellEditorValue() {
         return  currentColor;
    }
     public  Component getTableCellEditorComponent(JTable table,
                                                 Object value,
                                                  boolean  isSelected,
                                                  int  row,
                                                  int  column) {
        currentColor = (Color)value;
         return  button;
    }
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Текущая строка в таблице JTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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