I've had numerous problems over the years trying to update java components such as labels before carrying out other tasks and reaearch tells me that Threads are the way to do this.
see also: java-threads.html
The following is an example of how I achieved this on one such occasion;
public class Form1 extends javax.swing.JFrame
{
void enableButtons(boolean state)
{
jButton1.setEnabled(state);
jButton2.setEnabled(state);
}
void preProcess()
{
//do work to change controls, example disable button
statusLabel1.setText("Busy");
enableButtons(false);
jLabel1.setVisible(true);
}
void finishedProcessing(boolean state)
{
//do work to change controls, example enable button
jLabel1.setVisible(false);
enableButtons(true);
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt)
{
preProcess(); // put some control stuff in here
this.repaint(); //repaint after the preProcess() is finished.
coord.doWorkInThread();//Do worth in a different class
}
}
public class someClass
{
void doWorkInThread()
{
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
//do Work here...
form1.finishedProcessing(); //back to GUI
}
});
t.start();
}
}
Heisenberg - Digital Alchemist, Software Architect, Automation Specialist and Mechanical Engineer.
Labels
Android
(1)
bash
(2)
boost
(2)
C
(34)
C++
(2)
cheatsheet
(2)
CLion
(6)
css
(3)
Debian
(33)
DL
(17)
Docker
(2)
Dreamweaver
(2)
Eclipse
(3)
fail2ban
(4)
git
(5)
GitHub
(4)
Hacking
(3)
html
(8)
http
(1)
iOS
(1)
iPad
(1)
IRC
(1)
Java
(31)
javascript
(3)
Linux
(167)
Mac
(19)
Machine Learning
(1)
mySQL
(48)
Netbeans
(4)
Networking
(1)
Nexus
(1)
OpenVMS
(6)
Oracle
(1)
Pandas
(3)
php
(16)
Postgresql
(8)
Python
(9)
raid
(1)
RedHat
(14)
Samba
(2)
Slackware
(47)
SQL
(14)
svn
(1)
tar
(1)
ThinkPad
(1)
Virtualbox
(3)
Visual Basic
(1)
Visual Studio
(1)
Windows
(2)
Friday, 22 November 2019
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: only a member of this blog may post a comment.