Reputation: 215
Basically, I want the text of 'lblIndividualScore' to change when the button 'btnCalculate' is clicked...but when i click it, the label doesn't change. I put a println right after it and I know that everything is being calculated correctly...it just won't change.
below is the code portions, any ideas?
Here is the action listener snippet
else if (e.getSource() == btnCalculate) {
setClassification();
setTargetOrLight();
setProneTotal();
setStandingTotal();
setKneelingTotal();
setIndividualTotal();
}
Here is what the action listener calls
public void setClassification() {
classification = (String)cmbClassification.getSelectedItem();
if (classification.equals("Senior") && target) {
txtProne2.setEditable(true);
txtKneeling2.setEditable(true);
txtStanding2.setEditable(true);
txtProne2.setVisible(true);
txtKneeling2.setVisible(true);
txtStanding2.setVisible(true);
lblStanding.setText("Standing");
lblKneeling.setText("Kneeling");
}
else if (classification.equals("Intermediate") || (classification.equals("Senior") && !target)) {
txtProne2.setEditable(false);
txtKneeling2.setEditable(false);
txtStanding2.setEditable(false);
txtProne2.setVisible(false);
txtKneeling2.setVisible(false);
txtStanding2.setVisible(false);
lblStanding.setText("Standing");
lblKneeling.setText("Kneeling");
}
else {
txtProne2.setEditable(false);
txtKneeling2.setEditable(false);
txtStanding2.setEditable(false);
txtProne2.setVisible(false);
txtKneeling2.setVisible(false);
txtStanding2.setVisible(false);
lblStanding.setText("Prone");
lblKneeling.setText("Prone");
}
}
public void setTargetOrLight() {
if (((String)cmbTarget.getSelectedItem()).equals("Target Rifle")) {
target = true;
}
else {
target = false;
}
}
public void setProneTotal() {
try {
if (classification.equals("Senior") && target) {
int prone1 = 0;
int prone2 = 0;
prone1 = Integer.parseInt(txtProne1.getText());
prone2 = Integer.parseInt(txtProne2.getText());
proneTotal = prone1 + prone2;
}
else if (classification.equals("Intermediate") || (classification.equals("Senior") && !target)) {
proneTotal = Integer.parseInt(txtProne1.getText());
}
else {
int prone1 = Integer.parseInt(txtProne1.getText());
int prone2 = Integer.parseInt(txtStanding1.getText());
int prone3 = Integer.parseInt(txtKneeling1.getText());
proneTotal = prone1 + prone2 + prone3;
}
}
catch(NumberFormatException nfe) {
System.err.println(nfe + ": You must enter a valid number - Prone");
}
}
public void setStandingTotal() {
try {
if (classification.equals("Senior") && target) {
int standing1 = 0;
int standing2 = 0;
standing1 = Integer.parseInt(txtStanding1.getText());
standing2 = Integer.parseInt(txtStanding2.getText());
standingTotal = standing1 + standing2;
}
else if (classification.equals("Intermediate") || (classification.equals("Senior") && !target)) {
standingTotal = Integer.parseInt(txtStanding1.getText());
}
else {
standingTotal = 0;
}
}
catch (NumberFormatException nfe) {
System.err.println(nfe + ": You must enter a valid number - Standing");
}
}
public void setKneelingTotal() {
try {
if (classification.equals("Senior") && target) {
int kneeling1 = 0;
int kneeling2 = 0;
kneeling1 = Integer.parseInt(txtKneeling1.getText());
kneeling2 = Integer.parseInt(txtKneeling2.getText());
kneelingTotal = kneeling1 + kneeling2;
}
else if (classification.equals("Intermediate") || (classification.equals("Senior") && !target)) {
kneelingTotal = Integer.parseInt(txtKneeling1.getText());
}
else {
kneelingTotal = 0;
}
}
catch (NumberFormatException nfe) {
System.err.println(nfe + ": You must enter a valid number - Kneeling");
}
}
public void setIndividualTotal() {
individualTotal = proneTotal + kneelingTotal + standingTotal;
lblIndividualTotal.setText("" + individualTotal);
System.err.println(individualTotal);
}
As stated above, I have that end println 'System.err.println(individualTotal);' printing the total and it DOES print so the number is getting there but the lbl isn't changing.
Please let me know if there is anything else that you need.
EDIT:
The setTexts in the setClassification() method also do not work.
Upvotes: 0
Views: 2369
Reputation: 36601
Please post an SSCCE instead of long pieces of code. See below for an example SSCCE which updates the text of a JLabel
when a JButton
is pressed, and which works without any fancy steps. When you manage to create an SSCCE reproducing your problem, you most likely will know what causes your problem, and if not, we do not have to go through irrelevant lines of code
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ChangeLabelText {
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame( "TestFrame" );
JPanel content = new JPanel( new FlowLayout( ) );
final JLabel label = new JLabel( "Label" );
content.add( label );
JButton button = new JButton( "Change text" );
button.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
label.setText( "Another text" );
}
} );
content.add( button );
frame.getContentPane().add( content );
frame.pack();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
} );
}
}
Upvotes: 2