我试图显示背景和角色,对于我试图制作的项目(游戏)。
当我显示其中一幅图像时,我看不到另一幅图像。
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
public class Main{
private static final Keys jeez = null;
public static void main(String[] args) throws IOException {
int x = 250;
int y = 250;
BufferedImage myPicture = ImageIO.read(new File("C:\\Users\\milkg\\Desktop\\Game\\background.png"));
JPanel background = new JPanel();
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
background.add(picLabel);
BufferedImage myPicture1 = ImageIO.read(new File("C:\\Users\\milkg\\Desktop\\Game\\background.png"));
JPanel character = new JPanel();
JLabel picLabel1 = new JLabel(new ImageIcon(myPicture1));
character.add(picLabel1);
JFrame Window = new JFrame("Something");
Window.setSize(1280, 720);
Window.setDefaultCloseOperation(Window.EXIT_ON_CLOSE);
Window.setLocation(200, 100);
Window.setResizable(false);
Window.add(background);
Window.add(character);
Keys Key = new Keys(x, y, Window);
Window.setVisible(true);
}
}
答案 0 :(得分:0)
图像在图像上
如果要在背景图像上方显示一幅图像,则需要将前景图像添加到背景图像中。
因此基本逻辑将类似于:
JLabel foreground = new JLabel( new ImageIcon(...) );
JLabel background = new JLabel( new ImageIcon(...) );
background.setLayout( new BorderLayout() );
background.add( foreground );
window.add( background );
请注意,不必仅使用面板来显示JLabel。 JFrame的内容窗格是JPanel,因此您可以将标签直接添加到框架。
尝试制作(游戏)
但是,如果您尝试制作游戏,则可能需要进行自定义绘画,以便可以控制每个图像的位置:
在这种情况下的基本逻辑是:
JPanel gamePane = new JPanel()
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(background, ?, ?, this);
g.drawImage(foreground, ?, ?, this);
}
};
现在,前景图像将绘制在背景图像的顶部。
当然,您应该使用方法来设计适当的类,以使您可以在“背景”上移动“字符”。
答案 1 :(得分:0)
首先,您上载的代码中的漫游器路径指向同一文件。 然后,仅通过将标签彼此叠加即可在标签上方显示标签。
我建议创建一个JPanel()的子类,您可以在其中重写绘画组件方法,例如:
JPanel panel = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(yourImage,x,y,imageObserver);
}
};