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

Desenvolvimento de interface gráfica Java para bloco de notas simples

在学习了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("Sair"); 
    jta=new JTextArea(); 
    f.add(jta); 
    //Adicionar 
    mu.add(openItem); 
    mu.add(saveItem); 
    mu.add(closeItem); 
    mb.add(mu); 
    f.setMenuBar(mb); 
    openDia=new FileDialog(f, "Abrir", FileDialog.LOAD); 
    saveDia=new FileDialog(f, "Salvar", FileDialog.SAVE); 
    // 
    200, 300, 500, 400); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
    //Chamar a função de evento 
    event(); 
  } 
  //Função de evento, para lidar com o evento 
  public void event() 
  { 
    //Opção de abrir 
    openItem.addActionListener(new ActionListener() 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //Chamar o método de abrir o arquivo 
        openFile(); 
      } 
    }); 
    //Opção de salvar 
    saveItem.addActionListener(new ActionListener() 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
      //Chamar o método de salvar o arquivo. 
       saveFile();   
      } 
    }); 
    //Adicionar um evento de área de texto, ou seja, pressionar Ctrl+S pode salvar 
    //Porque há várias maneiras de ouvir eventos de teclado, e precisamos apenas de uma delas, então podemos usar o adaptador KeyAdapter, 
    //Portanto, é necessário implementar apenas um método 
    jta.addKeyListener(new KeyAdapter() 
    { 
      //Método de tecla pressionada 
      public void keyPressed(KeyEvent e){ 
        if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) 
        { 
          //Chamar o método de salvar o arquivo. 
           saveFile();   
          //JOptionPane.showMessageDialog(null, "Certo"); 
        } 
      } 
    }); 
    //Fechar opção 
    closeItem.addActionListener(new ActionListener() 
    { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        //Sair do sistema 
        System.exit(0); 
      } 
    }); 
  } 
  //Método de abertura de texto 
  public void openFile() 
  { 
    openDia.setVisible(true); //Definir para que ele seja exibido 
    //Obter caminho e nome do arquivo 
    String dirPath = openDia.getDirectory(); 
    String fileName = openDia.getFile(); 
    //Prevenir erros ao clicar em Cancelar 
    if (dirPath == null || fileName == null) 
      return ; 
    jta.setText(""); //Limpar área de texto 
    file = new File(dirPath, fileName); //Criar objeto de arquivo 
    //Ler dados linha a linha, exibir no área de texto 
    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("Falha ao ler"); 
    } 
  } 
  //Método de salvamento de texto. 
  public void saveFile() 
  { 
    //Primeiro, verifique se o arquivo existe 
    if (file == null) 
    { 
      saveDia.setVisible(true); 
      String dirPath = saveDia.getDirectory(); 
      String fileName = saveDia.getFile(); 
      //Prevenir erros ao clicar em Cancelar 
      if (dirPath == null || fileName == null) 
        return ;   
      //Pois o arquivo não existe. Portanto, é necessário criar o objeto file 
      file = new File(dirPath, fileName);        
    } 
    //Escrever dados no arquivo 
    try { 
      BufferedWriter bw = new BufferedWriter(new FileWriter(file)); 
      String info = jta.getText(); //Obter informações da área de texto 
      bw.write(info); //Operação de escrita 
      bw.flush(); 
      bw.close(); 
    } catch (IOException e1) { 
      throw new RuntimeException(); 
    }     
  } 
  public static void main(String[] args) {}} 
      //Criar objeto 
    new MenuText(); 
  } 
} 

O resultado da execução é mostrado na figura a seguir:


As funcionalidades implementadas neste programa incluem:

(1) pode abrir um arquivo específico e editá-lo

(2) pode salvar o arquivo editado

(3) pode usar Ctrl+) pode salvar o texto com S

(4) você pode clicar em closeItem para sair do programa.

EmImplementar funcionalidade3Quando, para a área de texto, adicionou KeyListener, usou o adaptador KeyAdapter para implementar o monitoramento. Mas agora o que é necessário é um monitoramento combinado, ou seja, quando Ctrl e S são pressionados ao mesmo tempo, a operação de salvamento será acionada.

Para monitoramento combinado, o Java API fornece métodos correspondentes.

Encontre o pai direto da classe KeyEvent, que é a classe InputEvent. Como mostrado na figura:


Veja os métodos da classe InputEvent, conforme mostrado a seguir:


      O objeto e da classe KeyEvent, subclasse da classe InputEvent, pode chamar o método acima para fazer a decisão. O método isControlDown() é usado para determinar se a tecla Ctrl foi pressionada. Como na lógica do programa if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S), foi implementada uma decisão combinada.

Isso é o conteúdo completo deste artigo, esperamos que ajude no seu aprendizado e que você apóie o tutorial Yell.

Declaração: o conteúdo deste artigo é extraído da Internet, pertence ao autor original, o conteúdo é contribuído e carregado voluntariamente pelos usuários da Internet, o site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de violar direitos autorais, bem-vindo a enviar e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar, forneça provas relevantes e, uma vez confirmada, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.)

Você também pode gostar