利用Preferences類記錄界面的位置和大小

package properties;

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

import javax.swing.*;
import javax.swing.filechooser.FileFilter;

public class PreferencesTest {
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   @Override
   public void run() {
    PreferencesFrame frame = new PreferencesFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
   }
  });
 }
}

class PreferencesFrame extends JFrame {
 public PreferencesFrame() {
  //get position, size, title from preferences
  Preferences root = Preferences.userRoot();
  final Preferences node = root.node("/com/horstmann/corejava");
  int left = node.getInt("left", 0);
  int top = node.getInt("top", 0);
  int width = node.getInt("width", DEFAULT_WIDTH);
  int height = node.getInt("height", DEFAULT_HEIGHT);
  setBounds(left, top, width, height);
  
  //if no title given, ask user
  String title = node.get("title", "");
  if("".equals(title)) {
   title = JOptionPane.showInputDialog("Please input a frame title:");
  }
  if(null == title) {
   title = "";
  }
  setTitle(title);
  
  //set up file chooser that shows XML files
  final JFileChooser chooser = new JFileChooser();
  chooser.setCurrentDirectory(new File("."));
  
  //accept all files ending with .xml
  chooser.setFileFilter(new FileFilter() {
   @Override
   public String getDescription() {
    return "XML files";
   }
   
   @Override
   public boolean accept(File f) {
    return f.getName().toLowerCase().endsWith(".xml") || f.isDirectory();
   }
  });
  
  //set up menus
  JMenuBar menuBar = new JMenuBar();
  setJMenuBar(menuBar);
  JMenu menuFile = new JMenu("File");
  menuBar.add(menuFile);
  
 }
 
 public static final int DEFAULT_WIDTH = 300;
 public static final int DEFAULT_HEIGHT = 200;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章