2010-11-28 33 views
0

Tout d'abord, soyez assuré que j'ai lu tous les tutoriels de l'article & d'Oracle Java environ 6 fois maintenant, donc si vous pouvez aider, vous devrez faire mieux que de fournir un lien vers une page Oracle. Désolé si cela semble impoli.Comment puis-je faire apparaître une chaîne dans un jLabel? Environ

Apparemment, je ne sais pas comment fonctionnent les chaînes. J'essaye d'obtenir 4 jButtons pour envoyer leur valeur à une chaîne quand elle est poussée, de sorte que seul le dernier bouton qui a été poussé enregistre son (nom, texte, tout ce qui fonctionne) dans une chaîne ou une valeur, afin que je concatène valeur au message d'un jLabel.

Donc, il y a 2 problèmes ici, je ne dois pas avoir les boutons "Status" bien installés, et puis je dois pouvoir prendre la valeur et la mettre dans le jLabel.

Vous pouvez voir où je suis coincé en regardant cette capture d'écran: http://krisbunda.com/gui2.png

Voir où il est dit boutons « null » au lieu de la valeur de 1 de 4 « statut » (« shipped » ou « 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(); 
} 

Toute aide est grandement appréciée.

EDIT:

Merci pour l'aide, voici la solution que j'ai compris pour la question « nouvelle ligne »: je 2 JLabels. GUI for JLabel new line

et code comme ceci:

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

et est ici un extrait de code pour illustrer le correctif répondu par "Hovercraft pleine d'anguilles":

1.) ajouter une variable non locale/string:

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

    public String status = new String(); { 
    } 

2.) bouton modifier le code:

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

Répondre

1

La variable d'état dans les procédés ci-dessus sont tous déclaré dans le procédé et donc visible que dans le procédé. Les variables disparaîtront dès que la méthode sera terminée. Mieux vaut changer une variable StringBuilder qui est déclarée dans la classe elle-même.

Par exemple, je fais état d'un champ de chaîne de classe/variable non StringBuilder, et non une variable locale, et changer votre bouton méthode de gestionnaire comme ceci:

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

Juste couru le programme, et cela a fonctionné! Merci pour l'aide! Une autre question si vous êtes toujours là- comment puis-je définir une "nouvelle ligne"? "\ n" ne fonctionne pas pour moi ... – Kris

+0

Pour cela vous devez utiliser html ... En html vous devrez utiliser
Plus d'informations ici: http://download.oracle.com/javase/tutorial /uiswing/components/html.html –

+1

Écoutez eugener concernant l'utilisation de html si vous voulez des JLabels multi-lignes. Toutefois, si vous allez afficher plus de quelques lignes de données, envisagez d'afficher dans un JTextArea dans un JScrollPane. –

0

Cette example montre comment mettre à jour une étiquette chaque fois qu'un bouton est cliqué.