import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
public class Editor extends JFrame
implements DocumentListener, ActionListener {
final static String WINDOW_MODIFIED = "windowModified";
JEditorPane jp;
JMenuBar jmb;
JMenu file;
JMenuItem save;
public Editor(String title) {
super(title);
jp = new JEditorPane();
jp.getDocument().addDocumentListener(this);
getContentPane().add(jp);
jmb = new JMenuBar();
file = new JMenu("File");
save = new JMenuItem("Save");
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
save.addActionListener(this);
file.add(save);
jmb.add(file);
setJMenuBar(jmb);
setSize(400,600);
setVisible(true);
}
// doChange() と actionPerformed() で、windowModified の状態を扱う
public void doChange() {
getRootPane().putClientProperty(WINDOW_MODIFIED, Boolean.TRUE);
}
public void actionPerformed(ActionEvent e) {
// ここで保存機能を記述する
getRootPane().putClientProperty(WINDOW_MODIFIED, Boolean.FALSE);
}
// DocumentListener の実装
public void changedUpdate(DocumentEvent e) { doChange(); }
public void insertUpdate(DocumentEvent e) { doChange(); }
public void removeUpdate(DocumentEvent e) { doChange(); }
public static void main(String[] args) {
new Editor("test");
}
}
|