English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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(メール送信時は、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がとりついたら、本サイトは即座に侵害疑いの内容を削除します。)