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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А как вставить картинку в ячейку таблицы??? 
:(
    Опции темы
Alone
Дата 11.12.2003, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

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



собственно сабж...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 11.12.2003, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Переопределить обработчик prepareRenderer для JTable.

В него передается объект TableCellRenderer и номер строки и столбца.
TableCellRenderer - интерфейс, но реально передается DefaultTableCellRenderer, который наследуется от JLabel.
И рисуй что хочешь.
PM MAIL WWW ICQ   Вверх
Alone
Дата 11.12.2003, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

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



Намек понял, пасиб smile.gif


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Alone
Дата 20.2.2004, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

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



Так и не разобрался до конца... Можно пример или урлconfused.gif sad.gif


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 20.2.2004, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Рисуем иконку и текст

Код

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

public class Focus extends JFrame
{
 public Focus()
 {
   MyTable assa = new MyTable(5,2);

   getContentPane().add(assa);
   setBounds(100,100,500,500);
 }

 public static void main(String[] args)
 {
   Focus my = new Focus();
   my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   my.setVisible(true);
 }
}

class MyTable extends JTable
{
 private ImageIcon m_icon = new ImageIcon("close.gif");

 public MyTable(int rows, int columns)
 {
   super(rows, columns);
 }

 public Component prepareRenderer(TableCellRenderer renderer,
                                  int row,
                                  int column)  
 {
   DefaultTableCellRenderer cmp =
       (DefaultTableCellRenderer)super.prepareRenderer(renderer, row, column);

   cmp.setIcon(m_icon);
   cmp.setText(row+":"+column);

   return cmp;
 }
}


Можно переопределить TableCellRenderer и рисовать прямо в нем - это немного сложнее, зато интереснее smile.gif
PM MAIL WWW ICQ   Вверх
Alone
Дата 20.2.2004, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

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



Вот кстати, нашел такой варант:
Код

tbl=new javax.swing.JTable{
           public javax.swing.table.TableCellRenderer getCellRenderer(int row, int column) {
               javax.swing.table.TableColumn tableColumn = getColumnModel().getColumn(column);
               javax.swing.table.TableCellRenderer renderer = tableColumn.getCellRenderer();
               if (renderer == null) {
                   Class c = getColumnClass(column);
                   if( c.equals(Object.class) ) {
                       Object o = getValueAt(row,column);
                       if( o != null )
                           c = getValueAt(row,column).getClass();
                   }
                   renderer = getDefaultRenderer(c);
               }
               return renderer;
           }
       };



а потом
javax.swing.ImageIcon img=new javax.swing.ImageIcon(getClass().getResource("/img/20x20/leftarrow.png"));

tbl.setValueAt(img,0, 0);
Так нормально будет?


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

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


Увлеченный
***


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

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



А вот еще вариант. Через AbstractTableModel.
Мне так больше нравится..
Вот работающий код:
Код
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.table.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
import javax.swing.filechooser.*;
import javax.accessibility.*;

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import java.applet.*;
import java.net.*;

public class TableImage {
   private JFrame MainFrame;

   public TableImage() {
       MainFrame = this.createFrame();
       
       return;
   }
   
   private JFrame createFrame(){
       
       JFrame frame = new JFrame("TableImageDemo");
       frame.setSize(300,300);
       frame.addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent e){
               System.exit(0);
           }
           });
       JScrollPane sp = new JScrollPane(this.createTable());
       frame.getContentPane().add(sp);    
       frame.setVisible(true);    
       return frame;
       
   }
   
   private JTable createTable(){
       ImageIcon im = new ImageIcon("im1.jpg");
       final Object[][] rowData = {{"1",im},{"3",im},{"5",im}};
       final String[] columnNames = {"1-st column","2-nd column"};
       TableModel dataModel = new AbstractTableModel() {
            public int getColumnCount() { return columnNames.length; }
            public int getRowCount() { return rowData.length;}
            public Object getValueAt(int row, int col) {return rowData[row][col];}
            public String getColumnName(int column) {return columnNames[column];}
            public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
            public boolean isCellEditable(int row, int col) {return col != 5;}
            public void setValueAt(Object aValue, int row, int column) {                              rowData[row][column] = aValue; }
         };
       JTable table = new JTable(dataModel);
     
       return table;
   }
   
   public static void main(String[] args) {
       TableImage TI = new TableImage();
       return;
   }
   
}

Естественно, должна быть картинка im1.jpg.
Пусть вас не пугает обилие import - мне просто лень было это прописывать - я взял блок import с другой программки.. smile.gif
.. тоже вариант, вобщем.. smile.gif



--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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