在前一帧中创建一个实例后,我正在尝试下一帧的背景图像,但结果,我只是看到了调试结果,发现没有调用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。
我乍一看你的代码中有一些错误:
JFrame
,但你没有添加任何额外的功能,请参阅:Extends JFrame vs. creating it inside the program。相反,建立你的GUI使用JPanel
s并覆盖他们的paintComponent(...)
方法而不是paint(...)
方法。paintComponent()
,请致电super.paintComponent(...)
也许有其他人,但我现在很忙,无法测试你的代码,但上面的代码应该有助于解决你的问题。