TITLE:JMenuに最近使ったファイルを追加

JMenuに最近使ったファイルを追加

編集者:Terai Atsuhiro
作成日:2003-10-07
更新日:2024-02-02 (金) 11:46:37

概要

JMenuに、「最近使ったファイル(F)」を履歴として追加していきます。

#screenshot

サンプルコード

 private int MAXHISTORY = 3;
 private void updateHistory(String str) {
   fileHistory.removeAll();
   fh.removeElement(str);
   fh.insertElementAt(str, 0);
   if(fh.size()>MAXHISTORY) fh.remove(fh.size()-1);
   for(int i=0;i<fh.size();i++) {
     String name = (String)fh.elementAt(i);
     String num  = Integer.toString(i+1);
     JMenuItem mi = new JMenuItem(new HistoryAction(new File(name)));
     mi.setText(num + ": "+ name);
     byte[] bt = num.getBytes();
     mi.setMnemonic((int) bt[0]);
     fileHistory.add(mi, i);
   }
 }
 class HistoryAction extends AbstractAction{
   final private File file;
   public HistoryAction(File file_) {
     super();
     file = file_;
   }
   public void actionPerformed(ActionEvent evt) {
     historyActionPerformed(file);
   }
 }
 private void historyActionPerformed(File file) {
   Object[] obj = {"本来はファイルを開いたりする。\n",
                   "このサンプルではなにもせずに\n",
                   "履歴の先頭にファイルを移動する。"};
   JOptionPane.showMessageDialog(this, obj, APP_NAME,
                   JOptionPane.INFORMATION_MESSAGE);
   repaint();
   updateHistory(file.getAbsolutePath());
 }
  • &jnlp;
  • &jar;
  • &zip;

解説

上記のサンプルでは、「ファイル->開く」で、ダミーファイルの履歴が残ります。履歴は3件まで残り、履歴をメニューから選択すると、そのファイルが履歴の先頭に移動します。

実際に使用する場合は、ダミーファイルを使用している箇所を修正したり、アプリケーションを終了する際に履歴を保存したりするコードを追加する必要があります。

参考リンク

コメント