【发布时间】:2014-11-04 14:39:24
【问题描述】:
这是我在这里的第一篇文章,我的英语不是很好,所以我希望你们 了解我有什么问题,也希望我在这里没有做错任何事情。
我的问题:
我正在学习 atm Swing 以及它是如何工作的,但我总是遇到一些图片不显示的问题。 也许我不明白 Swing 的某些部分,所以我希望你能解释一下为什么图片没有加载,这样我就可以学习它并做得更好:)
我尝试了很多变化,但我真的只是失败了,我不知道为什么。 我也用图形尝试过。
我的程序:
JFrame -> JPanel -> JLabel(有图片,应该放在JPanel上,或者JPanel上可能有直接的方式)
test2.jpg 在我的包文件夹中,eclipse dont 报错。
我也会将 JPanel 放在一个单独的类中,并且不会将 JFrame 扩展到 Gui 类。
这是我的 3 节课:
开始:
package verwaltungssoftware;
public class Start
{
//Start der Applikation
public static void main(String[] args)
{
System.out.println("Willkommen bei der Verwaltungssoftware fuer die Jobsuche");
new Gui();
}
}
桂:
package verwaltungssoftware;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class Gui
{
//Importiert Auflösung des Bildschirms
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
//Setzt Variablen für die Auflösung
public int aufloesungBreite = screenSize.width;
public int aufloesungHoehe = screenSize.height;
//Setzt die Berechnung des JFrame hauptfenster Location
private int breite = aufloesungBreite/2 - 640;
private int hoehe = aufloesungHoehe/2 - 400;
public Gui()
{
JFrame hauptfenster = new JFrame("Verwaltungssoftware fuer die Jobsuche");
hauptfenster.setDefaultCloseOperation(hauptfenster.EXIT_ON_CLOSE);
hauptfenster.setResizable(false);
hauptfenster.setLocation(breite, hoehe);
hauptfenster.setSize(1280,800);
hauptfenster.setLayout(new BorderLayout(5,5));
//Addet hauptpanel zum JFrame
Panel hauptpanel = new Panel();
hauptfenster.add(hauptpanel);
hauptpanel.setVisible(true);
hauptfenster.setVisible(true);
}
}
和小组:
package verwaltungssoftware;
import java.awt.BorderLayout;
import java.awt.Image;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Panel extends JPanel
{
private static final long serialVersionUID = 6769810448979262470L;
//Variablen
Image icon1;
//Konstruktor
public Panel()
{
try
{
icon1 = ImageIO.read(getClass().getResource("test2.jpg"));
}
catch (IOException e)
{
e.printStackTrace();
}
JPanel panelhauptfenster = new JPanel();
panelhauptfenster.setLayout(new BorderLayout (5,5));
panelhauptfenster.setSize(1280,800);
panelhauptfenster.setLocation(0,0);
panelhauptfenster.setVisible(true);
JLabel myLabel=new JLabel();
myLabel.setLocation(0,0);
myLabel.setSize(panelhauptfenster.getWidth(),panelhauptfenster.getHeight());
myLabel.setIcon(new ImageIcon(icon1));
myLabel.setVisible(true);
panelhauptfenster.add(myLabel);
}
}
非常感谢您的帮助。
【问题讨论】:
-
getClass().getResource("test2.jpg")..图像是否位于verwaltungssoftware目录/路径中,getResource期望找到它? -
我更改路径时正确的路径给了我一个错误:线程“main”java.lang.IllegalArgumentException中的异常:输入== null!在 javax.imageio.ImageIO.read(ImageIO.java:1388) 在 verwaltungssoftware.Panel.
(Panel.java:25) 在 verwaltungssoftware.Gui. (Gui.java:34) 在 verwaltungssoftware.Start。 main(Start.java:13) 图片在包verwaltungssoftware中 -
好哦。将
getClass().getResource("test2.jpg")因素放入我输入答案并尝试的源代码中。上面代码中的方法有许多我纠正的缺陷。
标签: java image swing embedded-resource