Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #5455

Re: setText() is not always updating Jtextfield and Jlabel items

From Knute Johnson <nospam@rabbitbrush.frazmtn.com>
Newsgroups comp.lang.java.gui
Subject Re: setText() is not always updating Jtextfield and Jlabel items
Date 2015-02-26 20:05 -0800
Organization A noiseless patient Spider
Message-ID <mcoqd0$84k$1@dont-email.me> (permalink)
References <20150226132317.6bbbc29a@efreet.linux>

Show all headers | View raw


On 2/26/2015 12:23 PM, Kevin Nathan wrote:
>
> I could use some direction about where to look for this. I am still
> pretty new to Java. I have a user input screen with multiple
> JTextFields for user input and matching JLabels for informational
> output for users.
>
> This is for a livestock auction system. While the animals are moving
> around on the scale, the scale instrument (a serial port device)
> returns an indication of "motion" that we want to show to the user.
> When the motion goes away, the actual weight gets written to the Weight
> JTextField. However, during the motion (which can be anywhere from
> non-existent to many seconds) we want to write "Motion" in the
> textfield and the actual, changing, weights in the label field. This is
> what is not happening. After the motion stops, the true weight does get
> written correctly, using setText().
>
> The serial port routine returns an error code of -2 if there is motion
> (and several other error codes that are handled correctly) and that is
> what I am using. Here are some code snippets to show what is being
> attempted, I hope it's enough to make sense:
>
>
> MainScreen class:
> -----------------
>
> // Trying new "Motion" routine:
> while (clerkFuncs.scaleErr == -2) {
>      weight = clerkFuncs.readScale(tr);
>      showMotion(weight);
> }
>
>
> private void showMotion(long wt) {
>
>      noteField[1][weightRow].setText(Long.toString(wt));
>      // noteField[1][weightRow].setText("<html><font
>      color='red'>Motion</font></html>");
>
>      editField[1][weightRow].setText("Motion");
> }
>
>
> ClerkFuncs class:
> -----------------
>
> // weight and weightStr are global in ClerkFuncs. I don't like it
> // but that's how it was written.
>
> public long readScale(TransClass tr) {
>      clearScaleReturns(); // clears weight string and error var
>
>      if (!scale.scalePortErr) {
>          getAutoWeight();
>          checkForWeightErrors();
>      } else { // manual weight entry
>          getManualWeight();
>      }
>      return (weight);
> }
>
>
> private void getAutoWeight() {
>      scale.startScale();
>
>      do {
>          weightStr = scale.getWeight();
>      } while (scale.getStatus() && weightStr.equals(""));
>
>      scale.stopScale();
> }
>
>
> private void checkForWeightErrors() {
>      scaleErr = scale.scaleErr;
>      try {
>          String trimmed = weightStr.trim();
>          if (!trimmed.isEmpty()) {
>              weight = Long.parseLong(trimmed);
>          } else {
>              weight = 0L;
>          }
>      } catch (NumberFormatException ex) {
>          System.out.println("checkForWeightErrors Exception: " + ex);
>          System.out.println("weightStr: [" + weightStr + "]");
>          scaleErr = -3; // bad scale return
>          weight = 0L;
>      }
> }
>
> I am completely puzzled why "setText" does not work in this instance,
> but works everywhere else I am using it. Thanks for any help, or
> pointers to pages that may help me to understand this
>
>

Two suggestions, first a call to JTextField.setText() must be on the 
Event Dispatch Thread.  I don't see you wrapping your calls on the EDT.

Second, if the GUI isn't updating it is probably because the updates are 
not on the EDT or the EDT is blocked for some reason.  Without more 
coherent code it is difficult to tell what is going on.

But that is where I would look.

-- 

Knute Johnson

Back to comp.lang.java.gui | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

setText() is not always updating Jtextfield and Jlabel items Kevin Nathan <knathan@project54.com> - 2015-02-26 13:23 -0700
  Re: setText() is not always updating Jtextfield and Jlabel items Jeff Higgins <jeff@invalid.invalid> - 2015-02-26 19:43 -0500
    Re: setText() is not always updating Jtextfield and Jlabel items Kevin Nathan <knathan@project54.com> - 2015-02-27 08:21 -0700
  Re: setText() is not always updating Jtextfield and Jlabel items Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2015-02-26 20:05 -0800
    Re: setText() is not always updating Jtextfield and Jlabel items Kevin Nathan <knathan@project54.com> - 2015-02-27 08:24 -0700
  Re: setText() is not always updating Jtextfield and Jlabel items Nigel Wade <nmw@ion.le.ac.uk> - 2015-02-27 15:45 +0000
    Re: setText() is not always updating Jtextfield and Jlabel items Kevin Nathan <knathan@project54.com> - 2015-03-02 09:33 -0700

csiph-web