当前位置: 代码迷 >> J2SE >> 关于图片显示(急)
  详细解决方案

关于图片显示(急)

热度:298   发布时间:2016-04-24 12:37:01.0
关于图片显示(在线等急)
先贴我自己写的代码 
public class MyPanel extends Panel {
private static Toolkit tk = Toolkit.getDefaultToolkit();
private static Image image = tk.getImage(MyPanel.class.
getClassLoader().getResource("Images/背景1.PNG"));
private static boolean init = false;

public MyPanel(){

}

public void paint(Graphics g){
//System.out.println("======");
//if(init == false){
//g.drawImage(image,0,0,null);
//init = true;
//}
g.drawImage(image, 0, 0, null);
}
}
注释的地方满足是修改过了的 但是还是有错

每次当我运行的时候图片都不会显示 但是最小化了后 图片就显示了

有没有什么办法是Frame 一产生的时候就显示呢 

还有就是我拿一个我用图片做背景 Lable不是透明的 是空的

------解决方案--------------------
下载影像的方法换一下。
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import javax.swing.*;
public class MyPanel extends JFrame { 
private static Image image; 
private static boolean init = false; 
public static void main(String args[]) {
MyPanel mp = new MyPanel();
mp.setVisible(true);
mp.setSize(400,400);
mp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public MyPanel(){ 
try {
image = ImageIO.read(new File("j2me.jpg"));
}catch (Exception e) { }



public void paint(Graphics g){ 
g.drawImage(image, 0, 0, null); 



------解决方案--------------------
Toolkit在加载图像的时候是异步的,也就是它使用了另一个线程来加载图像。为了正确的显示你就需要在程序里做同步。
------解决方案--------------------
希望以下实验,对你有帮助
Jlabel 可以带图标(ImageIcon)。 我将影像 "earth" 的黑颜色背景改成透明的背景, 制成另一个影像(存为 png 格式)。
然后用这两个影像分别制成两个标签。结果显示,有透明背景的图标,在某种意义上,让标签部分(背景部分)成为透明。标签文字部分的背景,尚无法搞成透明。

import java.awt.*;
import javax.swing.*;
public class transparent extends JFrame { 

private JLabel label1, label2;
private static boolean init = false; 

public static void main(String args[]) {
transparent mp = new transparent();
mp.setVisible(true);
mp.setSize(400,400);
mp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
public transparent(){ 
super("实验透明标签");
Container container = getContentPane();
container.setLayout(new FlowLayout());

Icon noTrans=new ImageIcon("earth.jpg");
Icon Trans = new ImageIcon("earth.png");
label1 = new JLabel("不透明");
label2 = new JLabel("透明");
label1.setIcon(noTrans);
label2.setIcon(Trans);
container.add(label1);
container.add(label2);

}

  相关解决方案