[英]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.