JTable的某一个字段里面怎么放置图片呢?我这边放一个图片可以直接放icon,但是放多个就不知道该怎么放了

www203 2005-06-20 05:09:59
JTable的某一个字段里面怎么放置图片呢?
我这边放一个图片可以直接放icon,
但是放多个就不知道该怎么放了
请教大家
...全文
318 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
www203 2005-06-22
  • 打赏
  • 举报
回复
public Class getColumnClass(int c){
return this.getValueAt(0,c).getClass() ;
}

我如此写
但是反应不灵敏
System.out.println(this.getValueAt(0,c).getClass() ) ;
也能看出来是JTextPane

但是还是不行
fog628 2005-06-22
  • 打赏
  • 举报
回复
回复人: www203(水户洋平) ( ) 信誉:102 2005-06-21 15:26:00 得分: 0

这样啊
我上次用JTextPane可以插入图片
但是放到JTable
显示的就是字符串
而不是图片

===================================================================
JTable是利用绘制器来显示数据的,默认时ImageIcon最终绘制为图形,
Boolean绘制为CheckBox, Object就会调用toString()最终绘制为String,

JTable怎么确定哪一列是什么类型呢?那你得重写TableModel中的getColumnClass(),
以让JTable调用,最终来确定用什么绘制器


fog628 2005-06-22
  • 打赏
  • 举报
回复
代码帖出来看看
gtlang78 2005-06-21
  • 打赏
  • 举报
回复
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;

import javax.swing.*;

public class CompoundIcon implements Icon
{
private Icon[] icons = null;

public CompoundIcon(Icon[] icons)
{
this.icons = icons;
}

public void paintIcon(Component c, Graphics g, int x, int y)
{
int hei = getIconHeight();
for (int i = 0; i < icons.length; i++) {
Icon icon = icons[i];
int w = icon.getIconWidth();
int h = icon.getIconHeight();

icon.paintIcon(c, g, x, y + (hei - h) / 2);
x += w;
}
}

public int getIconWidth()
{
int wid = 0;
for (int i = 0; i < icons.length; i++) {
wid += icons[i].getIconWidth();
}
return wid;
}

public int getIconHeight()
{
int hei = 0;
for (int i = 0; i < icons.length; i++) {
hei = Math.max(hei, icons[i].getIconHeight());
}
return hei;
}

public static void main(String[] args)
{
Icon[] icons = new Icon[] {
new ImageIcon("C:/1.png"),
new ImageIcon("C:/2.png"),
new ImageIcon("C:/3.png")
};
Icon compoundIcon = new CompoundIcon(icons);
JLabel l = new JLabel(compoundIcon);
l.setBorder(BorderFactory.createLineBorder(Color.black));
JFrame f = new JFrame();
f.getContentPane().add(l, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);

}
}
www203 2005-06-21
  • 打赏
  • 举报
回复
我override了
但是用JLable只能显示一个图片对象
fog628 2005-06-21
  • 打赏
  • 举报
回复
JTable默认会把ImageIcon绘制成图像,把Boolean绘制成CheckBox

其它的就会调用toString()来显示,

你只要override TableModel中的getColumnClass(int)方法就好了,

这样JTable会调用此方法以确定怎么样绘制,
tomcatjava 2005-06-21
  • 打赏
  • 举报
回复
你可以把TableCellRenderer设置为JLabel,然后在其里面放置ImageIcon对象
www203 2005-06-21
  • 打赏
  • 举报
回复
没人关注
UP一下
www203 2005-06-21
  • 打赏
  • 举报
回复
这样啊
我上次用JTextPane可以插入图片
但是放到JTable
显示的就是字符串
而不是图片
fog628 2005-06-21
  • 打赏
  • 举报
回复
要不这样吧,你用一个JPanel,上面放几个JLabel,

再用JPanel来显示,应该可以的,
www203 2005-06-21
  • 打赏
  • 举报
回复
想去买一本书
不知道有什么好的推荐
www203 2005-06-21
  • 打赏
  • 举报
回复
楼上的可以把多个图片放到JLabel,JLabel应该可以显示到JTable吧?
晚上我回家看看去~~!
有达人知道的给个提示更好

62,614

社区成员

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

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