English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 그래픽 인터페이스 개발의 간단한 메모장

Java 이벤트를 배웠다가, 매우 간단한 메모장을 직접 작성했습니다. MenuBar, Menu, MenuITem 등의 컨트롤을 사용했으며, 이벤트는 ActionListener 및 KeyListener를 포함합니다.
코드는 다음과 같습니다:

package com.package3; 
/* 
 * 기능:간단한 메모장 개발 가능, 파일 저장, 파일 열기, 메모장 종료 
 * author:ywq 
 */ 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
public class MenuText { 
  //컴포넌트 정의: 
  JFrame f; 
  MenuBar mb;  //메뉴 바 
  Menu mu;    //메뉴 
  JTextArea jta; 
  MenuItem openItem, saveItem, closeItem;  //서브 메뉴 
  FileDialog openDia,saveDia;  //저장 및 열기 팝업 상자 
  File file; 
  //생성자 
  public MenuText() 
  { 
    //초기화 함수를 호출합니다 
    init(); 
  } 
  //组件에 초기화 작업을 수행합니다 
  public void init() 
  { 
    f=new JFrame("简易记事本"); 
    mb=new MenuBar(); 
    mu=new Menu("文件"); 
    openItem=new MenuItem("打开"); 
    saveItem=new MenuItem("保存"); 
    closeItem=new MenuItem("탈출"); 
    jta=new JTextArea(); 
    f.add(jta); 
    //추가 
    mu.add(openItem); 
    mu.add(saveItem); 
    mu.add(closeItem); 
    mb.add(mu); 
    f.setMenuBar(mb); 
    openDia=new FileDialog(f, "열기", FileDialog.LOAD); 
    saveDia=new FileDialog(f, "저장", FileDialog.SAVE); 
    // 
    200, 300, 500, 400); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
    //이벤트 함수 호출 
    event(); 
  } 
  //이벤트 함수, 이벤트 처리 
  public void event() 
  { 
    //열기 옵션 
    openItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //파일 열기 메서드 호출 
        openFile(); 
      } 
    }); 
    //저장 옵션 
    saveItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //저장 파일 메서드 호출 
       saveFile();   
      } 
    }); 
    //Ctrl을 누른 텍스트 영역 이벤트 추가+S를 저장할 수 있습니다 
    //키 리스너 이벤트가 여러 가지 방법으로 가능하지만, 우리는 그 중 하나만 사용하려고 합니다. 따라서 KeyAdapter를 사용할 수 있습니다. 
    //따라서 하나의 메서드만 구현하면 됩니다 
    jta.addKeyListener(new KeyAdapter()) 
    { 
      //키 누른 메서드 
      public void keyPressed(KeyEvent e){ 
        if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) 
        { 
          //저장 파일 메서드 호출 
           saveFile();   
          //JOptionPane.showMessageDialog(null, "그렇지"); 
        } 
      } 
    }); 
    //옵션 닫기 
    closeItem.addActionListener(new ActionListener()) 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        //시스템을 탈출 
        System.exit(0); 
      } 
    }); 
  } 
  //텍스트를 엽니다 
  public void openFile() 
  { 
    openDia.setVisible(true); //그를 표시합니다 
    //경로와 파일 이름을 가져옵니다 
    String dirPath = openDia.getDirectory(); 
    String fileName = openDia.getFile(); 
    //취소를 클릭했을 때 오류를 방지 
    if(dirPath == null || fileName == null) 
      return ; 
    jta.setText(""); //텍스트 영역을 비웁니다 
    file = new File(dirPath, fileName); //파일 객체를 생성합니다 
    //데이터를 행별로 읽어 텍스트 영역에 표시합니다 
    try 
    { 
      BufferedReader br = new BufferedReader(new FileReader(file)); 
      String line = null; 
      while((line = br.readLine()) != null) 
      { 
        jta.append(line+"\r\n"); 
      } 
      br.close(); 
    } 
    catch (IOException ex) 
    { 
      throw new RuntimeException("읽기 실패"); 
    } 
  } 
  //텍스트를 저장하는 메서드. 
  public void saveFile() 
  { 
    //파일이 존재하는지 먼저 확인합니다 
    if(file == null) 
    { 
      saveDia.setVisible(true); 
      String dirPath = saveDia.getDirectory(); 
      String fileName = saveDia.getFile(); 
      //취소를 클릭했을 때 오류를 방지 
      if(dirPath == null || fileName == null) 
        return ;   
      //파일이 존재하지 않기 때문에 파일 객체를 생성해야 합니다 
      file = new File(dirPath, fileName);        
    } 
    //데이터를 파일에 쓰기 
    try { 
      BufferedWriter bw = new BufferedWriter(new FileWriter(file)); 
      String info = jta.getText(); //텍스트 영역 정보를 얻습니다 
      bw.write(info); //쓰기 작업 
      bw.flush(); 
      bw.close(); 
    } catch (IOException e1) { 
      throw new RuntimeException(); 
    }     
  } 
  public static void main(String[] args) { 
      //객체 생성 
    new MenuText(); 
  } 
} 

실행 결과는 다음과 같이 보입니다:


이 프로그램이 제공하는 기능은 다음과 같습니다:

(1)을 사용하여 특정 파일을 열고 편집할 수 있습니다.

(2)를 사용하여 편집된 파일을 저장할 수 있습니다.

(3)를 사용하여 Ctrl+S를 눌러 텍스트를 저장합니다

(4)을 클릭하여 프로그램을 종료할 수 있습니다.

위의기능 구현3키 리스너를 추가하여 텍스트区域에 KeyAdapter를 사용하여 리스닝을 했습니다. 하지만 지금 필요한 것은 Ctrl과 S가 모두 눌러졌을 때만 저장 작업이 트리거되는 조합 리스닝입니다.

조합监听,Java API에서 해당 메서드를 제공합니다.

KeyEvent 클래스의 직접 부모 클래스인 InputEvent 클래스를 찾습니다. 다음과 같이 보입니다:


InputEvent 클래스의 메서드를 확인하려면 다음과 같이 합니다:


      InputEvent 클래스의 자식 클래스인 KeyEvent 클래스의 객체 e는 위의 메서드를 호출하여 판단할 수 있습니다. isControlDown() 메서드는 Ctrl 키가 눌러졌는지 확인합니다. 예를 들어, 프로그램에서 if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S)는 조합 판단을 구현합니다.

이것이 본문의 전체 내용입니다. 많은 도움이 되었기를 바랍니다. 또한, 노래 교육을 많이 지지해 주시기 바랍니다.

언급: 본문은 인터넷에서 가져왔으며, 저작권자가 소유하고 있으며, 인터넷 사용자가 자발적으로 기여하고 자체로 업로드한 내용입니다. 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를하지 않으며, 관련 법적 책임을 부담하지 않습니다. 저작권 침해 내용을 발견하면, notice#w로 이메일을 보내 주세요.3codebox.com(이메일을 보내면, #을 @으로 변경하십시오. 신고하고 관련 증거를 제공하시면, 사이트가 즉시 의심스러운 저작권 내용을 삭제합니다.

추천해드립니다