如何将数据库中的图像插入到JTable中

时间:2014-12-18 08:37:31

标签: java database image swing jtable

我尝试将我的图像从数据库插入JTable但是,它无法显示。我怎样才能克服这个问题?

public void loadData(ArrayList<Monster> monsters) {
    /**
     * Collection of Cell Example : Gondar 45 56 78 4 Axe 34 67 90 5
     */
    Vector<Vector<String>> data = new Vector<Vector<String>>();
    for (Monster item : monsters) {
        Vector<String> dataRow = new Vector<String>();
        dataRow.add("" + new ImageIcon(getClass().getResource("/images/monster/"+item.getAvatarUrl())));
        dataRow.add("" + item.getName());
        dataRow.add("" + item.getHp());
        dataRow.add("" + item.getDp());
        dataRow.add("" + item.getAp());
        dataRow.add("" + item.getLevel());
        data.add(dataRow);
    }
    this.setDataVector(data, columnElement);
}

1 个答案:

答案 0 :(得分:1)

1)似乎你从classpath而不是db获得Icon。 2)您需要将ImageIcon添加到TableModel,但是添加String而不是{。}}。

您可以覆盖getColumnClass的{​​{1}}方法,返回TableModel以获取正确的列,并在该列中存储Icon.class。例如:

ImageIcon

以下是存储import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class TestFrame extends JFrame { public static void main(String... s){ new TestFrame(); } public TestFrame() { init(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setLocationRelativeTo(null); setVisible(true); } private void init() { DefaultTableModel model = new DefaultTableModel(0,3){ @Override public Class<?> getColumnClass(int columnIndex) { if(columnIndex == 1){ return Icon.class; } return super.getColumnClass(columnIndex); } }; ImageIcon icon = new ImageIcon(TestFrame.class.getResource("1.png")); model.addRow(new Object[]{"1",icon,"2"}); JTable t = new JTable(model); add(new JScrollPane(t)); } } 的第二列TableModel中的一行,ImageIcon知道如何使用列类JTable显示它。

enter image description here