gpt4 book ai didi

Java Swing : do I need two threads?

转载 作者:行者123 更新时间:2023-12-02 05:16:09 24 4
gpt4 key购买 nike

我有这个方法来更新 TextArea 的值:

private void startShow(String fileName, TextArea textArea) throws InterruptedException{
textArea.setVisible(true);
int ptr=0;
String[] tokens=s.split(" ");
while (ptr<tokens.length){
try {
Thread.sleep(1000+textSpeed*50); //1000 milliseconds is one second
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
textArea.setText(tokens[ptr]);
ptr++;
}
}

这里,textSpeed 是一个类变量,可以通过单击如下按钮进行更新:

Button button_1 = new Button("+");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textSpeed++;
}
});

当我的代码处于 while 循环中时,该按钮不可单击,因此 textSpeed 无法更改。我的问题是:

1)我可以在不使用多线程的情况下使按钮可点击吗?我刚刚开始使用 Java Swing,以前没有多线程经验,所以我不知道是否有更简单的解决方案。

2)如果需要多线程,我将如何在上面的代码中实现它?任何提示或建议都会很棒。谢谢!

最佳答案

关于您的问题:

1) Can I make the button clickable without multithreading? I just started Java Swing and I have no previous experience with multithreading so I don't know if there's a simpler solution.

直接的答案是否定的,您必须使用某种形式的多线程,但是您可以通过使用 Swing Timer间接执行线程。为您解决延误问题。有关详细信息,请查看教程。对于您的程序,您可能会使用 actualSpeed 来设置 Timer 对象的延迟时间。

2) If multithreading is necessary, how would I implement that in the above code? Any tips or suggestions would be great. Thanks!

这个问题有点宽泛,也许过于宽泛,在这种情况下,我发现最好的答案是你阅读教程。对于 Swing 线程,请检查 Concurrency in Swing 。消化完这些信息后,如果以后您有更具体的问题,就会更容易用具体的答案来回答。

关于Java Swing : do I need two threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942576/

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