powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Прблема с JList и картинками.
13 сообщений из 13, страница 1 из 1
Прблема с JList и картинками.
    #33924311
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.
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
Прблема с JList и картинками.
    #33924389
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно переопределить cellRenderer для ячейки, тогда будет красиво рисоваться
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33924417
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deadyнужно переопределить cellRenderer для ячейки, тогда будет красиво рисоваться
Ну я так и предполагал, если честно. Думал может проще способ есть.
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33924521
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нифига не помогло:
Код: 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
Прблема с JList и картинками.
    #33924626
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо не с this работать, а с value. value представляет как раз экземпляр ячейки, можно его как угодно расскрасить
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33924670
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее так:
расширяешь 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
Прблема с JList и картинками.
    #33924871
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страшно лагает! Иногда картиночка появляется. Иногда нет. Ужос! Это у меня руки кривые, или свинг такой?
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33924893
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще сие есть моя тщетная попытка красиво расположить смайлики на панели. Почему-то когда их располагаеш на кнопочке, то всё красиво и нормально. Но вот кнопочки раскидать так чтоб они во что-то типа таблицы выстроились не получается.
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33924996
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воспользуйся GridLayout
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33925044
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deadyвоспользуйся GridLayout
Чем-то он меня не устроил. Щас ещё разок попробую.
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33925052
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinСтрашно лагает! Иногда картиночка появляется. Иногда нет. Ужос! Это у меня руки кривые, или свинг такой?

код покажи
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33925058
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не. Ничё так. Покатит.
...
Рейтинг: 0 / 0
Прблема с JList и картинками.
    #33925153
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Прблема с JList и картинками.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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