关于图片显示(在线等急)
先贴我自己写的代码
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);
}
}