Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 AWT中将图像添加到BorderLayout_Java_Image_Awt_Border Layout - Fatal编程技术网

在Java AWT中将图像添加到BorderLayout

在Java AWT中将图像添加到BorderLayout,java,image,awt,border-layout,Java,Image,Awt,Border Layout,我试图在我的BorderLayout的中心添加一个图像,最终目标是通过点击“隐藏”按钮来隐藏图像。 我正在尝试使用add()函数添加图像。我的教授在add函数中添加了一个新的类对象,但是布局和Imageclass在两个独立的.java文件中。我正试图在一个.java文件中做同样的事情。 但我无法让它运行时不出错并显示图像。 你能帮帮我吗?我做错了什么 public class ImageEigen extends Panel { Image img; Button hide_butto

我试图在我的BorderLayout的中心添加一个图像,最终目标是通过点击“隐藏”按钮来隐藏图像。 我正在尝试使用add()函数添加图像。我的教授在add函数中添加了一个新的类对象,但是布局和Imageclass在两个独立的.java文件中。我正试图在一个.java文件中做同样的事情。 但我无法让它运行时不出错并显示图像。 你能帮帮我吗?我做错了什么

public class ImageEigen extends Panel
{
    Image img;

Button hide_button = new Button("Hide");
Button ende_button = new Button("Quit");


public ImageEigen(Image img)
{
    setLayout(new BorderLayout());
    setFont(new Font("System", Font.PLAIN, 24));

    this.img = img;

    add(hide_button, BorderLayout.WEST);
    add(ende_button, BorderLayout.EAST);
//        add(new ImageEigen(img), BorderLayout.NORTH);
//        add(img, BorderLayout.NORTH);
//        add(ImageEigen(img), BorderLayout.NORTH);
    add(IE(img), BorderLayout.NORTH);


    ende_button.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
            System.exit(0);
        }
    });

    MediaTracker mt = new MediaTracker(this);
    mt.addImage(img, 1);
    try
    {
        mt.waitForID(1);
    } catch(Exception ex)
    {}
}

@Override
public void paint(Graphics g)
{
    g.drawImage(img, 0, 0, this);
}

@Override
public Dimension getPreferredSize()
{
    return new Dimension(img.getWidth(this), img.getHeight(this));
}

@Override
public void update(Graphics g)
{
    paint(g);
}

public static void main(String args[])
{
    Frame frame = new Frame("Image-Oberflächentest");

    Image img = frame.getToolkit().getImage(args[0]);
    ImageEigen IE = new ImageEigen(img);

    frame.add(IE);

    frame.addWindowListener(new WindowAdapter()
    {
        public void windowClosing(WindowEvent we)
        {
            System.exit(0);
        }
    });

    frame.pack();
    frame.setVisible(true);
}}

为什么要使用AWT?有关放弃AWT组件而支持Swing的许多好理由,请参阅。一个原因是基于Swing的
JLabel
可以显示图像!不幸的是,我们必须使用AWT,这是必需的。谁是“我们”?哦,等等。。“我的教授……”你的教授需要拖着自己,又踢又叫,进入第三个千年。顺便说一句,这个练习的目的是什么?1) 作为旁白:为了更快地获得更好的帮助,请添加一个或。2) 例如,获取图像的一种方法是热链接到中看到的图像。例如,嵌入到..中的图像的热链接。。。。3) 不要忽略例外情况!他们准确地告诉我们出了什么问题。除非实现日志记录,否则至少调用
Throwable.printStackTrace()
4)BTW-始终复制/粘贴错误和异常输出!我猜你指的是一个
堆栈溢出错误
,但我不想猜。5) 这个
ImageEigen
类试图做得太多了。定义它,以便它所做的只是(接受并)绘制一个图像。然后将该类添加到另一个面板(
BorderLayout.CENTER
)并将按钮添加到另一个面板。为什么要使用AWT?有关放弃AWT组件而支持Swing的许多好理由,请参阅。一个原因是基于Swing的
JLabel
可以显示图像!不幸的是,我们必须使用AWT,这是必需的。谁是“我们”?哦,等等。。“我的教授……”你的教授需要拖着自己,又踢又叫,进入第三个千年。顺便说一句,这个练习的目的是什么?1) 作为旁白:为了更快地获得更好的帮助,请添加一个或。2) 例如,获取图像的一种方法是热链接到中看到的图像。例如,嵌入到..中的图像的热链接。。。。3) 不要忽略例外情况!他们准确地告诉我们出了什么问题。除非实现日志记录,否则至少调用
Throwable.printStackTrace()
4)BTW-始终复制/粘贴错误和异常输出!我猜你指的是一个
堆栈溢出错误
,但我不想猜。5) 这个
ImageEigen
类试图做得太多了。定义它,以便它所做的只是(接受并)绘制一个图像。然后将该类添加到另一个面板(
BorderLayout.CENTER
)并将按钮添加到另一个面板。