Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Прблема с JList и картинками. / 13 сообщений из 13, страница 1 из 1
17.08.2006, 12:19
    #33924311
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Решил в JList запихать картинок:
Код: 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.
 package  org.sarin.jlw.gui;

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

/**
 *
 * @author konstantinov
 */
 public   class  MainFrame  extends  JFrame{
	
	/** Creates a new instance of MainFrame */
	 public  MainFrame() {
		System.setProperty("proxySet", "true");
		System.setProperty("proxyHost", "some.proxy");
		System.setProperty("proxyPort", "3128");
		 this .setTitle("Advanced HTML editor for LJ");	
	
		 try {		
			URL imgURL =  new  URL("http://www.sql.ru/forum/images/laugh.gif");
			 this .smiles.add( new  SmileButton(imgURL));
			URL imgURL2 =  new  URL("http://www.sql.ru/forum/images/cry.gif");
			ImageIcon img =  new  ImageIcon(imgURL);
			Object[] listModel =  new  ImageIcon[ 3 ];
			listModel[ 0 ] = img;
			listModel[ 1 ] = img;
			 this .smilesList.setListData(listModel);
			 this .smiles.add( this .smileListScrol);
		}
		 catch (Exception e){
			e.printStackTrace();
		}	

		
		 this .workPane =  new  JSplitPane(JSplitPane.HORIZONTAL_SPLIT,  this .smiles,  this .wysiwyg);
		 this .workPane.setOneTouchExpandable(true);
		 this .getContentPane().add( this .workPane);

	}
	
	 private  JList smilesList =  new  JList();
	 private  JScrollPane smileListScrol =  new  JScrollPane(smilesList);
	 private  JEditorPane wysiwyg =  new  JEditorPane();
	 private  JPanel smiles =  new  JPanel();
	 private  SmilesTableModel smilesModel =  new  SmilesTableModel();
	 private  JSplitPane workPane;	
}
Так вот ведёт себя JList по свински. В плане отображения картинок. Он их не рисует. Кликнув на месте предполагаемого размещения картинки она покажется, но никакой анимированности не получается. Если кликнуть ещё разок картинка чуток изменится. К другому кадру перейдёт.
Если убрать вот эту строчку:
Код: plaintext
this.smiles.add(new SmileButton(imgURL));
или если картинки на кнопке и в списке разные, то картинки не покажутся хоть ты до смерти закликайся.

Мне это совсем не нравится.
...
Рейтинг: 0 / 0
17.08.2006, 12:33
    #33924389
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
нужно переопределить cellRenderer для ячейки, тогда будет красиво рисоваться
...
Рейтинг: 0 / 0
17.08.2006, 12:38
    #33924417
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Deadyнужно переопределить cellRenderer для ячейки, тогда будет красиво рисоваться
Ну я так и предполагал, если честно. Думал может проще способ есть.
...
Рейтинг: 0 / 0
17.08.2006, 13:03
    #33924521
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Нифига не помогло:
Код: 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.
 package  org.sarin.jlw.gui;

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

