Swing Java桌面应用程序中没有绘画/加载的图像
问题描述:
当我运行使用Netbean Swing创建的Java桌面应用程序时,JLabel图标图像立即加载,但我的JPanel上的背景图像不会画到屏幕上,直到我唤醒(重新调整)窗口。Swing Java桌面应用程序中没有绘画/加载的图像
这里是我的JPanel自定义代码:
Image image = java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/background.gif"));
javax.swing.JPanel panelBackground = new BackgroundPanel(image);
有没有更好的方法来调用的形象呢?有我应该实施的图像处理代码?
我该如何解决?
答
Got it!
非常感谢气垫船全鳗鱼为指针
“如果你使用ImageIO.read(...),让您的图像会发生吗?还有,你把图象在GUI呈现之后向GUI显示组件?“
并以camickr的代码去考虑这些。
我解决它使用:
Image imgBackground = ImageIO.read(getClass().getResourceAsStream("/images/background.gif"));
创建,并在我的课的开始,而不是在JPanels自定义代码段还曾分配图像的变量。这是因为图像有更多的时间来创建..
答
适合我。我使用Background Panel进行了测试。如果您仍有问题,请发布您的SSCCE。
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();
}
});
}
}
写道“有没有更好的方式来调用图像?”,我认为,不是,该LayoutManagers问题http://download.oracle.com/javase/ tutorial/uiswing/layout/index.html和http://download.oracle.com/javase/tutorial/uiswing/components/label.html和http://download.oracle.com/javase/tutorial/uiswing/components/ icon.html很多关于http://www.java2s.com/Code/Java/Swing-JFC/CatalogSwing-JFC.htm – mKorbel 2011-06-16 23:03:39
的示例如果使用ImageIO.read(...)来获取图像?此外,您是否在图像显示组件已被渲染后将其添加到GUI? – 2011-06-16 23:06:34
@Hovercraft谢谢! ImageID.read(...)工作。 – Dorothy 2011-06-17 16:02:48