在前一帧中创建了一个实例后,我尝试在下一帧中创建背景图像,但结果是,我只是看到了调试的结果,并发现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。
发布于 2019-04-11 03:46:10
乍一看,你的代码中有一些错误:
JFrame,但没有向其添加任何额外功能,请参阅:Extends JFrame vs. creating it inside the program相反,应该针对JPanel的使用构建图形用户界面,并覆盖它们的paintComponent(...)方法,而不是paint(...)方法。paintComponent()中完成上述操作后,调用super.paintComponent(...)也许还有其他人,但我现在很忙,不能测试你的代码,但上面的应该会帮助你解决问题。
https://stackoverflow.com/questions/55618570
复制相似问题