The scrollpane for a image in Jtable is only showing but not working ....here is the code i am doing please suggest something...
import java.awt.Component; import java.io.FileReader; import java.util.StringTokenizer; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer;
public class TableImage extends javax.swing.JFrame {
/**
* Creates new form TableImage
*/
public TableImage() {
initComponents();
}
private void initComponents() {
jFileChooser1 = new javax.swing.JFileChooser();
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("BROWSE");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jTextField1.setText("jTextField1");
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"NAME", "CITY", "Title 3"
}
));
jTable1.setRowHeight(150);
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(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(128, 128, 128)
.addComponent(jButton1)
.addGap(181, 181, 181))
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 697, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(34, 34, 34)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
jFileChooser1.showOpenDialog(this);
String path=jFileChooser1.getSelectedFile().getAbsolutePath();
//txtname.setText(path);
FileReader file=new FileReader(path);
String header[]={"NAME","Address","Contact","Email","IMAGE"};
Object[][] data=new Object[50][5];
String record="";
for(int i=file.read();i!=-1;i=file.read())
record+= (char)i;
StringTokenizer stt=new StringTokenizer(record,"\n");
for(int i=0;stt.hasMoreTokens();i++){
StringTokenizer st=new StringTokenizer(stt.nextToken(),"\t");
jTable1.setValueAt(st.nextToken(), i, 0);
jTable1.setValueAt(st.nextToken(), i, 1);
// jTable1.setValueAt(st.nextToken(), i, 2);
jTable1.setValueAt(new ImageIcon(st.nextToken().trim()),i,2);
jTable1.getColumnModel().getColumn(2).setCellRenderer(new TableCellRender());
}}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e,"file not Saved",JOptionPane.ERROR_MESSAGE);
}
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(TableImage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(TableImage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(TableImage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(TableImage.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new TableImage().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JFileChooser jFileChooser1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
class TableCellRender extends DefaultTableCellRenderer
{
JLabel lbl=new JLabel();
JLabel lbl1=new JLabel();
private Icon Imageicon;
@Override
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasfocus,int row,int col)
{
lbl.setIcon((ImageIcon)value);
JScrollPane pane =new JScrollPane(lbl);
return pane;
}
}
}