如何将图像插入JTable单元格

有人可以向我指出如何向Java Table单元中添加图像的正确方向。



慕侠2389804
浏览 750回答 3
3回答

慕的地8271018

JTable已经为图标提供了默认的渲染器。您只需要告诉表在给定列中存储了哪些数据,以便它可以选择适当的渲染器。这是通过重写getColumnClass(...)方法来完成的:import java.awt.*;import javax.swing.*;import javax.swing.table.*;public class TableIcon extends JPanel{    public TableIcon()    {        Icon aboutIcon = new ImageIcon("about16.gif");        Icon addIcon = new ImageIcon("add16.gif");        Icon copyIcon = new ImageIcon("copy16.gif");        String[] columnNames = {"Picture", "Description"};        Object[][] data =        {            {aboutIcon, "About"},            {addIcon, "Add"},            {copyIcon, "Copy"},        };        DefaultTableModel model = new DefaultTableModel(data, columnNames)        {            //  Returning the Class of each column will allow different            //  renderers to be used based on Class            public Class getColumnClass(int column)            {                return getValueAt(0, column).getClass();            }        };        JTable table = new JTable( model );        table.setPreferredScrollableViewportSize(table.getPreferredSize());        JScrollPane scrollPane = new JScrollPane( table );        add( scrollPane );    }    private static void createAndShowGUI()    {        JFrame frame = new JFrame("Table Icon");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.add(new TableIcon());        frame.setLocationByPlatform( true );        frame.pack();        frame.setVisible( true );    }    public static void main(String[] args)    {        EventQueue.invokeLater(new Runnable()        {            public void run()            {                createAndShowGUI();            }        });    }}

元芳怎么了

要么先创建imageicon:ImageIcon icon = new ImageIcon("image.gif");table.setValueAt(icon, row, column);或者,您可以尝试覆盖图标字段的渲染器:static class IconRenderer extends DefaultTableCellRenderer {  public IconRenderer() { super(); }  public void setValue(Object value) {    if (value == null) {      setText("");    }    else    {      setIcon(value);    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java