我JTable使用以下代码将单元格渲染更改为显示图像而不是文本:
JTable
base_table.getColumnModel().getColumn(3).setCellRenderer(new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable jtable, Object value, boolean bln, boolean bln1, int i, int i1) { JLabel lbl = new JLabel(); lbl.setIcon((ImageIcon) value); return lbl; } });
现在,我希望能够获取中的每一行的图像JTable,以便将其保存在数据库中。我该怎么办?
我无法抗拒这样的例子
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.*; import javax.swing.table.*; public class TableIcon extends JFrame implements Runnable { private static final long serialVersionUID = 1L; private JTable table; private JLabel myLabel = new JLabel("waiting"); private int pHeight = 40; private boolean runProcess = true; private int count = 0; public TableIcon() { ImageIcon errorIcon = (ImageIcon) UIManager.getIcon("OptionPane.errorIcon"); ImageIcon infoIcon = (ImageIcon) UIManager.getIcon("OptionPane.informationIcon"); ImageIcon warnIcon = (ImageIcon) UIManager.getIcon("OptionPane.warningIcon"); String[] columnNames = {"Picture", "Description"}; Object[][] data = {{errorIcon, "About"}, {infoIcon, "Add"}, {warnIcon, "Copy"},}; DefaultTableModel model = new DefaultTableModel(data, columnNames) { private static final long serialVersionUID = 1L; // Returning the Class of each column will allow different // renderers to be used based on Class @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; table = new JTable(model); table.setRowHeight(pHeight); table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); myLabel.setPreferredSize(new Dimension(200, pHeight)); myLabel.setHorizontalAlignment(SwingConstants.CENTER); add(myLabel, BorderLayout.SOUTH); new Thread(this).start(); } public void run() { while (runProcess) { try { Thread.sleep(1250); } catch (Exception e) { e.printStackTrace(); } SwingUtilities.invokeLater(new Runnable() { @Override public void run() { ImageIcon myIcon = (ImageIcon) table.getModel().getValueAt(count, 0); String lbl = "JTable Row at : " + count; myLabel.setIcon(myIcon); myLabel.setText(lbl); count++; if (count > 2) { count = 0; } } }); } } public static void main(String[] args) { TableIcon frame = new TableIcon(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setLocation(150, 150); frame.pack(); frame.setVisible(true); } }