Sample2

Sample2の画像 テキストファイルの保存と読み込みができる簡単なテキストエディタ。ショートカットキーでも保存と読み込みができる。

ソースファイル

Sample2.jar Sample2.java


小技

ショートカットキーをつける2

[CTRLキー+S] などのショートカットキーをつけるには、setAccelerator メソッドを使います。getKeyStrokeメソッドの、第2引数の値を変えることにより、ALTキーなども使用することができます。

(例)
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));

スクロールバーの表示・非表示を決める

JScrollBar の表示・非表示を決めるためには、縦のスクロールバーの場合は setVerticalScrollBarPolicy メソッドを、横のスクロールバーの場合は setHorizontalScrollBarPolicy メソッドを使います。メソッドの引数には JScrollPane クラスで定義されているフィールドの値を用います。

(例)
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);


今回のソース


/*
 * Sample2.java
 * 2003/06/30
 * kota
 */

import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;

/**
 * @author kota
 */
public class Sample2 extends JFrame implements ActionListener {
	private JEditorPane editorPane;
	private JMenuItem saveMenuItem;
	private JMenuItem openMenuItem;

	public static void main(String[] args) {
		Sample2 sample2 = new Sample2("Sample2");
		sample2.setVisible(true);
	}

	public Sample2(String title) {
		super(title);

		changeLookAndFeel();

		JMenuBar menuBar = new JMenuBar();
		JMenu fileMenu = new JMenu("FILE");
		fileMenu.setMnemonic('f');

		openMenuItem = new JMenuItem("OPEN");
		openMenuItem.addActionListener(this);
		openMenuItem.setMnemonic('o');
		openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
		fileMenu.add(openMenuItem);

		saveMenuItem = new JMenuItem("SAVE");
		saveMenuItem.addActionListener(this);
		saveMenuItem.setMnemonic('s');
		saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
		fileMenu.add(saveMenuItem);

		menuBar.add(fileMenu);
		setJMenuBar(menuBar);

		editorPane = new JEditorPane();
		JScrollPane scrollPane = new JScrollPane(editorPane);
		scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane.setPreferredSize(new Dimension(150, 100));
		getContentPane().add(scrollPane);

		pack();

		setCenterLocation(this);
	}

	/**
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed(ActionEvent e) {
		JFileChooser fileChooser = new JFileChooser();
		if (e.getSource() == saveMenuItem) {
			if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
				File file = fileChooser.getSelectedFile();
				try {
					FileWriter fileWriter = new FileWriter(file);
					editorPane.write(fileWriter);
					fileWriter.close();
				} catch (Exception exception) {
					exception.printStackTrace();
				}
			}
		} else if (e.getSource() == openMenuItem) {
			if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
				File file = fileChooser.getSelectedFile();
				try {
					FileReader fileReader = new FileReader(file);
					editorPane.read(fileReader, null);
					fileReader.close();
				} catch (Exception exception) {
					exception.printStackTrace();
				}
			}
		}
	}

	/**
	 * ウィンドウをディスプレイの中心に配置する。
	 * @param frame ウィンドウ
	 */
	private void setCenterLocation(JFrame frame) {
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		int x = (d.width - frame.getWidth()) / 2;
		int y = (d.height - frame.getHeight()) / 2;
		frame.setLocation(x, y);
	}

	/**
	 * Look & Feel をOSのものに変更
	 */
	private void changeLookAndFeel() {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

SITE TOP BGM : Stereophonics - You Gotta Go There To Come Back