0

I have a String called s

I have four JButtons b1 b2 b3 b4 By default String s is Hello World b1 Makes String s toUpperCase b2 Makes String s toLowerCase b3 Allows user to change String b4 Resets String to Hello World

When I run the program I have s set to Hello World but when I click my buttons the String is not changing to its new attribute.

import java.awt.EventQueue;
import java.awt.event.*;
import javax.swing.*;

public class Driver {
    String s = "Hell World";
    String up;
    String low;

    private JFrame f;
    private JPanel p;

    JFrame frame = new JFrame("Add Some Text");

    JButton b1 = new JButton("Uppercase");
    JButton b2 = new JButton("Lowercase");
    JButton b3 = new JButton("New");
    JButton b4 = new JButton("Reset");

    JLabel jl = new JLabel(s);

    public Driver () {      
        gui();  

    }

    public void gui() { 
        f = new JFrame("Hello World");      
        p = new JPanel();   
        f.add(p);
        p.setLayout(null);

        p.add(b1);
        p.add(b2);
        p.add(b3);
        p.add(b4);

        p.add(jl);

        b1.setLocation(27, 80);
        b2.setLocation(300, 80);
        b3.setLocation(27, 180);
        b4.setLocation(300, 180);

        jl.setLocation(240, 20);

        b1.setSize(230, 80);
        b2.setSize(230, 80);
        b3.setSize(230, 80);
        b4.setSize(230, 80);

        jl.setSize(230, 20);

        // pack the frame for better cross platform support
        f.pack();
        // Make it visible
        f.setVisible(true);
        f.setSize(560,300); // default size is 0,0
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                 up = s.toUpperCase();
          }
      });

        b2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                low = s.toLowerCase();    
          }
      });

        b3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                s = JOptionPane.showInputDialog(frame, "");          
          }
      });

        b4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
             s = "Hello World";      
          }
      });

    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
           public void run() {
                new Driver();

           }
        });
    } // End main Method

       } // End class Driver

2 Answers 2

3

You have to set the text to the label! Try this:

b1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
             jl.setText(s.toUpperCase());
      }
  });

    b2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
            jl.setText(s.toLowerCase());    
      }
  });

    b3.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
            s = JOptionPane.showInputDialog(frame, "");   
            jl.setText(s);
      }
  });

    b4.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
             jl.setText("Hello World");
      }
  });
Sign up to request clarification or add additional context in comments.

Comments

1

Actually the String is changing, what happens here that you haven't update the JLabel with the new value for the String:

So your code should look like this:

b3.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
            s = JOptionPane.showInputDialog(frame, "");
            jl.setText(s);       
      }
  });

then add the following line in each Action ActionListener.

jl.setText(newValue);// newValue depends on what the ActionListener do.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.