los números anteriores ingresados ​​​​se sobrescriben JFRAME

Actualmente estoy tratando de crear un panel de acceso simple que permita al usuario hacer clic en los números y aparecerá en el textfield arriba, pero cuando se hace clic en el botón textfield se está poblando pero el número anterior se está sobrescribiendo. A continuación se muestra el código que tengo actualmente. Es btn1 & btn2 Me estoy centrando en este momento:

package securitySystem;

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

public class accessPanel extends JFrame {

public static void main (String args[]){
    accessPanel gui= new accessPanel ();
    gui.setSize (360, 400);
    gui.setLocationRelativeTo(null);
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gui.setVisible(true);
    gui.setTitle("Access Panel");

    gui.setLayout(new BorderLayout());
    gui.setBackground(Color.BLACK);

}   

JButton btn1= new JButton("1");
JButton btn2= new JButton("2");
JButton btn3= new JButton("3");
JButton btn4= new JButton("4");
JButton btn5= new JButton("5");
JButton btn6= new JButton("6");
JButton btn7= new JButton("7");
JButton btn8= new JButton("8");
JButton btn9= new JButton("9");
JButton btn0= new JButton("0");

JTextField pin = new JTextField();


public accessPanel (){
    setLayout(null);

    pin.setBounds(0,0,340,40);
    add(pin);       
    btn1.setBounds(0,40,100,70);
    add(btn1);
    btn2.setBounds(120,40,100,70);
    add(btn2);
    btn3.setBounds(240,40,100,70);
    add(btn3);
    btn4.setBounds(0,120,100,70);
    add(btn4);
    btn5.setBounds(120,120,100,70);
    add(btn5);
    btn6.setBounds(240,120,100,70);
    add(btn6);
    btn7.setBounds(0,200,100,70);
    add(btn7);
    btn8.setBounds(120,200,100,70);
    add(btn8);
    btn9.setBounds(240,200,100,70);
    add(btn9);
    btn0.setBounds(120,280,100,70);
    add(btn0);
}

public void calcButtons()
{
    btn1.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent e) 
        {
            pin.setText(btn1.getText());
        }
    });
    btn2.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent e) 
        {
            pin.setText(btn2.getText());
        }
    }); 
}
}

preguntado el 03 de diciembre de 13 a las 13:12

1 Respuestas

Tenga una cadena global a la que pueda agregar los números cada vez que se haga clic en un botón

public class accessPanel extends JFrame {
    String word = "";

    ...
    btn2.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent e) 
        {
            word += btn2.getText();
            pin.setText(word);
        }
    });
}

Si usted tiene una clear botón, simplemente establezca la cadena en "" en su acción Realizada

Respondido el 03 de diciembre de 13 a las 13:12

Perfecto, muchas gracias! ¿Hay alguna mejora en el código que pueda sugerir? - Adam

Um, no realmente, tu código se ve bien. Por favor acepte la respuesta si esto funciona para usted. - Pablo Samsotha

Ahora tengo otro problema, también he creado un botón de borrado y cuando se hace clic, los números anteriores permanecen pero se ha borrado. Lo único es que quiero que el cuadro de texto se muestre vacío una vez que se hace clic en él. - Adam

Necesitas configurar el texto después de configurar la cadena en "" tal como lo hiciste en los otros métodos. - Pablo Samsotha

¡gracias de nuevo! eso fue tan simple, he estado en esto por mucho tiempo así que puedo tomar un descanso jaja - Adam

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.