2017-05-16 2 views
1

J'ai fait cette demande:Le bouton Effacer ne fait que vider le compteur JLabel mais ne le réinitialise pas.

image

Par exemple, lorsque je clique sur le bouton clair lorsque le compteur JLabel (pointsAvailable) est 19 le compteur JLabel se vide comme prévu, mais quand je commence à ajouter des points encore une fois, il commence à partir de 19 pas 40 comme défini au début. Je voudrais le faire pour réinitialiser revenir à 40 au lieu de simplement faire le champ vide

code pour le bouton clair

private void JButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    speedPoints.setText(""); 
    attackPoints.setText(""); 
    defencePoints.setText(""); 
    powerPoints.setText(""); 
    agilityPoints.setText(""); 
    focusPoints.setText(""); 
    availablePoints.setText(""); 
} 

Code pour JLabel contre

public class addingPointsUI extends javax.swing.JFrame { 
int pointsAvailable=40; 
     int speed=0; 
     int power=0; 
     int focus=0; 
     int agility=0; 
     int defence=0; 
     int attack=0; 

Code pour les boutons +/-: pour me permettre d'ajouter ou de diminuer la valeur "exemple de bouton d'alimentation"

private void powerMinusActionPerformed(java.awt.event.ActionEvent evt) {           
    if (power > 0){ 
     if (pointsAvailable <= 0) { 
    JOptionPane.showMessageDialog(null, "You are out of available points"); 
    return; 
     } 
     power = power - 1; 

     pointsAvailable = pointsAvailable +1; 

     availablePoints.setText(String.valueOf(pointsAvailable)); 

     powerPoints.setText(String.valueOf(power)); 

    }else { 

      JOptionPane.showMessageDialog(null,"You cannot take anymore points from Power"); 
    } 
} 

Merci pour vos aimables réponses.

Répondre

0

je peux penser rapidement de deux solutions: 1. Dans le gestionnaire d'événements de votre bouton clair sont les suivantes:

private void JButtonActionPerformed(ActionEvent evt){ 
    ... 
    pointsAvailable=40; 
    speed=0; 
    power=0; 
    focus=0; 
    agility=0; 
    defence=0; 
    attack=0; 
} 

Ceci permet de réinitialiser toutes vos statistiques. 2. Ou vous pouvez ajouter une instruction if aux écouteurs de chaque bouton qui ajoute ou soustrait une statistique qui vérifiera si la statistique spécifique est vide. Par exemple, pour les boutons de vitesse le code ressemblerait à ceci:

if (speedPoints.getText() == ""){ 
    pointsAvailable += speed; 
    speed = 0; 
} 
+0

Etes-vous sûr que votre code est correct? La solution 1 ne fait rien parce que les variables sont dans les speedpoints JLabel. La solution 2 me donne "comparer les chaînes en utilisant le message == ou! =". –

+0

Rendez vos variables globales. Lorsque vous avez des variables importantes du type qui sont maintenant, elles doivent être globales et vous pouvez comparer les chaînes avec String.compareTo (anotherString). –

+0

comment rendre les variables globales? –

0

trouvé ma propre solution sur Google:

private void ClearActionPerformed(java.awt.event.ActionEvent evt) {  
speedPoints.setText(String.valueOf(0)); 
powerPoints.setText(String.valueOf(0)); 
agilityPoints.setText(String.valueOf(0)); 
defencePoints.setText(String.valueOf(0)); 
focusPoints.setText(String.valueOf(0)); 
attackPoints.setText(String.valueOf(0)); 
availablePoints.setText(String.valueOf(40)); 
}          

fonctionne parfaitement

1

Utilisez un JSpinner avec SpinnerNumberModel. Changez la valeur du modèle. Le composant sera mis à jour et d'autres changements agiront sur la valeur actuelle du modèle.