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を保存できます 
    //キーボードリスナーのイベントは複数の方法がありますが、私たちが必要とするのはその中の1つだけですので、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オブジェクトを作成する必要があります。 
      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+)を押してテキストを保存します。

(4)をクリックしてプログラムを終了できます。

機能の実現3時、テキストエリアに KeyListener を追加し、KeyAdapter を使用してリスナーを実現しました。しかし、現在必要なのは、Ctrl と S が同時に押されたときにのみ保存操作がトリガーされる組み合わせリスナーです。

組み合わせリスナーについて、Java API には対応するメソッドが提供されています。

KeyEvent クラスの直接の親クラスである InputEvent クラスを見つけることができます。以下の図を参照してください:


InputEvent クラス内のメソッドを確認するには、以下の通りです:


      InputEvent クラスのサブクラスである KeyEvent クラスのオブジェクト e は、上記のメソッドを直接呼び出して判定を行うことができます。isControlDown() メソッドは、Ctrl キーが押されているかどうかを判定します。例えば、プログラム内の if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) は、組み合わせ判定を実現しています。

これで本文の全てが終わり、皆様の学習に役立つことを願っています。また、呐喊教程を多くの皆様にサポートしていただけると嬉しいです。

声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされた内容であり、本サイトは所有権を持ちません。また、人工編集は行われていません。著作権侵害の疑いがある場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メール送信時は、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がとりついたら、本サイトは即座に侵害疑いの内容を削除します。)

おすすめ