我正在为一个班做一个基本的乒乓球游戏。我让Pong工作,启动时有一个GUI显示,不幸的是,我似乎无法从开始按钮启动游戏。我已经在代码上注释了问题所在,并删除了不相关的代码。
frame.add(GUIPanel);
JButton startButton = new JButton("Start!");
GUIPanel.add(startButton, BorderLayout.CENTER);
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
frame.getContentPane().remove(GUIPanel);
frame.validate();
frame.repaint();
drawPanel = new DrawPanel();
drawPanel.requestFocus();
frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
//This is the part that freezes it, everything else works fine
//except that the playGame method isn't called. If I remove the whole
//startButton and whatnot I can call playGame and it works perfectly.
playGame();
}
});
}
有什么想法吗?
看起来你的括号不属于倒数第二个分号。试着移除它。
Swing是一个单线程框架。
也就是说,对UI的所有交互和修改都将在事件调度线程的上下文中进行。任何阻塞此线程的操作都会阻止它处理重绘请求和用户输入/交互等操作。
我的猜测是playGame
正在使用类似Thread.sleep
或某种而(true)
并阻塞EDT,导致您的程序看起来好像被冻结了
在Swing中通读并发以了解更多细节。
一个简单的解决方案是使用Swing计时器
作为游戏循环。每次它滴答作响时,你都会更新游戏的状态,并在游戏的组件上调用(类似于)repaint
问题内容: 我正在上一堂基本的Pong游戏。我正在工作Pong,并且在启动时有GUI显示,很遗憾,我似乎无法从JButton开头开始游戏。我已在代码中指出问题所在,并删除了不相关的代码。 有任何想法吗? 问题答案: Swing是一个单线程框架。 也就是说,对UI的所有交互和修改都应在事件调度线程的上下文内进行。阻塞此线程的所有内容都将阻止其处理,尤其是重画请求和用户输入/交互。 我的猜测是正在使用
我有一个简单的聊天客户端,我正试图使用作为界面。我的问题是,使用进行聊天输入/输出后,窗口将冻结并阻塞,直到收到另一条消息。 这段代码被缩短了,但是显示了相关的部分。小部件将在很长一段时间内变得无响应,而被调用之后,直到收到消息才会响应。 当小部件再次响应时,条目字段包含输入的所有数据,但在“冻结”时间内我看不到更改。小部件也是如此。 如果有人能解释一下为什么会这样,或者指出我是否错过了这里使用的
问题内容: 我有一个非常小的.so文件(可在此处找到:https ://docs.google.com/leaf?id=0B4MxFm- ACB3INjhkMjhlNzktYzkxYy00Zjk5LTk0Y2MtZDE2MWQ2MzY1OWUy &hl=zh_CN& authkey =CMrJguwN) 我试图将其加载到RHEL上的Java中,而Java 只是冻结(没有错误或异常)。我在LD_LI
我知道有很多关于这个话题的问题,但我还是找不到一个解决办法。 我有一个应用程序,可以加载和显示图像(就像智能手机上的常规图库应用程序一样) 我加载了背景中的所有图像与协同线-在这个过程的这个阶段没有问题。 当我通知适配器有关数据时就会出现问题。notifyDataSetChanged()调用会冻结UI一段时间。 我们讨论的是相对较大的网格(例如1000+张照片) 其他线程中的几乎所有答案都建议,我
当数据被不可变地借用时,它还会冻结(freeze)。已冻结(frozen)数据无法通过原始对象来修改,直到指向这些数据的所有引用离开作用域为止。 fn main() { let mut _mutable_integer = 7i32; { // 借用 `_mutable_integer` let _large_integer = &_mutable_
我希望在单击时回忆一个JButton的值,即当用户单击一个JButton时,该JButton的值(是一个字母)将写入JLabel。用户将单击多个按钮,因此,需要存储和打印多个值。最后,用户将单击一个按钮,保存所有接收到的JButton值的JLabel将被存储(显然是使用数组)。 这是我的JButton在代码中的样子: 模型。随机字母();是对另一个类的引用,其中“字母”是一个包含16个值的数组。我