我想要一个简单的JFrame
,其中JLabel
(以图片形式显示图标)和JSlider
(在40张图片之间切换)。
当我在滑块的StateChange
事件上加载新图像时,程序变得非常慢,特别是当我快速滑动时。
所以我想要预加载40个图像并通过滑块替换它们。这是聪明的吗?
答案 0 :(得分:2)
我认为,你有这样的事情:
public class MyClass {
// other declarations
private JLabel label;
// other methods
public void stateChange(ChangeEvent e) {
label.setIcon(new ImageIcon(...)); // here is code to determine name of the icon to load.
timer = null;
}
}
您需要更改代码如下:
public class MyClass {
// other declarations
private JLabel label;
private Timer timer; // javax.swing.Timer
// other methods
public void stateChange(ChangeEvent e) {
if (timer != null) {
timer.stop();
}
timer = new Timer(250, new ActionListener() {
public void actionPerformed(ActionEvent e) {
label.setIcon(new ImageIcon(...)); // here is code to determine name of the icon to load.
timer = null;
}
});
timer.setRepeats(false);
timer.start();
}
}