Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing映像不';不显示_Java_Image_Swing_Embedded Resource - Fatal编程技术网

Java Swing映像不';不显示

Java Swing映像不';不显示,java,image,swing,embedded-resource,Java,Image,Swing,Embedded Resource,这是我在这里的第一篇文章,我的英语不是很好,所以我希望你们的朋友 了解我有什么问题,我也希望我在这里没有做错什么 我的问题是: 我正在学习atm Swing以及它是如何工作的,但我总是遇到一些图片方面的问题,这些问题并没有出现。 也许我不理解Swing的某些部分,所以我希望你能解释为什么图片没有加载,这样我就可以学习它并做得更好:) 我尝试了很多变化,但我真的失败了,我不知道为什么。 我还尝试了图形 我的节目: JFrame->JPanel->JLabel(它们有图片,应该放在JPanel上,或

这是我在这里的第一篇文章,我的英语不是很好,所以我希望你们的朋友 了解我有什么问题,我也希望我在这里没有做错什么

我的问题是:

我正在学习atm Swing以及它是如何工作的,但我总是遇到一些图片方面的问题,这些问题并没有出现。 也许我不理解Swing的某些部分,所以我希望你能解释为什么图片没有加载,这样我就可以学习它并做得更好:)

我尝试了很多变化,但我真的失败了,我不知道为什么。 我还尝试了图形

我的节目:

JFrame->JPanel->JLabel(它们有图片,应该放在JPanel上,或者在JPanel上有直接的方法)

test2.jpg在我的包文件夹中,eclipsedont发出一个错误

此外,我将JPanel放在一个单独的类中,就像它一样,不会将JFrame扩展到Gui类

以下是我的三门课:

开始:

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.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);
    }
}
非常感谢您的帮助。

像这样试试。
icon1=newImageIcon(getClass().getResource(“/test2.jpg”)

下面的源代码可以正常工作。变化包括:

  • 返回合理的首选大小。删除对
    setSize(..)
    的所有调用
  • 分解图像添加到的面板,而是直接将其添加到
    面板
    实例
  • 但是
    Panel
    被重命名为
    ImagePanel
    ,因此该名称与现有的AWT类不同
  • 删除对
    setVisible(..)
    的调用。唯一适用于的是顶级容器,如
    JFrame
    JDialog
    。对于其余部分,将它们添加到自身可见的容器中


getClass().getResource(“test2.jpg”)
。图像是否位于
verwaltungssoftware
目录/路径中,
getResource
希望在其中找到它?当我更改它时,路径是正确的,它会给我一个错误:线程“main”java.lang.IllegalArgumentException:input==null!在verwaltungssoftware.Panel.(Panel.java:25)在verwaltungssoftware.Gui.(Gui.java:34)在verwaltungssoftware.Start.main(Start.java:13)的javax.imageio.imageio.read(imageio.java:1388)在verwaltungssoftware.Panel.(Panel.java:25)在verwaltungssoftware.Gui.(Gui.java:34)在verwaltungssoftware。将
getClass().getResource(“test2.jpg”)
放入源代码中,我输入了一个答案,然后尝试一下。上面代码中的方法有许多缺陷,我已更正。无法从Imageicon转换为Imageicon对不起,我无法理解您的意思。加载的图片很好,但我不知道如何将面板安装到框架中。当preferedsize从这里获取宽度和长度时,我必须在某个地方设置面板的大小,因为我将它添加到gui框架中。当我了解到图标的大小与GetPreferedSizei后的面板大小正确时,如果您需要进一步的帮助,请准备一个(最小完整可验证示例),如我发布的。值得注意的是,它需要一个源文件(可能有多个类,尽管只有一个
public
类),并且应该热链接到该图像。我犯了一个错误,它可以工作,但我无法使用示例中的URL,因为我有一个路径。我想我需要像下面写的康迪那样做。但有一个问题是java无法从Imageicon转换为图像。“我不能使用像您在示例中这样的URL,因为我有一个路径”您确实意识到
getResource(…)
返回一个URL,对吗?不要考虑你的应用程序是如何运行的。最终会看到什么或者它将使用什么图像。我建议热链接到一个图像,这样(当你运行代码时)你可以看到它,我们可以看到它,将来任何人都可以看到它。中提到了我链接到的图像。我特别要求它提供我们可能热链接到的示例图像。别费心了,好了,现在开始工作了,当我现在看代码的时候,我真的很笨:)非常感谢你,汤普森。对不起,我没有首先理解你所说的热链接是什么意思。
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);
    }
}
import java.awt.*;
import javax.swing.*;
import java.net.URL;
import javax.imageio.ImageIO;

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
        ImagePanel hauptpanel = new ImagePanel();
        hauptfenster.add(hauptpanel);   
        hauptpanel.setVisible(true);
        hauptfenster.setVisible(true);
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                new Gui();
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

class ImagePanel extends JPanel {
    //Variablen
    Image icon1;

    //Konstruktor
    public ImagePanel() {
        try  {
            URL url = new URL("http://i.stack.imgur.com/7bI1Y.jpg");
            icon1  = ImageIO.read(url);
        } catch (Exception e)  {
            e.printStackTrace();
        }

        setLayout(new BorderLayout (5,5));
        JLabel myLabel=new JLabel(new ImageIcon(icon1));
        add(myLabel);
    }

    // very important!
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(icon1.getWidth(this), icon1.getHeight(this));
    }
}