未在Swing Java桌面应用程序中立即绘制/加载图像
当我运行使用Netbean的Swing创建的Java桌面应用程序时,会立即加载JLabel图标图像,但在我唤醒(重新调整)窗口之前,JPanel上的背景图像不会绘制到屏幕上 这是我的JPanel上的自定义代码:未在Swing Java桌面应用程序中立即绘制/加载图像,java,image,swing,desktop-application,loading,Java,Image,Swing,Desktop Application,Loading,当我运行使用Netbean的Swing创建的Java桌面应用程序时,会立即加载JLabel图标图像,但在我唤醒(重新调整)窗口之前,JPanel上的背景图像不会绘制到屏幕上 这是我的JPanel上的自定义代码: Image image = java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/background.gif")); javax.swing.JPanel panelBackgroun
Image image = java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/background.gif"));
javax.swing.JPanel panelBackground = new BackgroundPanel(image);
有没有更好的方法来调用图像?是否有我应该实现的图像处理代码
我该如何修理它?对我来说很好。我用测试工具测试了它。如果您仍然有问题,请发布您的邮件
import java.awt.*;
import javax.swing.*;
public class BackgroundSSCCE extends JPanel
{
public BackgroundSSCCE()
{
setLayout( new BorderLayout() );
Image duke = java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource("dukeWaveRed.gif"));
BackgroundPanel test = new BackgroundPanel(duke, BackgroundPanel.ACTUAL, 1.0f, 0.5f);
add(test);
}
private static void createAndShowUI()
{
JFrame frame = new JFrame("BackgroundSSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new BackgroundSSCCE() );
frame.setSize(200, 200);
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
明白了
非常感谢装满鳗鱼的气垫船作为指针
如果使用ImageIO.read(…)获取图像,会发生什么情况?另外,是否在渲染后将图像显示组件添加到GUI中 和camickr,让代码思考 我通过以下方法解决了这个问题:
Image imgBackground = ImageIO.read(getClass().getResourceAsStream("/images/background.gif"));
在类的开头而不是在JPanels自定义代码部分创建图像并将其分配给变量也很有效。这是因为图像有更多的时间被创建。写下“有更好的方法调用图像吗?”,我认为不是,布局管理器会发布大量的例子来说明如果使用ImageIO.read(…)获取图像会发生什么?另外,在渲染后是否将图像显示组件添加到GUI中?@Hovercraft谢谢!ImageID.read(…)有效。很高兴它有帮助。我忘记了为什么有时候这比使用工具箱获取图像要好,但我相信部分原因与它们如何处理缓存有关。