JAVA-AWT/ActionListener

JAVA-AWT-ActionListener03(한 글자 지우기/ backspace 기능)

IT-개발자 2018. 6. 20. 17:18
반응형

앞의 장에서 배운 AcitonListener를 통하여 어떤 글자를 가지고 오며 끝의 한 글자를 지우는 기능이 있는 화면을 구현하겠습니다.


backspace 기능입니다.


 import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

 

public class G3 extends JFrame implements ActionListener {

        // 2. implements 해야 override 가능(중요)

 

        JButton b1 = new JButton("1");

        //" 글자를 버튼을 누르면 text 붙이시오" 라벨과 textfiled 새로 적어주는 버튼

        JButton b2 = new JButton("back");

        //글자하나를 지우는 기능으로 백스페이스 기능

       

        JPanel p1 = new JPanel();

        JPanel p2 = new JPanel();

        JTextField t1 = new JTextField(30);

        JLabel l1 = new JLabel(" 글자를 버튼을 누르면 text 붙이시오");

        JLabel l2 = new JLabel("");

 

        public G3() {

 

               setLayout(new GridLayout(2, 1));

               p1.setLayout(new GridLayout(1, 2));

               p2.setLayout(new GridLayout(1, 2));

               add(p1);

               add(p2);

 

               b1.addActionListener(this);

               b2.addActionListener(this);

               // 1. 위를 작성하고 앞부분 클릭하면 let implements 있는 클릭하면 위쪽의 jframe옆에 자동생성됨

 

               p1.add(l1);

               p1.add(t1);

 

               p2.add(b1);

               p2.add(b2);

 

               setLocationRelativeTo(null);

               setSize(500, 500);

               setResizable(false);

               setVisible(true);

               setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

        }

 

        public static void main(String args[]) {

               G3 test = new G3();

        }

 

        @Override

        // 3. 위쪽 부분의 implements 클릭하면 add implements 통하여 자동생성가능

        // getAcitonCommand component text 가져오는 기능

        // getSource component 변수를 가지고옴

        public void actionPerformed(ActionEvent e) {

               String a = e.getActionCommand();

 

               if (a == "1") {

                       t1.setText(" 글자를 버튼을 누르면 text 붙이시오");

                       l1.setText(" 글자를 버튼을 누르면 text 붙이시오");

 

               } else if (a == "back") {

                       int t = l1.getText().length();

                       //" 글자를 버튼을 누르면 text 붙이시오" 길이를 int 나타내는 t

                       //substring으로 문자를 짜르려고 t 필요 문장 그대로 적으면 복잡하실까봐 t 치환

                      

                       if (t == 0)            //글자가 없을 경우

                       {

                              //마지막으로 한글자를 지우면 텍스트는 비는데 그때 backspace기능을 쓰면 당연히

                              //length값이 0이므로 함수의 오류로가 된다. 그래서 length 0일때는 그대로 빈칸""입력

                              t1.setText("");

                              l1.setText("");

                       }

                       else if(t>0)   //글자가 있을 경우

                       {

                             

                              String b = l1.getText().substring(0, t - 1);

                              //l1 글자를 끝에 하나를 자르는 substring 함수

                              t1.setText(b);

                              l1.setText(b);

                              //l1에도 한글자를 자른 문자를 넣는 이유는

                              //지금은 hashlist등을 아직 강의 하지 않았으므로 메모리 기능이 없어 l1 저장하였음

                             

                       }

                       else

                       {

                              t1.setText("알수없는 오류");

                       }

 

        }

}

}

 


<결과물>

 <1버튼 눌렀을 경우 글자를 가지고옴>



<back 버튼을 누르면 글자가 한 글자씩 지워짐>

 

자료가 마음에 드셨다면 자주 찾아주세요^^ 글 올리는데 힘이됩니다.

반응형