본문 바로가기
프로그래밍/② JAVA(자바) 프로젝트

② JAVA(자바) 프로젝트-14 KeyPressed를 이용하여 버튼 텍스트 바꾸기 == Button textbar using KeyPressed

by ronul 2017. 5. 7.
300x250

 

KeyPressed를 이용하여 버튼 텍스트를 입력해주는 프로그램입니다.

현재 영어랑 숫자만 입력할 수 있구요.

게임같은 것에서 단축키를 바꿀때 환경설정을 가서 버튼에 해당하는 것을 누르고 키를 입력한 다음 변경을 누르면

그키 하나받을수 있는것을 모티브로 해서 만들어봤습니다.

대부분 설명은 주설처리 해놨습니다.

코드입니다~

 

 

 

 

 

usingButton.java 

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

public class usingButton {
 JLabel keyLabel;
 JTextField keysetNumTxt;
 JFrame frame, keyFrame;
 JPanel centerPanel;
 JButton eventBtn;
 JButton[] btn = new JButton[16];
 Container contentPane;
 String keyString = "";

 // 생성자
 public usingButton() {
 

 // Frame
 frame = new JFrame("키바꾸기");
  frame.setPreferredSize(new Dimension(500, 500));
  frame.setLocation(350, 100);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.pack();
  frame.setVisible(true);

  centerPanel = new JPanel();
  contentPane = frame.getContentPane();
  contentPane.setLayout(new BorderLayout());

  // 패널에 버튼 16개 추가
  centerPanel.setLayout(new GridLayout(4, 4));
  for (int i = 0; i < 16; i++) {
   btn[i] = new JButton();

   centerPanel.add(btn[i]);
   BtnArrayListener bingoBtnClickListener = new BtnArrayListener();
   btn[i].addActionListener(bingoBtnClickListener);

  }
  // Frame Layout

  frame.getContentPane().add(BorderLayout.CENTER, centerPanel);
 }

 class TextClickListener implements MouseListener {
  public void mouseEntered(MouseEvent e) {
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {

  }

  public void mouseReleased(MouseEvent e) {
   JTextField text = (JTextField) e.getSource();
   text.setText("");
  }

  public void mouseClicked(MouseEvent e) {
  }

 }

 // 16개 중 하나를 클릭했을 때 리스너

 class BtnArrayListener implements ActionListener {
  public void actionPerformed(ActionEvent event) {
   eventBtn = (JButton) event.getSource();

   keyFrame = new JFrame("버튼변경");
   JPanel panel1 = new JPanel();
   JPanel panel2 = new JPanel();

   Container contentPane1 = keyFrame.getContentPane();
   contentPane1.setLayout(new BorderLayout());
 

  // 프레임 생성
    keyFrame.setPreferredSize(new Dimension(400, 100));
   keyFrame.setLocation(500, 400);
   keyFrame.setVisible(true);
   keyFrame.pack();

   // 레이블 생성
     keyLabel = new JLabel("영어나 숫자를 입력하신후 키보드의 enter를 눌러주세요.");

   // 텍스트필드 생성
   keysetNumTxt = new JTextField("", 10);
   TextClickListener textClickListener = new TextClickListener();
   keysetNumTxt.addMouseListener(textClickListener);
   KeyPressed keyPressed = new KeyPressed();
   keysetNumTxt.addKeyListener(keyPressed); // 텍스트필드에 키가 입력되었을 때 리스너 호출

   // 패널 추가
  
   panel1.add(keyLabel);
   panel2.add(keysetNumTxt);

   // 프레임 레이아웃

   keyFrame.getContentPane().add(BorderLayout.NORTH, panel1);
   keyFrame.getContentPane().add(BorderLayout.CENTER, panel2);
  }
 }

 class BtnClickListener implements ActionListener {
  public void actionPerformed(ActionEvent event) {
   eventBtn = (JButton) event.getSource();
   eventBtn.setText("0");
  }
 }

 // 버튼에서 불러온 프레임에 키입력시 리스너

 class KeyPressed implements KeyListener {
  public void keyPressed(KeyEvent e) {
   keyString += e.getKeyChar();
   System.out.println(e.getKeyCode());
   if (e.getKeyCode() == 10) { // 엔터키가 눌렸을때 실행조건
    eventBtn.setText(keyString); // 입력값을 넣어야할 버튼에 입력
    keyString = ""; // 입력 후 텍스트 전역변수 초기화
    keyFrame.setVisible(false); // 입력창 종료
   }
  }

  public void keyReleased(KeyEvent e) {
   // numText.setText(keyString);
  }

  public void keyTyped(KeyEvent e) {
   // inputKeyFrame.setVisible(false);
  }
 }

 public static void main(String[] args) {
  usingButton start = new usingButton();
 }
}

300x250

댓글