ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • java) 메모장 만들기 2) 나가기, 복사, 붙여 넣기, 잘라내기, 삭제, 글꼴크기, 모달창 띄우기
    JAVA/멀티스레드, 이벤트 2024. 5. 28. 20:48

    ▤ 목차

      ✔ 나가기

      💻 코드로 보기

      else if (e.getSource() == mnuExit) { // 나가기
      			int close = JOptionPane.showConfirmDialog(this, "종료하시겠습니까?", "종료",
      					JOptionPane.YES_NO_OPTION);
      
      			switch (close) {
      			case JOptionPane.YES_OPTION:
      				System.exit(0);
      				break;
      			case JOptionPane.NO_OPTION:
      				break;
      			}

      👏 중요

      ✔복사

      💻 코드로 보기

      else if (e.getSource() == mnuCopy) { // 복사
      //			System.out.println(txtMemo.getSelectedText()); //모든 범위 복사된다.
      			copyText = txtMemo.getSelectedText(); //지정된 범위만 복사된다.
      			
      			
      		}

      👏 중요

      ✔붙여넣기

      💻 코드로 보기

      else if (e.getSource() == mnuPaste) { // 붙여넣기
      //			txtMemo.setText(copyText); //전체 글자가 날라간다.
      			int position = txtMemo.getCaretPosition(); //커서가 있는 위치을 탐색한다.
      			txtMemo.insert(copyText, position);
      			
      		}

      👏 중요

      ✔잘라내기

      💻 코드로 보기

      else if (e.getSource() == mnuCut) { // 잘라내기
      			copyText = txtMemo.getSelectedText();
      			
      			//copyText에 저장된 부분은 txtMemo에서 지움
      			int start = txtMemo.getSelectionStart();
      			int end = txtMemo.getSelectionEnd();
      			txtMemo.replaceRange("", start, end);
      			
      		}

      👏 중요

      ✔삭제

      💻 코드로 보기

       else if (e.getSource() == mnuDel) { // 삭제 (범위지정)
      			
      			int start = txtMemo.getSelectionStart();
      			int end = txtMemo.getSelectionEnd();
      			txtMemo.replaceRange("", start, end);
      			
      		}

      👏 중요

       

      ✔글꼴 크기

      💻 코드로 보기

      else if (e.getSource() == mnuFontSize) { // 글꼴크기
      			String fontSize = JOptionPane.showInputDialog(this,"글꼴 크기: ","16"); //기본값 16
      			
      			if (fontSize != null) {
      				try {
      					int fSize = Integer.parseInt(fontSize);
      					if (fSize == 0 ) {
      						JOptionPane.showMessageDialog(null, "다시 입력하세요");
      						return;
      					}
      					txtMemo.setFont(new Font(txtMemo.getFont().getName(), txtMemo.getFont().getStyle(), fSize));
      				} catch (Exception e2) {
      					JOptionPane.showConfirmDialog(this, "글꼴 크기를 정확히 입력하세요.");
      				}
      			}
      			
      		}

      👏 중요

       

      ✔모달창 띄우기

      💻 코드로 보기

      # 메인클래스

      else if (e.getSource() == mnuAbout) { // 메모장이란..
      			new Ex49MemoAbout(this); //모달은 다음 코드 진행을 안한다.
      			System.out.println("About 호출 후 상황"); //modal과 modaless 구분(포커스)
      
      		}

       

      # 모달창 클래스 (JDialog)

      public class MemoAbout extends JDialog implements ActionListener { //메모장에 종속되는 창이다.
      	
      	public MemoAbout(JFrame frame) {
      		//부모 프레임을 알려줘야한다.
      		super(frame);
      		
      		setTitle("메모장이란");
      		setModal(true); // true Modal
      		
      		initLayoutAbout();
      		
      		setBackground(Color.LIGHT_GRAY);
      		setBounds(350, 350, 200, 200);
      		setVisible(true);
      		
      	}
      	
      	private void initLayoutAbout() {
      		JLabel lblMes = new JLabel("미니 메모장 ver 0.9");
      		JButton btnConfirm = new JButton("확인");
      		btnConfirm.addActionListener(this);
      		add("Center", lblMes);
      		add("South", btnConfirm);
      	}
      	
      	@Override
      	public void actionPerformed(ActionEvent e) {
      		dispose(); //JDialog 담기
      		
      	}
      }

       

      👏 Modal창

      • true Modal

      • false Modal 또는 Modaless

       

      🪄구현 방법

      1번 방법

      // true Modal
      setModal(true);
      
      // false Modal, Modalsee
      setModal(false);

       

      2번 방법

      생성자에서 super를 사용하려면 가장 상단에 적어야한다.

      super(frame,"메모장이란",true); //Modal이다.
      
      super(frame,"메모장이란",false); //false이면 Modaless이다
    Designed by Tistory.