gpt4 book ai didi

swing - 为什么动画 .gif 图标未显示在 JTable 列中?

转载 作者:行者123 更新时间:2023-12-04 05:54:48 28 4
gpt4 key购买 nike

Here is the processing.gif这是处理.gif

Here is initial.png这是initial.png

Here is the output这是输出

这是代码。 processing.gif 正在其他位置工作,例如在 JTabbedPane 的选项卡中.这里在 JTable 的列中,它没有显示。有什么解释和解决办法吗? processing.gif 是一个移动图标,表示正在加载某些内容。

import javax.swing.*;
import javax.swing.table.*;

public class TableIcon extends JFrame
{
public TableIcon()
{
ImageIcon initial = new ImageIcon(getClass().getResource("initial.png"));
ImageIcon processing = new ImageIcon(getClass().getResource("processing.gif"));


String[] columnNames = {"Picture", "Description"};
Object[][] data =
{
{initial, "initial"},
{processing, "processing"}
};

DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable( model )
{
public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());

JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
}

public static void main(String[] args)
{
TableIcon frame = new TableIcon();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}

}

最佳答案

默认情况下,动画 gif 在 JTable 中不能很好地工作。但是有一个简单的方法可以解决这个问题,使用 AnimatedIcon可以找到的类 here

基本上,它重新实现了 Icon界面,注册你渲染图标的位置,当需要绘制gif的新帧时,它会自动重新绘制正确的区域。

提供了另一种选择 here在其中为需要渲染动画 gif 的每个单元格注册一个特定的 ImageObserver,但我发现它有点乏味。

关于swing - 为什么动画 .gif 图标未显示在 JTable 列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854629/

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