You must implement your own renderer and for the returned renderer by the getTableCellRendererCompon
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class RolloverTableCells extends JFrame {
private SmartTable table;
private SmartTableModel model;
public RolloverTableCells() {
init();
}
private void init() {
getContentPane().setLayout
setSize(400, 300);
setLocation(300, 100);
table = new SmartTable();
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
setVisible(true);
}
class SmartTable extends JTable {
public SmartTable() {
model = new SmartTableModel();
setModel(model);
createColumns();
setForeground(Color.red);
setBackground(new Color(255, 239, 185));
setGridColor(Color.orange)
setSelectionMode(ListSelec
setRowHeight(35);
setSelectedRow(0);
setSelectedCol(0);
}
protected void createColumns() {
for(int i = 0; i<model.getColumnCount(); i++) {
TableColumn column = getColumn(model.getColumnN
column.setCellRenderer(new
column.setCellEditor(new GenericEditor());
}
}
public void setSelectedRow(int row) {
if(row == -1)
return;
else {
setRowSelectionInterval(ro
}
}
public void setSelectedCol(int col) {
if(col == -1)
return;
else {
setColumnSelectionInterval
}
}
}
class SmartTableModel extends AbstractTableModel {
protected ColumnDescriptor cols[] = {
new ColumnDescriptor("Field1",
new ColumnDescriptor("Field2",
new ColumnDescriptor("Field3",
};
protected Vector dObjects;
public SmartTableModel() {
dObjects = new Vector();
initModelData();
}
public void initModelData() {
Object[] row = new Object[3];
row[0] = "string"; row[1] = "string"; row[2] = "string";
dObjects.addElement(row);
row = new Object[3];
row[0] = "string"; row[1] = "string"; row[2] = new JButton("button");
dObjects.addElement(row);
row = new Object[3];
row[0] = "string"; row[1] = new JButton("button"); row[2] = "string";
dObjects.addElement(row);
row = new Object[3];
row[0] = "string"; row[1] = new JButton("button"); row[2] = new JCheckBox("checkbox");
dObjects.addElement(row);
row = new Object[3];
row[0] = new JButton("button");row[1] = new JCheckBox("checkbox");row[
dObjects.addElement(row);
row = new Object[3];
row[0] = new JButton("button");row[1] = new JCheckBox("checkbox");row[
dObjects.addElement(row);
row = new Object[3];
String[] items = {"Item 1", "Item 2", "Item 3"};
row[0] = new JComboBox(items);row[1] = new JComboBox(items);row[2] = new JComboBox(items);
dObjects.addElement(row);
updateObjects();
}
protected void updateObjects() { fireTableDataChanged(); }
public int getColumnCount() { return(cols.length); }
public int getRowCount() { return(dObjects.size()); }
public String getColumnName(int c) { return(cols[c].name); }
public boolean isCellEditable(int row, int col) {
return((getObjectAt(row, col) instanceof String)?false:true);
}
public Object getObjectAt(int row, int col) {
return(((Object[]) dObjects.elementAt(row))[c
}
public Object getValueAt(int row, int col) {
if(getRowCount() <= 0)
return "";
if(row<0||row>=getRowCount
return "";
Object cellData = ((Object[]) dObjects.elementAt(row))[c
return(cellData);
}
}
class ColumnDescriptor {
public String name;
public int width;
public int alignment;
public ColumnDescriptor(String n, int w, int a) {
name = n;
width = w;
alignment = a;
}
}
class GenericRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererCompon
boolean isSelected, boolean hasFocus, int row, int col) {
Object o = model.getObjectAt(row, col);
if(o instanceof JButton || o instanceof JCheckBox || o instanceof JComboBox) {
if(o instanceof JCheckBox)
((Component) o).setBackground(table.get
return((Component) o);
}
Component c = super.getTableCellRenderer
return(c);
}
}
class GenericEditor extends DefaultCellEditor {
JTable tbl;
private int lastRow = 0;
private int lastCol = 0;
private Component editor;
public GenericEditor() {
super(new JCheckBox());
}
public Component getTableCellEditorComponen
tbl = t;
lastRow = r;
lastCol = c;
Object o = model.getObjectAt(r, c);
if(o instanceof JButton || o instanceof JCheckBox || o instanceof JComboBox)
editor = (Component) o;
else
editor = new JTextField(v.toString());
editor.addMouseListener(ne
public void mouseEntered(MouseEvent me) {
editor.setBackground(Color
}
public void mouseExited(MouseEvent me) {
editor.setBackground(Color
}
});
return(editor);
}
public Object getCellEditorValue() {
return(model.getObjectAt(l
}
public boolean isCellEditable(java.util.E
public boolean shouldSelectCell(java.util
public boolean stopCellEditing() {
tbl.editingStopped(new ChangeEvent(this));
return(true);
}
public void cancelCellEditing() {}
public void addCellEditorListener(Cell
public void removeCellEditorListener(C
}
public static void main(String[] args) {
RolloverTableCells t = new RolloverTableCells();
}
}
Main Topics
Browse All Topics





by: sgomsPosted on 2001-11-06 at 14:42:27ID: 6623369
1 solution:
tame/swing /examples/ JTableExam ples2.html )
lllabel.ht m
Render all the cells as Jlabels (look at multi component JTable example - http://www2.gol.com/users/
Set mouseover for Jlabels
http://www.jalice.net/exro