Skip to content
Advertisement

My problem is when I press the clear button, it just clears the textfield and not data of the previous numbers pressed

The task here is to make a Java program that is like a pincode process. I just have a problem with the process of clearing since when I press the clear button, it actually clears the textfield but when I press new numbers, the numbers I typed before even after pressing clear still shows up

enter code here
import java.awt.BorderLayout; 
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;
public class Pincode extends JPanel implements ActionListener {
JLabel display, displayExtra;
JButton numButton;
JButton clr;
JButton etr;
String displayContent = "";
String[] numPadContent = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "CLEAR", "0", "ENTER"};
ArrayList<JButton> buttonList;
String PASSWORD = "061904";
Pincode(Container pane) {
    pane.setPreferredSize(new Dimension(320, 335));
    display = new JLabel(displayContent);
    displayExtra = new JLabel(displayContent);
    display.setPreferredSize(new Dimension(320, 25));
    display.setBorder(BorderFactory.createLoweredBevelBorder());
    pane.add(display, BorderLayout.PAGE_START);
    buttonList = new ArrayList<JButton>(12);
    JPanel numberPanel = new JPanel();
    numberPanel.setLayout(new GridLayout(4, 3, 0, 0));
    numberPanel.setPreferredSize(new Dimension(320, 260));
    for (int i = 0; i < numPadContent.length; i++) {
        numButton = new JButton(numPadContent[i]);
        buttonList.add(numButton);
    }
    for (int n = 0; n < buttonList.size(); n++) {
        buttonList.get(n).addActionListener(this);
        numberPanel.add(buttonList.get(n));
    }
    pane.add(numberPanel, BorderLayout.LINE_END);
    clr = new JButton("Clear");
    clr.setPreferredSize(new Dimension(160, 30));
    clr.addActionListener(this);
    etr = new JButton("Enter");
    etr.setPreferredSize(new Dimension(160, 30));
    etr.addActionListener(this);
    pane.add(clr);
    pane.add(etr);
}
public void Authorized(){
    JOptionPane.showMessageDialog(null,"You are authorized");
}
public void Unauthorized(){
    JOptionPane.showMessageDialog(null,"You are not authorized!!!");
}
public void actionPerformed(ActionEvent e) {
    String textThere = display.getText(), textThereExtra = displayExtra.getText();
    String additionalText = "";
    for (int a = 0; a < buttonList.size(); a++) {
        if (e.getSource().equals(buttonList.get(a)) && a!=11 && a!=9) {
            additionalText = buttonList.get(a).getText();
        }
    }
    int flag = 0;
    if (e.getSource().equals(buttonList.get(9))) {
        textThere = "";
        textThereExtra = "";
        flag = 1;
    }
    if(flag != 1) {
        display.setText(textThere.concat("*"));
        displayExtra.setText(textThereExtra.concat(additionalText));
    }
    else
        display.setText(textThere);

    if (e.getSource().equals(buttonList.get(11))) {
        System.out.println(textThereExtra);
        System.out.println(textThere);
        if(textThereExtra.equals(PASSWORD)) {
            Authorized();
        }
        else {
            Unauthorized();
        }
    }

}

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(new Pincode(frame));
    frame.pack();
    frame.setVisible(true);
}
}

Please help me with my code. Thank you so much!

Advertisement

Answer

You simply forgot to update the JLabel text for displayExtra. Just add displayExtra.setText(textThereExtra); in the else block where you ask if flag != 1 and you should be good to go!

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement