Adding JButton to JTable
First we are going to create a class which extends Cell Renderer.
ie.
public class Renderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
if(value instanceof JButton){
JButton Button = (JButton)value;
return (JButton)value;
}
else{
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
}
Then create a class MyModel which extends Default Table Model.
ie.
class MyModel extends javax.swing.table.DefaultTableModel{
Object[][] row = new Object[2][2];
Object[] col = {"File Name", "Status"};
public MyModel (){
row[0][0]=new JButton("This File"); //adds button
row[0][1]="HI";
row[1][0]=new JButton("That File"); //adds button
row[1][1]="BYE"; //adds button
}
pack();
//Adding columns
for(Object c: col)
this.addColumn(c);
//Adding rows
for(Object[] r: row)
addRow(r);
}
@Override
public Class getColumnClass(int columnIndex) {
if(columnIndex == 1)return getValueAt(0, columnIndex).getClass(); //Sets JButton on 1 column
else return super.getColumnClass(columnIndex);
}
}
Now to get your table working add the following lines in your JFrame constructor.
jTable1.setModel(new MyModel());
jTable1.setDefaultRenderer(JButton.class, new Renderer());
Adding JLabel to JTable
First we are going to create a class which extends Cell Renderer.
ie.
public class Renderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
if(value instanceof JLabel){
JLabel label = (JLabel)value;
return (JLabel)value;
}
else{
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
}
Then create a class MyModel which extends Default Table Model.
ie.
class MyModel extends javax.swing.table.DefaultTableModel{
Object[][] row = new Object[2][2];
Object[] col = {"File Name", "Status"};
public MyModel (){
row[0][0]=new JLabel("This File"); //adds label
row[0][1]="HI";
row[1][0]=new JLabel("That File"); //adds label
row[1][1]="BYE"; //adds label
}
pack();
//Adding columns
for(Object c: col)
this.addColumn(c);
//Adding rows
for(Object[] r: row)
addRow(r);
}
@Override
public Class getColumnClass(int columnIndex) {
if(columnIndex == 1)return getValueAt(0, columnIndex).getClass(); //Sets JLabel on 1 column
else return super.getColumnClass(columnIndex);
}
}
Now to get your table working add the following lines in your JFrame constructor.
jTable1.setModel(new MyModel());
jTable1.setDefaultRenderer(JLabel.class, new Renderer());
No comments:
Post a Comment