图像未在JTable(Java Swing)中显示
嗨,我已经创建了以下代码。问题是图像未显示在JTable列中 我扩展了DefaultTableModel并重写了getColumnClass方法。有人建议这是一种方法。有什么线索吗?代码如下图像未在JTable(Java Swing)中显示,java,user-interface,swing,jtable,gui-designer,Java,User Interface,Swing,Jtable,Gui Designer,嗨,我已经创建了以下代码。问题是图像未显示在JTable列中 我扩展了DefaultTableModel并重写了getColumnClass方法。有人建议这是一种方法。有什么线索吗?代码如下 //package javaapplication12; import javax.swing.*; public class NewJFrame2 extends javax.swing.JFrame { /** Creates new form NewJFrame */ publi
//package javaapplication12;
import javax.swing.*;
public class NewJFrame2 extends javax.swing.JFrame {
/** Creates new form NewJFrame */
public NewJFrame2() {
initComponents();
}
public class imageTableModel extends javax.swing.table.DefaultTableModel
{
imageTableModel(Object[][] data, Object[] columnNames)
{
super(data,columnNames);
}
@Override
public Class getColumnClass(int column)
{
if (column == 0)
{
return ImageIcon.class;
}
return Object.class;
// other code; default to Object.class
}
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable1.setModel(new imageTableModel(
new Object [][] {
{new ImageIcon("simply.jpg"), "pp"},
},
new String [] {
"image", "name"
}
));
jScrollPane1.setViewportView(jTable1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(19, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(19, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame2().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
//包javaapplication12;
导入javax.swing.*;
公共类NewJFrame2扩展了javax.swing.JFrame{
/**创建新表单NewJFrame*/
公共NewJFrame2(){
初始化组件();
}
公共类imageTableModel扩展了javax.swing.table.DefaultTableModel
{
imageTableModel(对象[][]数据,对象[]列名称)
{
超级(数据、列名称);
}
@凌驾
公共类getColumnClass(int列)
{
如果(列==0)
{
返回ImageIcon.class;
}
返回Object.class;
//其他代码;默认为Object.class
}
}
私有组件(){
jScrollPane1=newjavax.swing.JScrollPane();
jTable1=newjavax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable1.setModel(新的imageTableModel(
新对象[][]{
{newImageIcon(“simply.jpg”),“pp”},
},
新字符串[]{
“图像”、“名称”
}
));
jScrollPane1.setViewportView(jTable1);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED\u SIZE,375,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addContainerGap(19,简称最大值))
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,275,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(19,简称最大值))
);
包装();
}//
/**
*@param指定命令行参数
*/
公共静态void main(字符串参数[]){
invokeLater(new Runnable()){
公开募捐{
新建NewJFrame2().setVisible(true);
}
});
}
//变量声明-不修改
私有javax.swing.JScrollPane-jScrollPane1;
私有javax.swing.JTable jTable1;
//变量结束声明
}
这是正确的方法,但是找不到正确的jpg。更改您的代码以将其作为资源URL进行查找,它应该能够正确地找到它。以下更改在我的机器上运行良好:
jTable1.setModel(new imageTableModel(
new Object [][] {
{new ImageIcon(getClass().getClassLoader().getResource("simply.jpg")), "pp"},
},
new String [] {
"image", "name"
}
));
这是正确的方法,但是没有正确找到您的jpg。更改您的代码以将其作为资源URL进行查找,它应该能够正确地找到它。以下更改在我的机器上运行良好:
jTable1.setModel(new imageTableModel(
new Object [][] {
{new ImageIcon(getClass().getClassLoader().getResource("simply.jpg")), "pp"},
},
new String [] {
"image", "name"
}
));
副本。你没有试过任何建议的答案吗?我试着走最简单的路线。如果你用谷歌搜索jtable图像单元格。它为您指向重复的。你没有试过任何建议的答案吗?我试着走最简单的路线。如果你用谷歌搜索jtable图像单元格。它指向你