定製的過渡效果,我已經在我的JTable與添加的TableCellRenderer與JLabel的圖片。但是,當鼠標移過單元格時,如何在JLabel上添加邊框到特定的列和行上?JTable中如何實現用的TableCellRenderer
這是第一次渲染器類:
public class RenderTabel implements TableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object
value,boolean isSelected, boolean hasFocus,int row, int column){
JLabel gambar=new JLabel();
String url="D:\\Kuliah Semester 4\\Pemrograman Berorientasi Objek\\DINUS BOOKSTORE\\image";
ImageIcon img=scalegmbr(url+"\\"+table.getModel().getValueAt(row, 0)+".png");
gambar.setIcon(img);
gambar.setText("");
gambar.setHorizontalAlignment(SwingConstants.CENTER);
table.setRowHeight(row, 50);
table.getColumnModel().getColumn(column).setPreferredWidth(80);
return gambar;
}
public ImageIcon scalegmbr(String file){
Image image=new ImageIcon(file).getImage();
return new ImageIcon(image.getScaledInstance(80,50,SCALE_SMOOTH));
}
}
這是第二個渲染器類:
public class RenderTabel1 implements TableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object
value,boolean isSelected, boolean hasFocus,int row, int column){
JLabel gambar=new JLabel();
String url="D:\\Kuliah Semester 4\\Pemrograman Berorientasi Objek\\DINUS BOOKSTORE\\image";
ImageIcon img=scalegmbr(url+"\\"+table.getModel().getValueAt(row, 0)+".png");
gambar.setIcon(img);
gambar.setText("");
gambar.setHorizontalAlignment(SwingConstants.CENTER);
gambar.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(200, 100, 52), 2));
table.setRowHeight(row, 50);
table.getColumnModel().getColumn(column).setPreferredWidth(80);
return gambar;
}
public ImageIcon scalegmbr(String file){
Image image=new ImageIcon(file).getImage();
return new ImageIcon(image.getScaledInstance(80,50,SCALE_SMOOTH));
}
}
,這是我怎麼設置鼠標輸入和鼠標在我的JTable點擊:
private void tblbukuMouseEntered(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
tblbuku.getColumnModel().getColumn(6).setCellRenderer(new RenderTabel1());
}
private void tblbukuMouseExited(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
tblbuku.getColumnModel().getColumn(6).setCellRenderer(new RenderTabel());
}
但是,這增加了邊境6列所有單元格時,鼠標移動奧弗該列的單元格。如何在鼠標輸入該行和列時將其僅更改爲特定的行和列?
如果您創建併發佈一個有效的[MCVE]這將有很大的幫助,一個小而完整的程序,只有必要的代碼,以證明您的問題,我們可以複製,粘貼,編譯和運行而無需修改,因爲這將有助於我們要充分理解你可能會做錯什麼。請注意,這是以代碼格式發佈的代碼,而不是作爲非現場資源的鏈接。 –
將鼠標移動監聽器添加到單元格渲染器返回的組件。 – Antoniossss
已經這樣做,但沒有影響:( – Kevin