这是我的视图类
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class View
{
JFrame frame;
JPanel background;
public View()
{
frame = new JFrame("Platformer");
background = new JPanel(new BorderLayout());
BuildMenu();
SetBackground();
BuildLowerPanel();
frame.getContentPane().add(background);
frame.setSize(800, 700);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private void BuildMenu()
{
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
menuBar.add(menu);
frame.setJMenuBar(menuBar);
JMenuItem i = new JMenuItem("Resume");
i.setActionCommand("RESUME");
JMenuItem j = new JMenuItem("Pause");
j.setActionCommand("PAUSE");
menu.add(i);
menu.add(j);
}
public void paintComponent(Graphics g)
{
}
private void BuildLowerPanel()
{
}
}
这是我的Model类,基本上只读取图像
package introGUI;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Model
{
private BufferedImage img;
public void ReadImage()
{
try
{
img = ImageIO.read(new File("C:\Users\p333kle\Pictures\lvl1.jpg"));
}
catch(IOException e)
{
System.err.println("Error: Couldn't load background image");
}
}
}
现在,我想向我的视图类添加一个setBackground方法,该方法将在初始化级别时由控制器调用,并接收模型读取的图像。然而,我很困惑我将如何做到这一点,因为我确信我必须使用paintComponent,然后绘制我阅读的图像。然而,我不确定如何继续编写setBackground方法。
如图所示,使用观察器模式让您的模型在模型中启动级别更改时通知视图。在平台游戏的特定情况下,模型可以管理级别,可能由enum
值标识,而视图可以选择匹配的背景,可能从相关集合中选择。参见引用示例中的RCImage
。