【发布时间】:2015-12-07 10:11:14
【问题描述】:
所以我一直在尝试自学 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”部分会覆盖第一个图像,替换它。请告诉我解决此问题的最简单方法,并简要解释我的错误。
(附注:我使用的是 Eclipse Mars 和所有 Java 的最新版本。)
【问题讨论】:
-
这种方法试图在应该将(除一个之外的所有)组件扔出窗口并进行自定义绘制的情况下布局组件!详见教程Performing Custom Painting课程。
-
顺便说一句 -
backgroundLabel.setVisible(true); .. titleLabel.setVisible(false);建议您实际上可以尝试实现CardLayout的用途。它可以根据需要在“视图”之间切换。 -
为什么有人反对我?我知道这可能很简单,但提问是这个网站的目的! ;(
标签: java image swing jframe jlabel