您好,我是一名高中水平的新程序员,因此我对编程知之甚少,并且遇到了一些已经解决的错误,而其他一些我完全不理解.我将制作一个简单的Check Box选择程序,用户可以在各种选择之间进行选择,并根据其动作改变图像.程序本身编译得很完美,但是当我运行它时,它给了我一些复杂性.这是我的计划:
package components;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Workshop extends JPanel
implements ItemListener {
JCheckBox winterhatButton;
JCheckBox sportshatButton;
JCheckBox santahatButton;
JCheckBox redshirtButton;
JCheckBox brownshirtButton;
JCheckBox suitButton;
JCheckBox denimjeansButton;
JCheckBox blackpantsButton;
JCheckBox khakipantsButton;
StringBuffer choices;
JLabel pictureLabel;
public Workshop() {
super(new BorderLayout());
//Create the check boxes.
winterhatButton = new JCheckBox("Winter Hat");
winterhatButton.setMnemonic(KeyEvent.VK_Q);
sportshatButton = new JCheckBox("Sports Hat");
sportshatButton.setMnemonic(KeyEvent.VK_W);
santahatButton = new JCheckBox("Santa hat");
santahatButton.setMnemonic(KeyEvent.VK_E);
redshirtButton = new JCheckBox("Red Shirt");
redshirtButton.setMnemonic(KeyEvent.VK_R);
brownshirtButton = new JCheckBox("Brown Shirt"); …Run Code Online (Sandbox Code Playgroud) 在帮助系统上工作,我希望每个组件在鼠标悬停时提供一些帮助并且"?" 键是按下的.有点像工具提示,除了更广泛的帮助 - 基本上一个小的Web浏览器旨在弹出和显示文本,图像或更多.
我发现无论鼠标在哪里,输入总是转到同一个KeyListener.是否应该一次只有一个活动?
对于它的价值,这是现在正在运行的版本 - 感谢您的建议!
/**
* Main class JavaHelp wants to support a help function so that when
* the user types F1 above a component, it creates a popup explaining
* the component.
* The full version is intended to be a big brother to tooltips, invoking
* an HTML display with clickable links, embedded images, and the like.
*/
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import … 在我正在开发的游戏中,我遇到了一些最近的滞后峰值.它是一致的,大约在同一时间发生.使用java profiler jvisualvm我发现它发生在特定线程似乎重启或同时(AWT-EventQueue-0):

除此之外,没有明显的原因,不是堆使用,处理器使用,内存空间或方法使用.它有时会导致ConcurrentModificationException绘制我的对象数组时,但这应该只会发生很大的延迟,而且我的游戏几乎没有密集.
我不记得最近对该项目进行了任何更改,但是我最近进行了以下操作:
我在32位XP上运行Eclipse Indigo-service-1.我的处理器几乎没用过.
我有一个越来越慢的 GUI 应用程序。我想开始为各种 GUI 任务引入计时——但是,我们的许多 GUI 操作会触发其他操作,然后“稍后调用”以触发其他操作。
最终,一切都安定下来,没有什么可做的了。此时,我想停止计时器并报告 GUI“动作”花费了多长时间。
我认为这样做的方法是实现一个名为invokeOnceIdle(Runnable task). 只有当 AWTEventQueue 为“空”时,该方法才会执行提供的任务。即提供的“任务”应该是队列中的最后一件事。
这样做的一种方法是,是否有一种方法可以指定“最低”优先级SwingUtilities.invokeLater- 但这是不可能的。
我接下来查看是否可以“invokeLater”一个 Runnable 来检查事件队列是否为“空”——但是没有公共方法可以查看事件队列是否真的为空。
做到这一点的最佳方法是什么?
假设我拥有的方法有时在Event Dispatch Thread上调用,有时则不然.现在假设我希望在该方法中的一些代码调用除事件调度线程之外的线程.
有没有办法在此时在EDT以外的线程上运行某些代码?
我试过这个:
if (SwingUtilities.isEventDispatchThread()) {
new Runnable() {
@Override
public void run() {
myMethod();
}
}.run();
} else {
myMethod();
}
Run Code Online (Sandbox Code Playgroud)
但是即使我创建了一个新的Runnable,myMethod()也最终在EDT上运行.
有没有办法在此时在EDT以外的线程上运行myMethod()?
AWT-EventQueue线程和AWT-Shutdown线程没有在我们的应用程序中关闭.是否有调试技术来找出它们为什么不是?有什么特别的东西要找?
我对 Java 编程非常陌生,我正在上一门基于 Java 的课程。我目前正在做这个基于布尔值和RadioButtons 的咖啡项目。我相信我几乎已经完成了,除了我在控制台上收到此错误消息。如果还有其他错误,请告诉我,以便我修复!
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1 "
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
public void purchase()
{
//local variables
String quantityString, buttonString, nameString, coffeeType;
float subTotalFloat, priceFloat, taxFloat, grandTotalFloat;
int quantityInteger;
//Format the values to currency format
DecimalFormat valueDecimalFormat = new DecimalFormat("$#0.00");
//retrieve the input from the user
nameString = nameTextField.getText();
quantityString = quantityTextField.getText();
buttonString = coffeeType ();
//change data types
quantityInteger = Integer.parseInt(quantityString);
...
}
Run Code Online (Sandbox Code Playgroud) 我对线程有点陌生,所以请耐心等待。所有相关类都将放在文本下方的一处,以便于参考。
背景故事:
我按照本教程创建了一个简单的类似乒乓球的游戏:http : //www.edu4java.com/en/game/game1.html
一切正常,然后我进行了修改以更好地了解它是如何工作的。在本教程中,有一个主要方法可以连续播放动画。根据教程作者的说法,Thread.sleep(10)“...告诉处理器正在运行的线程必须休眠 10 毫秒,这允许处理器执行其他线程,特别是调用 Paint 方法的 AWT-EventQueue 线程。”
现在,我的问题是:
(只是为了好玩和练习 Java,)我为我制作的所有各种小程序和游戏创建了一个“启动器”。我还没有让乒乓球游戏在启动器中工作。如果 pong 框架内没有 main 方法,动画就永远不会运行。我在下面的代码中保留了 main 方法,这样它就可以工作了。我将如何从 main 以外的其他地方启动动画?
这是代码:
Frame和main方法:
package pongGame;
import javax.swing.*;
public class PongMainGUI extends JFrame
{
private static final int WINDOW_WIDTH = 500;
private static final int WINDOW_HEIGHT = 800;
private static AnimationPanel panel;
public PongMainGUI()
{
//This line sets the title, and, since it calls the super constructor, it calls setTitle().
super("Pong!");
panel = new AnimationPanel(this);
//This …Run Code Online (Sandbox Code Playgroud)