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!