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