Как мне получить строку, чтобы показать в jLabel? - PullRequest
0 голосов
/ 28 ноября 2010

Прежде всего, будьте уверены, что я прочитал каждую статью и учебник по Oracle Java около 6 раз, поэтому, если вы можете помочь, вам придется сделать лучше, чем предоставить ссылку на страницу Oracle. Извините, если это звучит грубо.

Видимо, я не знаю, как работают строки. Я пытаюсь получить 4 jButton для отправки их значения в строку при нажатии, так что только последняя нажатая кнопка будет записывать ее (имя, текст, все, что работает) в строку или значение, так что я могу объединить это значение для сообщения jLabel.

Итак, есть две проблемы: у меня не должно быть правильной настройки кнопок «Состояние», а затем я должен иметь возможность взять значение и поместить его в jLabel.

Вы можете увидеть, где я застрял, посмотрев на этот скриншот: http://krisbunda.com/gui2.png

Посмотрите, где написано «ноль» вместо значения 1 из 4 кнопок «Состояние» («Отправлено» или «Загружен» и т. Д.)

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

Любая помощь очень ценится.

EDIT:

Спасибо за помощь, вот обходной путь, который я нашел для проблемы «новой строки»: я использовал 2 JLabels. GUI for JLabel new line

и кодируется так:

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

и вот фрагмент кода, чтобы проиллюстрировать исправление, на которое ответил "Hovercraft, полный угрей":

1.) Добавить нелокальную переменную / строку:

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

    public String status = new String(); {
    }

2.) Изменить код кнопки:

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

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

Переменная состояния в вышеприведенных методах объявляется в методе и, таким образом, видна только в методе.Переменные исчезнут, как только метод закончится.Лучше изменить переменную StringBuilder, которая объявлена ​​в самом классе.

Например, я бы сделал статус полем / переменной класса String, а не StringBuilder и не локальной переменной, и изменил бы метод обработчика кнопкивот так:

  private void outReadyButtonHandler(java.awt.event.ActionEvent evt) { 
      status = outsideReadyButton.getText();
  }                                      
0 голосов
/ 28 ноября 2010

В этом примере показано, как обновлять метку при каждом нажатии кнопки.

...