/**
 *
 * @author konstantinov
 */
 public   class  ListSmileRenderer  extends  JLabel  implements  ListCellRenderer{
	
	/** Creates a new instance of KistSmileRenderer */
	 public  ListSmileRenderer() {
		System.setProperty("proxySet", "true");
		System.setProperty("proxyHost", "proxy.reksoft.ru");
		System.setProperty("proxyPort", "3128");
	}
	
	 public  Component getListCellRendererComponent(JList list, Object value,  int  index,  boolean  isSelected,  boolean  hasFocus){
		 try {		
			 this .setText((String)value);
			URL imgURL =  new  URL((String)value);			
			ImageIcon img =  new  ImageIcon(imgURL);			
			 this .setIcon(img);
		}
		 catch (Exception e){
			e.printStackTrace();
		}
		
		 return   this ;
	}
	
}
...
Рейтинг: 0 / 0
17.08.2006, 13:25
    #33924626
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
надо не с this работать, а с value. value представляет как раз экземпляр ячейки, можно его как угодно расскрасить
...
Рейтинг: 0 / 0
17.08.2006, 13:34
    #33924670
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
точнее так:
расширяешь DefaultListCellRenderer, value - это тот объект, который хранится в списке (в модели). создаешь надпись, настраиваешь ее и возвращаешь:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public   class  ImageListCellRenderer  extends  DefaultListCellRenderer {
    public  Component getListCellRendererComponent(JList list, Object value,  int  idx,  boolean  isSelected,  boolean  hasFocus) {
       if  (value instance of _КЛАСС_ТВОЕГО_ОБЪЕКТА_) {
         _КЛАСС_ТВОЕГО_ОБЪЕКТА_ data = (_КЛАСС_ТВОЕГО_ОБЪЕКТА_)value;
         String text = data.getText();
         Icon icon = data.getIcon();
         JLabel label = (JLabel) super .getListCellRendererComponent(list, text, idx, isSelected, fasFocus);
         label.setIcon(icon);
          return  label;
      }
       else  {
          return   super .getListCellRendererComponent(list, value, idx, isSelected, fasFocus);
      }
   }
}

пример из Портянкина "Swing эффективные пользовательские интерфейсы", стр. 292
...
Рейтинг: 0 / 0
17.08.2006, 14:11
    #33924871
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Страшно лагает! Иногда картиночка появляется. Иногда нет. Ужос! Это у меня руки кривые, или свинг такой?
...
Рейтинг: 0 / 0
17.08.2006, 14:15
    #33924893
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Вообще сие есть моя тщетная попытка красиво расположить смайлики на панели. Почему-то когда их располагаеш на кнопочке, то всё красиво и нормально. Но вот кнопочки раскидать так чтоб они во что-то типа таблицы выстроились не получается.
...
Рейтинг: 0 / 0
17.08.2006, 14:42
    #33924996
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
воспользуйся GridLayout
...
Рейтинг: 0 / 0
17.08.2006, 14:56
    #33925044
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Deadyвоспользуйся GridLayout
Чем-то он меня не устроил. Щас ещё разок попробую.
...
Рейтинг: 0 / 0
17.08.2006, 15:00
    #33925052
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
SarinСтрашно лагает! Иногда картиночка появляется. Иногда нет. Ужос! Это у меня руки кривые, или свинг такой?

код покажи
...
Рейтинг: 0 / 0
17.08.2006, 15:01
    #33925058
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Не. Ничё так. Покатит.
...
Рейтинг: 0 / 0
17.08.2006, 15:26
    #33925153
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прблема с JList и картинками.
Deady SarinСтрашно лагает! Иногда картиночка появляется. Иногда нет. Ужос! Это у меня руки кривые, или свинг такой?

код покажи
Не. Я уже через GridLayout сделал. От того кода почти ничего не осталось. Вот только рендерер есть:
Код: 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.
 package  org.sarin.jlw.gui;

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

/**
 *
 * @author konstantinov
 */
 public   class  ListSmileRenderer  extends  DefaultListCellRenderer{
	
	/** Creates a new instance of KistSmileRenderer */
	 public  ListSmileRenderer() {
		System.setProperty("proxySet", "true");
		System.setProperty("proxyHost", "192.168.170.0");
		System.setProperty("proxyPort", "3128");
	}
	
	 public  Component getListCellRendererComponent(JList list, Object value,  int  index,  boolean  isSelected,  boolean  hasFocus){
		JLabel label = (JLabel) super .getListCellRendererComponent(list, (String)value, index, isSelected, hasFocus);
		//label.setText((String)value);
		 try {		
			 this .setText((String)value);
			URL imgURL =  new  URL((String)value);			
			ImageIcon img =  new  ImageIcon(imgURL);
			label = (JLabel) super .getListCellRendererComponent(list, (Icon)img, index, isSelected, hasFocus);
		}
		 catch (Exception e){
			e.printStackTrace();
		}
		
		 return  label;
	}
	
}
В JList просто массив строк пихался которые являлись УРЛами к картинкам
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Прблема с JList и картинками. / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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