我的JButton ActionListener有问题。我在另一个类中定义了一个doTheCleaning()方法,当调用该方法时,会对GUI进行一系列更改。
public void doTheCleaning(){
//change image icon
//had thread.sleep here
//insert to text area
//had thread.sleep here
//etc
}
然后,在另一个类中,我实例化了包含doTheCleaning()方法的类,并用jbutton的actionperformed()方法编写了ActionListener,如下所示:
public void actionPerformed(ActionEvent e){
//some code
//newClass.doTheCleaning();
}
我知道如何执行其他操作,比如addActionListener()和其他东西,所以不需要对此提出疑问。我关心的是,调用doTheCleaning()方法时在GUI中执行的所有更改仅在单击按钮后才应用。当发生这种情况时,在我的标签和textarea中发生的更改之间的顺序没有显示。如果我直接在tester类中调用它,那么代码可以正常工作,但是在actionperformed方法中调用它只显示GUI的最终状态。我需要显示哪个元素首先更改,然后是什么,依此类推。
当我需要这些更改只在单击JButton时发生时,我如何实现它呢?
**我还不太擅长用java做GUI。我希望你们能理解我的观点而不需要我给出我的代码。但如果有必要的话我可以。多谢了。
不要在EDT中执行任何密集操作,否则GUI将没有响应,您可能看不到GUI更新。您可以使用的最佳选择是SwingWorker
:
>
重写doinbackground()
,并将任何长操作放在此方法中,使其运行在单独的线程上,而不是EDT上。
对于doinbackground()
中的任何GUI创建或更改GUI组件的状态,请使用publish(v...chunks)
将数据发送到进程(list
。您需要重写进程(列表
。还要注意,process(list
是在EDT上执行的。
在doinbackground()
返回后,done()
在EDT上执行,您可以重写它以将其用于任何GUI更新。还可以使用get()
检索从doinbackground()
返回的值。
请注意,swingworker
是泛型的,您需要指定类型。T
是从DoInBackground()
和Get()
返回的对象类型,而V
是通过Publish(v..chunks)
传递给进程(列表
的元素类型。
execute()
方法通过首先调用DoInBackground()
来启动swing工作者。
有关这方面的更多信息,请阅读Swing中的并发。
问题内容: 我的JButton ActionListener出现问题。我在另一个类中定义了doTheCleaning()方法,该类在调用时对我的GUI进行了一系列更改。 然后在另一个类中,我实例化了包含doTheCleaning()方法的类,并用我的actionperformed()方法为我的jbutton编写了ActionListener,如下所示: 我知道如何做剩下的事情,例如addActio
问题内容: 我在NetBeans中设计了两个JFrame。 当我单击“规则”按钮(即放在JFrame1上)时,它将打开第二个JFrame(但JFrame2在JFrame1的窗口上打开,这是我不想要的)。在第二个JFrame中,有一个“关闭”按钮。但是,当我单击此按钮时,我希望打开JFrame1并且它也能正常工作,但是JFrame2实际上没有关闭,并且JFrame1出现在JFrame2上方。 简而言
问题内容: 我创建了一个扩展JDialog的类,其中有一些复选框和3个按钮:接受,取消和全选。 当用户单击全选时,应选中每个复选框,如果再次单击,则应取消选中每个复选框。效果很好,但我还希望按钮的文本在“全选”和“全选”之间切换。我在这里遇到了麻烦,因此当用户单击按钮并将文本更改为“取消全选”时,该按钮消失了。 我在这里将类简化为最简单的形式: 我看不出有什么问题。有什么帮助吗? 问题答案: 该按
我正在尝试做一些非常简单的事情,在点击按钮时更改文本。 我似乎无法使用它,有人能告诉我添加ActionListener的正确位置吗? 主要类别 atmGUI类 编辑: 这是产生的错误 类型new ActionListener(){}必须实现继承的抽象方法ActionListener.actionPerform(ActionEvent)
当我的JButton被点击时,我的JPanel不会出现。当我在go()方法中添加JPanel时,它确实会出现。然而,当我尝试通过单击JButton来执行它时,它并不起作用。但是,程序会进入侦听器的actionPeformed()方法的循环。
问题内容: 如何更改的上一个点击的时候? 我试图让3个按钮将样式分别更改为或或 我已经读过,但是我没有什么比我们只能 我发现Java中的字体类比应该的:S更复杂。 问题答案: 您需要调用not setStyle。 例如,如果要保留相同的字体,但更改名为“ field”的JTextField的样式,则可以执行以下操作: 编辑 要将字体设置为粗体和斜体,可以使用位图或位图: 请注意,这使用的是按位包含