java日誌記錄,並將該記錄輸出到自定義的窗口中(一)

class ImageViewerFrame extends JFrame {
 public ImageViewerFrame() {
  logger.entering("ImageViewerFrame", "<init>");
  setTitle("LoggingImageViewer");
  setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  
  JMenuBar menuBar = new JMenuBar();
  setJMenuBar(menuBar);
  
  JMenu menuFile = new JMenu("File");
  menuBar.add(menuFile);
  
  JMenuItem openItem = new JMenuItem("Open");
  menuFile.add(openItem);
  openItem.addActionListener(new FileOpenListener());
  
  JMenuItem exitItem = new JMenuItem("Exit");
  menuFile.add(exitItem);
  exitItem.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent event) {
    logger.fine("Exiting.");
    System.exit(0);
   }
  });
  
  label = new JLabel();
  add(label);
  logger.exiting("ImageViewerFrame", "<init>");
 }
 
 private class FileOpenListener implements ActionListener {
  @Override
  public void actionPerformed(ActionEvent event) {
   logger.entering("ImageViewerFrame.FileOpenListener", "actionPerformed", event);
   
   JFileChooser chooser = new JFileChooser();
   chooser.setCurrentDirectory(new File("."));
   
   chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
    @Override
    public boolean accept(File f) {
     return f.getName().toLowerCase().endsWith(".gif") || f.isDirectory();
    }

    @Override
    public String getDescription() {
     return "GIF Images";
    }
   });
   
   int r = chooser.showOpenDialog(ImageViewerFrame.this);
   if(r == JFileChooser.APPROVE_OPTION) {
    String name = chooser.getSelectedFile().getPath();
    logger.log(Level.FINE, "Reading file {0}", name);
    label.setIcon(new ImageIcon(name));
   } else {
    logger.fine("File open dialog canceled.");
   }
   
   logger.exiting("ImageViewerFrame.FileOpenListener", "actionPerformed");
  }
 }
 
 private JLabel label;
 private static Logger logger = Logger.getLogger("logger");
 private static final int DEFAULT_WIDTH = 300;
 private static final int DEFAULT_HEIGHT = 400;
}

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