小编Har*_*per的帖子

对单个线程使用sleep()

我对java很新,并开始使用不同的线程来使用wait()sleep()在我的代码的一部分上运行其他代码.

对于这个项目,我使用JFramejavax.swing.*java.awt.*进口.我想要做的是让其中一个线程(在我的代码中它是主要的,起始线程)允许玩家在tic tac toe board上选择一个空间,当他们点击它时,它将改变图标,并且然后AI将等待1秒钟,然后从我创建的第二个线程回放.

不幸的是,每当我调用ait.sleep(1000)(ait是我的线程名称)时,两个线程都会在完成执行之前等待1秒.谁能告诉我为什么睡一个线程会阻止我的整个执行?

java swing multithreading event-dispatch-thread thread-sleep

3
推荐指数
1
解决办法
6231
查看次数

如何创建KeyEvent

创建时KeyListener,它需要以下字段:

public void keyPressed(KeyEvent e) 
{

}
public void keyReleased(KeyEvent e) 
{

}
public void keyTyped(KeyEvent e) 
{

}
Run Code Online (Sandbox Code Playgroud)

但是,当我放入System.out.println(e)keyPressed方法时,当按Enter键时它将返回此值:

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=10,keyText=?,keyChar=?,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on javax.swing.JButton[,1,1,100x100,alignmentX=0.0,alignmentY=0.5,border=com.apple.laf.AquaButtonBorder$Dynamic@13b33a0e,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=2,bottom=0,right=2],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=HI,defaultCapable=true]
Run Code Online (Sandbox Code Playgroud)

显然这不是KeyEvent,所以我不能使用它来调用keyPressed(KeyEvent e)。我想要做的是模拟一个按键(特别是Enter键)的按下,这种方式可以激活keyListener并将该文本输出到JTextArea中。

注意:我查看了如何完美模拟KeyEvent的可接受答案 ,并且几乎不了解其实际工作原理,并且我希望我理解代码。我也在这里看过如何在Java中模拟键盘按键?,但是我不能让机器人工作;当应该按任何键时,什么也没发生。

java keyevent keylistener jtextfield

2
推荐指数
1
解决办法
3万
查看次数

如何实现mouseListener

我知道在课程开始时你可以编写implements ActionListener,然后你必须创建public void actionPerformed(ActionEvent e)它才能使它变得可行.是否可以使用mouseListener执行相同的操作?如果是这样,你有什么方法来代替actionPerformed

编辑:这是我的班级声明:

public class Basic_Book extends JFrame implements ActionListener implements MouseListener
Run Code Online (Sandbox Code Playgroud)

这是我旁边显示的错误消息:

  • 可序列化类Basic_Book不声明long类型的静态最终serialVersionUID字段

  • 令牌"implements"上的语法错误,.预期

java eclipse actionlistener mouselistener

1
推荐指数
1
解决办法
9014
查看次数