gpt4 book ai didi

java - JButton 未在我的 JFrame 中绘制。 JFrame 处于 while 循环中

转载 作者:行者123 更新时间:2023-12-02 00:34:22 26 4
gpt4 key购买 nike

我正在尝试创建某种怪异的地鼠游戏,并且我在 while 循环中设置了一个 JFrame,因此它将每秒在一个新位置创建一个 JFrame,但问题是我的 JButton 在此过程中不会加载。这是我的代码:

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class WACKAMOLE {
private static JFrame frame;
private static JFrame frame1;
private static JButton button1;
private static int a;
private static int b;
private static int x = 0;
private static int score=0;

public static void main(String args[]){
Menu n=new Menu();
n.Start();

}

static class Menu{

public void Start(){
frame=new JFrame();
frame.setSize(150, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
JPanel panel=new JPanel();
JLabel label=new JLabel("Main Menu");
JLabel label1=new JLabel("WACK A MOLE DELUXE");
JButton button=new JButton("Start");
JButton button1=new JButton("Highscores");
panel.add(label1);
panel.add(label);
panel.add(button);
panel.add(button1);
frame.add(panel);
frame.setVisible(true);
button.addActionListener(new game());
}
}

static class game implements ActionListener{
public void actionPerformed(ActionEvent e){
frame.dispose();
Random generator=new Random();
Random generator1=new Random();
while(x<=30){
a=generator.nextInt(1000);
b=generator1.nextInt(1000);
frame1=new JFrame("HEHE");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setSize(100,100);
frame1.setLocation(a,b);
frame1.setResizable(false);
button1=new JButton("WACK ME!");
button1.addActionListener(new clicked());
frame1.setVisible(true);
frame1.add(button1);
frame1.setVisible(true);

try{Thread.sleep(900);}
catch(Exception e1){System.out.println("ERROR");}

frame1.dispose();
x++;
}

}

static class clicked implements ActionListener{
public void actionPerformed(ActionEvent e){
frame1.dispose();
x++;
score++;

}
}

}

}

最佳答案

如果让事件调度线程 hibernate ,那么所有 GUI 事件和绘画都会被阻止。需要使用后台线程 hibernate ,然后从后台线程触发EDT中帧的dispose。

阅读tutorial about concurrency in Swing .

关于java - JButton 未在我的 JFrame 中绘制。 JFrame 处于 while 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com