JButton与JTable中的Image。如何让它动画?

时间:2011-09-24 10:44:24

标签: java swing jtable jbutton gif

我在这里遇到了一些麻烦。

我的目的是将 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的动画。那不好......

如何解决?

1 个答案:

答案 0 :(得分:2)

我相信你的问题的原因是JTable使用JButton来渲染单元格,除非你正在编辑给定的单元格,然后让JTable使用JButton作为单元格编辑器。

当JTable使用JButton作为单元格渲染器时,它可能只是告诉JButton在给定单元格中绘制自己,就是这样。我不太确定SWING在JButtons上绘制动画GIF的方法,但我认为有一个线程在做一些后台工作。但是,在JTable的情况下,我们没有处理真正的按钮,因此它没有重新绘制。

除了推荐关于几乎相同问题的另一个post之外,我没有真正的尝试过如何解决问题的建议。