[英]Java - JFrame not showing more than one picture
因此,我一直在尝试自学Java(2D)游戏的基础知识。 经过漫长而烦人的尝试来显示图像后,我开始工作了。 不幸的是,当我尝试添加第二张图像时,它替换了第一张。 我知道我犯了一些显而易见的菜鸟错误,但是,嘿,我对此很菜鸟。 无论如何,这是我的代码:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Main extends JFrame {
public static void main(String[] args0) {
JFrame frame = new JFrame();
ImageIcon background = new ImageIcon("background.png");
JLabel backgroundLabel = new JLabel(background);
frame.add(backgroundLabel);
backgroundLabel.setVisible(true);
ImageIcon title = new ImageIcon("title.png");
JLabel titleLabel = new JLabel(title);
frame.add(titleLabel);
titleLabel.setVisible(false);
frame.setVisible(true);
frame.setTitle("Fastball");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
}
}
当我运行此命令时,新添加的“ title.png”部分将覆盖第一个图像,并将其替换。 请告诉我最简单的方法,并简要说明我的错误。
(PS我正在使用Eclipse Mars和所有Java的最新版本。)
首先看一下如何使用BorderLayout来了解为什么会出现问题,然后再看一下在容器中布置组件以获取一些可能的解决方案
JFrame frame = new JFrame();
//...
frame.setContentPane(backgroundLabel);
frame.setLayout(new GridBagLayout());
ImageIcon title = new ImageIcon("title.png");
JLabel titleLabel = new JLabel(title);
frame.add(titleLabel);
//...
您应该将titleLabel
添加到backgroundLabel
,但是您可以使用JFrame
进行“欺骗”,可以将backgroundLabel
设置为框架的“内容窗格”,这意味着添加到框架的所有内容实际上都已添加到框架中。 backgroundLabel
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.