30. april 2005 - 22:16
#1
Jeg ved ikke om du har fået løst problemet, men her er en mulig løsning
Tilføj en MouseMotionListener til tabellen, og tag den udfra musens position
import java.awt.Point;
public class Test extends javax.swing.JFrame {
public Test() {
initComponents();
}
private void initComponents() {
scroll = new javax.swing.JScrollPane();
table = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
table.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
table.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
Point p = evt.getPoint();
int row = table.rowAtPoint(p);
int col = table.columnAtPoint(p);
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(col,col);
}
});
scroll.setViewportView(table);
getContentPane().add(scroll, java.awt.BorderLayout.NORTH);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test().setVisible(true);
}
});
}
private javax.swing.JScrollPane scroll;
private javax.swing.JTable table;
}
30. april 2005 - 22:35
#3
Hvis den skal fungere som editor er det nemt
scroll.setViewportView(table);
TableColumn column = table.getColumnModel().getColumn(2);
column.setCellEditor(new DefaultCellEditor(new JComboBox()));
Comboboxen vises først når du klikker i kolonne 3
Skal den være synlig altid, skal du lave din egen klasse som implementere TableCellRenderer og sætte den som renderer på cellen