有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    当JTable使用JButton作为单元渲染器时,它可能只是告诉JButton在给定的单元中绘制自己,就是这样。我不确定SWING在JButtons上绘制动画GIF时采用哪种方法,但我认为有一个线程在做一些背景工作。然而,在JTable的例子中,我们没有处理一个真正的按钮,因此它没有被重新绘制

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