gpt4 book ai didi

java - 按 JRadiobutton 卡住 GUI

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:32 24 4
gpt4 key购买 nike

我是 Swing 的新手,所以这似乎是一个非常幼稚的问题。

我有一个 JFrame,它显示一个初始语句和两个单选按钮。 RadioButton1 接受,RadioButton2 拒绝。如果用户选择接受,程序将继续。所以我为 Accept 创建了一个 ActionListener,以便我的其余代码都在这个 ActionListener 中。但是,只要用户按下接受,GUI 就会卡住。按 Reject 只是存在于程序之外。

    public void game() throws Exception
{
jTextArea1.setLineWrap(true);
jTextArea1.setWrapStyleWord(true);
jTextArea1.setText("Please choose Accept or Reject");


jRadioButton1.setVisible(true);
jRadioButton2.setVisible(true);

jRadioButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {

jRadioButton1.setVisible(false);
jRadioButton2.setVisible(false);
repaint();
//more code
});
}

此后我连接到服务器,自从我使用 System.out.println() 以来工作正常,所有输出都正常,只是 GUI 被卡住了。

有没有更好的方式在用户按下“接受”时继续?

最佳答案

您可以查看使用 SwingWorker 类。

基本上,Java Swing 应用程序是单线程的,如果您执行任何进程密集型任务,控制权将转移到该代码部分,UI 会挂起,等待控制权交还。

编辑:您还可以查看 SwingUtilities 类。

编辑:关于使用 SwingWorker 类的基本信息:

您可以创建一个扩展 SwingWorker 的新类并实现 public String doInBackground() {
/*在这里做一些事情*/
}
方法。在您的 ActionListener 事件中,创建 SwingWorker 的实例并调用 swingWorkerObject.execute() 方法以开始执行 doInBackground 方法。

此处有更多详细信息:http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html

关于java - 按 JRadiobutton 卡住 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061260/

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