我有一个 JFrame,它是我的主要应用程序,该应用程序通过Robot
类移动鼠标。我想运行我的扩展类Thread
并让它能够启动、暂停和停止预定义的鼠标移动事件列表,并且还能够在主 JFrames 文本区域中写入以让用户知道发生了什么。
目前,我在鼠标移动的无限循环中启动线程,并在整个循环中更新主文本区域。它运行良好,但是在开始在 Netbeans 中重写我的应用程序后,我用来设计 JFrames 的设计器正在使用一个摆动文本区域,我认为该区域在线程 MouseMover 运行时不会更新其文本。
我已经这样定义了这个类
public class MouseMover extends Thread
{
MainView theApp;
public void run()
{
try
{
rob = new Robot();
}
catch (AWTException e1) {mainView.newStatusLine("The Robot could not be created");return;}
while(true) {}
}
public void setApp(MainView view)
{
theApp = view;
public void doIt()
{
while(true){
// move mouse around screen
rob.mouseMove(0, 100);
theApp.statusTextArea.setText("moved the mouse");
}
}
}
我这样定义线程
public class MainView extends javax.swing.JFrame
{
static MouseMover mover;
public MainView()
{
mover = new MouseMover();
}
public void on_goBtn()
{
mover.doIt();
}
}
当我提出类似问题时,有人告诉我,我启动线程错误,我现在正在尝试修复它并添加更多功能。那么如何正确启动 MouseMover 线程,以便我的 JFrame 在线程也可以写入其文本区域时保持响应?更重要的是,我如何能够“暂停”MouseMover 的 doIt() 方法?