Here is the processing.gif
Here is initial.png
Here is the output
这是代码。 processing.gif 正在其他位置工作,例如在某个选项卡中JTabbedPane
。这里在a栏里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 http://www.qedeq.org/0_04_07/src/reports/qedeq_gui_se/source/furbelow/AnimatedIcon.java.html
基本上,它重新实现了Icon
界面中,注册你渲染图标的位置,当需要绘制新的 gif 帧时,它会自动重新绘制正确的区域。
提供了另一种选择here http://www.java2s.com/Code/Java/Swing-Components/AnimatedIconTableExample.htm为每个需要渲染 gif 动画的单元格注册一个特定的 ImageObserver,但我发现它有点乏味。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)