Labels

Android (1) bash (2) boost (2) C (34) C++ (2) cheatsheet (2) CLion (6) css (3) Debian (33) DL (17) Docker (1) Dreamweaver (2) Eclipse (3) fail2ban (4) git (5) GitHub (4) Hacking (3) html (8) http (1) iOS (1) iPad (1) IRC (1) Java (30) javascript (3) Linux (164) Mac (19) Machine Learning (1) mySQL (47) 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 (45) SQL (14) svn (1) tar (1) ThinkPad (1) Virtualbox (3) Visual Basic (1) Visual Studio (1) Windows (2)

Friday 22 November 2019

Updating java GUI components

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();
    }


}


No comments:

Post a Comment

Note: only a member of this blog may post a comment.