在上一帧中创建实例后,我尝试在下一帧中使用背景图像,但是结果,我只看到调试的结果,发现未调用paint方法。据我所知,paint方法是由JFrame类继承的,根据这种逻辑,我将其重写。我猜想,发生逻辑错误的原因是由于我使用了事件处理程序并在EventHandlerClass中创建了实例。
if(e.getActionCommand().equals(ButtonTo))
if(idString.equals("USER"))
{
{
if("1234".equals(pwSt))
{
System.out.println("Wellcome");
if(gs==null)
{
gs=new GameStart();
}
}
else
{
System.out.println("Confirm your password");
}
}
}
这是一个代码,如果执行了一个动作,它将创建一个实例(gs)。完成此操作后,我注意到该实例已用于制作新的控制台框架。
class GameStart extends JFrame {
private Image screenImage;
private Graphics screenGraphic;
private Image introBackgroundImage;
private ImageIcon img;
GameStart()
{
JFrame jf=new JFrame("Game Set");
jf.setBounds(300, 300, 400, 200);
jf.setLayout(new BorderLayout());
JButton bt1=new JButton("Start");
JButton bt2=new JButton("Exit");
JPanel panel1=new JPanel();
panel1.add(bt1);panel1.add(bt2);
setContentPane(panel1);
jf.add(panel1, BorderLayout.SOUTH);
bt1.addActionListener(new Choice());
bt2.addActionListener(new Choice());
jf.setVisible(true);
img=new ImageIcon("./Images/backGroundImage.jpg");
System.out.println("1");
}
public void paint(Graphics g) {
screenImage=createImage(200, 200);
screenGraphic=screenImage.getGraphics();
screenDraw(screenGraphic);
g.drawImage(screenImage, 0, 0, null);
System.out.println("2");
}
public void screenDraw(Graphics g)
{
this.repaint();
System.out.println("3");
}
现在,通过制作一个框架和一些按钮,我希望显示表示结果的所有数字(1、2、3),但只显示数字1。
答案 0 :(得分:0)
乍看之下,您的代码中有一些错误:
您正在扩展JFrame
,但没有添加任何其他功能,请参见:Extends JFrame vs. creating it inside the program。相反,应针对JPanel
的使用来构建GUI,并覆盖其paintComponent(...)
方法而不是paint(...)
方法。
您正在打破油漆链:完成上述要点后,在paintComponent()
中,致电super.paintComponent(...)
也许还有其他人,但是我目前很忙,无法测试您的代码,但是上面的代码应该可以解决您的问题。