在ComboBox里面怎么加入动态图片(例如动态聊天表情)

usercore 2007-01-29 09:22:54
如题
...全文
538 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
usercore 2007-02-06
  • 打赏
  • 举报
回复
非常感谢
ts2794 2007-02-06
  • 打赏
  • 举报
回复
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
public class ImageTest extends JFrame//图片缩放
{
JLabel lb;
Image img;
Container c;
public ImageTest(){
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,10,500,500);
setVisible(true);
c=getContentPane();
c.setLayout(null);
img=Toolkit.getDefaultToolkit().getImage("E:\\editprj\\src\\com\\geostar\\client\\geosurfEditor\\1.jpg");
Image ig=img.getScaledInstance(100,100,Image.SCALE_DEFAULT);
lb=new JLabel(new ImageIcon(ig));
lb.setBounds(0,0,300,300);
c.add(lb);
//draw();
repaint();
}

private void draw(){
Graphics g=lb.getGraphics();
g.drawImage(img,0,0,200,200,lb);
}

public static void main(String[] args)
{
new ImageTest();
}
}
vkings 2007-02-04
  • 打赏
  • 举报
回复
高手.厉害!学习ing.:)
gtlang78 2007-02-04
  • 打赏
  • 举报
回复
import java.awt.BorderLayout;
import java.awt.Component;
import java.io.File;
import java.io.FileFilter;
import java.util.HashMap;
import java.util.Map;

import javax.swing.*;

public class T {
public static void main(String[] args) {
File iconDir = new File("C:/images/");
final File[] iconFiles = iconDir.listFiles(new FileFilter() {
public boolean accept(File file)
{
return file.getName().toLowerCase().endsWith(".gif");
}
});

final JComboBox comboBox = new JComboBox(iconFiles);
final Map<File, ImageIcon> fileIconMap = new HashMap<File, ImageIcon>();

comboBox.setRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
ImageIcon oldIcon = (ImageIcon)getIcon();
if (oldIcon != null) {
oldIcon.setImageObserver(null);
}

File iconFile = (File) value;
ImageIcon newIcon = fileIconMap.get(iconFile);
if (newIcon == null) {
newIcon = new ImageIcon(iconFile.getPath());
fileIconMap.put(iconFile, newIcon);
}

if (newIcon != null) {
if (index == -1) {
newIcon.setImageObserver(comboBox);
}
else {
newIcon.setImageObserver(list);
}
}

String text = iconFile.getName();

super.getListCellRendererComponent(
list, text, index, isSelected, cellHasFocus);
setIcon(newIcon);

return this;
}
});

JFrame f = new JFrame();
f.getContentPane().add(comboBox, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

vkings 2007-02-03
  • 打赏
  • 举报
回复
To:gtlang78()
请问怎样实现显示多张图片呢?
比如在我的磁盘上有一个专门用来存放头像图片的文件夹,我现在想实现头像选择功能,所以需要把这些图片都加到JComboBox里去,请问怎样实现?
XXKKFF 2007-01-31
  • 打赏
  • 举报
回复
牛人啊!!
org
约翰羊 2007-01-31
  • 打赏
  • 举报
回复
学习,
gtlang78的代码没问题,
相同的图片,XXKKFF的程序,gif不会动.
gtlang78 2007-01-30
  • 打赏
  • 举报
回复
import java.awt.BorderLayout;
import java.awt.Component;

import javax.swing.*;

public class T {
public static void main(String[] args) {
final ImageIcon icon = new ImageIcon("C:/test.gif");

final JComboBox comboBox = new JComboBox(new String[] { "Item1", "Item2", "Item3" });
comboBox.setRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
if (index == -1) {
icon.setImageObserver(comboBox);
}
else {
icon.setImageObserver(list);
}

super.getListCellRendererComponent(
list, value, index, isSelected, cellHasFocus);
setIcon(icon);

return this;
}
});

JFrame f = new JFrame();
f.getContentPane().add(comboBox, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

usercore 2007-01-30
  • 打赏
  • 举报
回复
不 可以 呀
不过还是谢谢你
约翰羊 2007-01-30
  • 打赏
  • 举报
回复
记号
XXKKFF 2007-01-30
  • 打赏
  • 举报
回复
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

class JComboBoxDemo
{
JFrame mainFrame;
JComboBox simpleComboBox;
public JComboBoxDemo() {
mainFrame = new JFrame ( "JComboBoxDemo" );
Vector<String> cbData = new Vector<String>();
for(int i=0; i<2; i++){
cbData.add(""+i+".gif");
}
simpleComboBox = new JComboBox( cbData);
simpleComboBox.setPreferredSize( new Dimension(20,50) );
simpleComboBox.setMaximumRowCount(8);
simpleComboBox.setRenderer( new CustomComboBoxRenderer() );
mainFrame.getContentPane().add( simpleComboBox );
simpleComboBox.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent e){
System.out.println( "selection changed" );
System.out.println( simpleComboBox.getSelectedItem() );
}
});
simpleComboBox.setCursor( new Cursor(Cursor.HAND_CURSOR) );
mainFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
mainFrame.pack();
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible( true );
}

public static void main(String[] args)
{
new JComboBoxDemo();
}

class CustomComboBoxRenderer extends JLabel implements ListCellRenderer{
CustomComboBoxRenderer(){
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);

}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
String imageFileName = (String)value;
ImageIcon labelIcon = new ImageIcon( imageFileName );
setText( imageFileName.substring(imageFileName.lastIndexOf('/')+1) );
setIcon( labelIcon );
return this;
}
}
}
如果图片不会动,可能是所用gif图片的版本问题
具体我也不知道
journeydj 2007-01-29
  • 打赏
  • 举报
回复
到目前我学过的知识 只能加字符串........ 偶初学者 学习一下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