Listing 1:
import com.sun.java.swing.*;
import com.sun.java.swing.table.*;
import java.util.*;
public class ComponentInspectorTableModel extends DefaultTableModel{
public ComponentInspectorTableModel(){
super();
}
public ComponentInspectorTableModel(int numColumns,
int numRows){
super(numColumns, numRows);
}
public ComponentInspectorTableModel(Object[]
columns,
int numRows){
super(columns, numRows);
}
public ComponentInspectorTableModel(Object[][]
columns, Object[] rows){
super(columns, rows);
}
public ComponentInspectorTableModel(Vector
columns,
int numRows){
super(columns, numRows);
}
public ComponentInspectorTableModel(Vector
columns,
Vector rows){
super(columns, rows);
}
public boolean isCellEditable(int row, int
column){
if (column ==0){
return false;
}
else{
return super.isCellEditable(row,
column);
}
}
}
Listing 2:
public class SimpleValueRenderer implements
TableCellRenderer{
Jpanel cell = new Jpanel();
Jlabel label = new Jlabel();
public SimpleValueRenderer (){
cell.setBackground(Color.darkGray);
cell.add(label);
}
public Component getTableCellRendererComponent(JTable
table, Object value,
boolean isSelected,
boolean hasFocus,
int row, int col){
label.setText(value.toString());
return cell;
}
}
Listing 3:
JTable aTable = new JTable
..
..
//previous initialization code...
aTable.setDefaultCellRenderer(String.class,new
SimpleValueRenderer());
Listing 4:
public class BooleanValueRenderer extends
JCheckBox
implements TableCellRenderer{
public BooleanValueRenderer (){
super();
}
public Component getTableCellRendererComponent(JTable
table, Object value,
boolean isSelected,
boolean hasFocus,
int row, int col){
this.SetValue((Boolean)value);
return this;
}
}
and to use it...
..
..
//previous initialization code...
aTable.setDefaultCellRenderer(Boolean.class,new
BooleanValueRenderer ());
Listing 5:
public void getClassInfo(Object aValue){
Class valueClass = aValue.getClass();
//lets write out the name of the class to
command line
System.out.println(valueClass.getName());
//lets get all the methods and then print
out their names
//to command line
Method[] classMethods = valueClass.getDeclaredMethods();
for (int i=0; i < classMethods.length;i++){
Method aMethod = classMethods[i];
//print out the name
System.out.println(aMethod.getName());
}
}
Listing 6:
Class[] args = new Class[2];
args[0] = Object.class;
args[1] = Integer.TYPE;
//you have to do this because the method
takes an int
//not an Integer
try{
Method setElementAtMeth = valueClass.getDelaredMethod("setElementAt",
args);
}
catch (Exception ex){
ex.printStackTrace();
}
Listing 7:
Object[] vals = new Object[2];
vals [0] = new String("Hello there");
vals [1] = new Integer(0);
//Java will correctly convert this to an
int
try{
setElementAtMeth.invoke(aValue, vals);
//method gets invoked !
}
catch (Exception ex){
ex.printStackTrace();
}
Listing 8:
public void inspectAButton(Jbutton aBtn){
try{
BeanInfo beanInfo = Introspector.getBeanInfo(aBtn);
PropertyDescriptor[] props
= beanInfo.getPropertyDescrip tors();
if (props != null){
for
(int i=0; i < props.length; i++){
PropertyDescriptor pd = props[i];
System.out.println("Property " + pd.getDisplayName()
+ " has read method: " + pd.getReadMethod().get
Name() + " and write method: " +
pd.getWriteMethod().getName());
}
}
}
catch(Exception ex){
ex.printStackTrace();
}
}