Question

First off, rest assured that I've read every Oracle Java article & tutorial about 6 times now, so if you can help, you'll have to do better than providing a link to an Oracle page. Sorry if that sounds rude.

Apparently I don't know how Strings work. I'm trying to get 4 jButtons to send their value to a string when pushed, so that only the last button that was pushed will record its (name, text, whatever works) in a string or value, so that I can concatenate that value to a jLabel's message.

So there's 2 problems here, I must not have the "Status" buttons set up right, and then I need to be able to take the value and put it in the jLabel.

You can see where I'm stuck by looking at this screenshot: http://krisbunda.com/gui2.png

See where it says "null" instead of the value of 1 of 4 "status" buttons ("Shipped" or "Loaded", etc.)

    private void shippedButtonHandler(java.awt.event.ActionEvent evt) {                                      
    // TODO add your handling code here:
    StringBuilder status = new StringBuilder(loadedButton.getText());
}                                     

private void loadedButtonHandler(java.awt.event.ActionEvent evt) {                                     
    // TODO add your handling code here:
    StringBuilder status = new StringBuilder(loadedButton.getText());
}                                    

private void outReadyButtonHandler(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    StringBuilder status = new StringBuilder(outsideReadyButton.getText());
}                                      

private void outNotReadyButtonHandler(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    StringBuilder status = new StringBuilder(outsideNotReadyButton.getText());
}                                         

private void enterButtonHandler(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Confirmation.setVisible(true);
    Confirmation.setBounds(300,200,900,400);
    Confirmation.setModal(rootPaneCheckingEnabled);
    confirmationLabel.setText("You are about to send this message:"
            + "\n #" + display.getText()+ " is currently " + status);
}

private void confirmationNoButtonHandler(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    Confirmation.dispose();
}

Any help is greatly appreciated.

EDIT:

Thanks for the help, here's the workaround I figured out for the "new line" issue: I used 2 JLabels. GUI for JLabel new line

and coded like so:

    private void enterButtonHandler(java.awt.event.ActionEvent evt) {                                    
    // TODO add your handling code here:
    Confirmation.setVisible(true);
    Confirmation.setBounds(200,300,1000,400);
    Confirmation.setModal(rootPaneCheckingEnabled);
    confirmationLabel1.setText("You are about to send this message:");
    confirmationLabel2.setText("PS# " + display.getText()+ " is currently " + status);
}                                   

and here's a snippet of code to illustrate the fix answered by "Hovercraft full of eels":

1.) add non-local variable/string:

public class PlanterStatusUI extends javax.swing.JFrame
   {
    /** Creates new form PlanterStatusUI */
    public PlanterStatusUI() {
        initComponents();
    }

    public String status = new String(); {
    }

2.) change button code:

    private void shippedButtonHandler(java.awt.event.ActionEvent evt) {                                      
    // TODO add your handling code here:
    status = shippedButton.getText();
}                                     
Was it helpful?

Solution

The status variable in the methods above are all declared in the method and thus visible only in the method. The variables will disappear as soon as the method is over. Better to change a StringBuilder variable that is declared in the class itself.

For instance, I'd make status a class String field/variable, not StringBuilder, and not a local variable, and change your button handler method like so:

  private void outReadyButtonHandler(java.awt.event.ActionEvent evt) { 
      status = outsideReadyButton.getText();
  }                                      

OTHER TIPS

This example shows how to update a label each time a button is clicked.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top