java JButton,图像位于JTable中。如何使它成为动画?
我在这里遇到了点麻烦
我的目的是将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的图标(GIF),然后使用DefaultTableModel将其直接传递到JTable中, 而且它非常适合JTable, 但已设置动画的GIF未设置动画
DefaultTableModel oDtb = (DefaultTableModel) Tbl_Monkey.getModel();
oDtb.addRow(oTheObjectArrayofJButton);
我意识到,如果我只是在JTable之外创建JButton,图标(GIF)就会动画化。 但是如果我将JButton放在JTable中,它就不会动画。除非我点击那个按钮。。。然后动画出现了,但是只有1帧。我应该重新单击以在单击的按钮上获得该GIF的动画。那不好
怎么解决呢
# 1 楼答案
我相信问题的原因是JTable使用JButton来渲染单元格,除非您正在编辑给定的单元格,然后让JTable使用JButton作为单元格编辑器
当JTable使用JButton作为单元渲染器时,它可能只是告诉JButton在给定的单元中绘制自己,就是这样。我不确定SWING在JButtons上绘制动画GIF时采用哪种方法,但我认为有一个线程在做一些背景工作。然而,在JTable的例子中,我们没有处理一个真正的按钮,因此它没有被重新绘制
关于如何解决你的问题,除了推荐另一个几乎相同的问题外,我没有一个真正的、经过尝试的建议