我在这里遇到了一些麻烦。
我的目的是将 GIF 图片添加到按钮中,然后将该按钮发送到 JTable 。
首先,我使用自定义代码制作了 jtable 。
private javax.swing.JTable Tbl_Monkey = new javax.swing.JTable();
Tbl_Monkey.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null, null, null, null, null, null}
},
new String [] {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"
}
) {
boolean[] canEdit = new boolean [] {
true, false, false, false, false, false, false, false, false, false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
@Override
public Class getColumnClass(int columnIndex) {
return JButton.class;
}
});
Tbl_Monkey.setDefaultRenderer(JButton.class, new JButtonTableRenderer());
我还制作了自定义JTable渲染器。
public class JButtonTableRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
return (JButton) value;
}
}
之后,我设置了JButton的Icon(GIF),然后使用 DefaultTableModel 将其直接传递到JTable中, 它非常适合 JTable , 但动画GIF 不是动画。
DefaultTableModel oDtb = (DefaultTableModel) Tbl_Monkey.getModel();
oDtb.addRow(oTheObjectArrayofJButton);
我意识到如果我只是将JTut设置在JTable之外,那么Icon(GIF)会动画化。 但是如果我将JButton放在JTable中,它就不会生成动画。除非我点击那个按钮...然后动画来了,但那只有1帧。我应该重新点击以在点击的按钮上获取该GIF的动画。那不好......
如何解决?
答案 0 :(得分:2)
我相信你的问题的原因是JTable使用JButton来渲染单元格,除非你正在编辑给定的单元格,然后让JTable使用JButton作为单元格编辑器。
当JTable使用JButton作为单元格渲染器时,它可能只是告诉JButton在给定单元格中绘制自己,就是这样。我不太确定SWING在JButtons上绘制动画GIF的方法,但我认为有一个线程在做一些后台工作。但是,在JTable的情况下,我们没有处理真正的按钮,因此它没有重新绘制。
除了推荐关于几乎相同问题的另一个post之外,我没有真正的尝试过如何解决问题的建议。