gpt4 book ai didi

java - JTable 内带有图像的 JButton。怎么让它变成动画呢?

转载 作者:行者123 更新时间:2023-11-30 04:59:06 25 4
gpt4 key购买 nike

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

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

如何解决?

最佳答案

我相信您的问题的原因是 JTable 使用 JButton 来呈现单元格,除非您正在编辑给定的单元格,这会使 JTable 使用 JButton 作为单元格编辑器。

当 JTable 使用 JButton 作为单元格渲染器时,它可能只是告诉 JButton 在给定单元格中绘制自身,仅此而已。我不太确定 SWING 在 JButtons 上绘制动画 GIF 时采用哪种方法,但我认为有一个线程在做一些后台工作。但是,对于 JTable,我们处理的不是真正的按钮,因此不会重新绘制它。

除了推荐另一个 post 之外,我没有关于如何解决您的问题的真实且经过验证的建议。这几乎涉及同样的问题。

关于java - JTable 内带有图像的 JButton。怎么让它变成动画呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com