Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Исходный текст программы ConsoleImageViewer.java

Оглавление

Назад

// ==========================================
// ConsoleImageViewer.java
// (C) Alexandr Frolov, 1998
// E-mail: frolov@glasnet.ru
// Web:    http://www.glasnet.ru/~frolov 
// ==========================================
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.applet.*;

public class ConsoleImageViewer
{
  public static void main(String args[])
  {
    FrameWindow frame;
    frame =  new FrameWindow("Image Viewer");
    frame.setVisible(true);
  }
}

// =======================================
// Class FrameWindow
// =======================================
class FrameWindow extends Frame
  implements ActionListener, WindowListener,
  ComponentListener
{
  MenuBar mb;
  Menu mFile;
  MenuItem miOpen;
  MenuItem miExit;
  
  String szCurrentFilename = "";

  ScrollPane sp;
  Image img;
  imgViewer iv;
  MediaTracker mt;
  
      
  // ============================================
  // FrameWindow
  // ============================================
  public FrameWindow(String szTitle)
  {
    super(szTitle);
    setSize(400, 300);
    
    mb = new MenuBar();
    mFile = new Menu("File");
    
    miOpen = new MenuItem("Open...");
    mFile.add(miOpen);
    
    mFile.add("-");
    
    miExit = new MenuItem("Exit");
    mFile.add(miExit);
    
    mb.add(mFile);
    
    miOpen.addActionListener(this);
    miExit.addActionListener(this);
    
    setMenuBar(mb);
    
    this.addWindowListener(this);
    this.addComponentListener(this);
  }

  // ============================================
  // actionPerformed
  // ============================================
  public void actionPerformed(ActionEvent e)
  {
    if(e.getSource().equals(miOpen))
    {
      FileOpen();
    }
    
    else if(e.getSource().equals(miExit))
    {
      setVisible(false);
      System.exit(0);
    }
  }

  // ============================================
  // componentResized
  // ============================================
  public void componentResized(ComponentEvent e)
  {
    if(sp != null)
    {
      doLayout();
      sp.doLayout();
      sp.repaint();
      iv.repaint();
    }  
  }
    
  // ============================================
  // componentShown
  // ============================================
  public void componentShown(ComponentEvent e)
  {
    if(sp != null)
    {
      doLayout();
      sp.doLayout();
      sp.repaint();
      iv.repaint();
    }  
  }
  
  public void componentMoved(ComponentEvent e) {}
  public void componentHidden(ComponentEvent e) {}
        
  // ============================================
  // windowClosing
  // ============================================
  public void windowClosing(WindowEvent e)
  {
    setVisible(false);
    System.exit(0);
  }
  
  public void windowOpened(WindowEvent e) {}
  public void windowClosed(WindowEvent e) {}
  public void windowIconified(WindowEvent e) {}
  public void windowDeiconified(WindowEvent e) {}
  public void windowActivated(WindowEvent e) {}
  public void windowDeactivated(WindowEvent e) {}
  
  // ============================================
  // FileOpen
  // ============================================
  void FileOpen()
  {
    FileDialog fdlg;
    fdlg = new FileDialog(this, "Open file", 
	FileDialog.LOAD);
	
    fdlg.setFile("*.gif;*.jpg");
    fdlg.show();

    szCurrentFilename = fdlg.getDirectory() +
      fdlg.getFile();
      
    setTitle(szCurrentFilename);

    img = Toolkit.getDefaultToolkit().getImage(
      szCurrentFilename);    

    mt = new MediaTracker(this);
    mt.addImage(img, 0);
    try
    {
      mt.waitForAll();
    }
    catch (InterruptedException ex) { }
    
    if(sp != null)
    {
      this.remove(sp);
    }  
      
    sp = new ScrollPane();
    sp.setSize(getSize());
    
    setLayout(new BorderLayout());
    add("Center", sp);
    
    iv = new imgViewer(img, 
      new Dimension(img.getWidth(this), 
	img.getHeight(this)));
    
    sp.add(iv);
    sp.doLayout();
  }  
}

// ===========================================
// Class imgViewer
// ===========================================
class imgViewer extends Panel
{
  Image im;
  Dimension dimMinSize;
  
  // ===========================================
  // imgViewer
  // ===========================================
  public imgViewer(Image img, Dimension dim)
  {
    im = img;
    dimMinSize = dim;
  }

  // ===========================================
  // paint
  // ===========================================
  public void paint(Graphics g)
  {
    g.drawImage(im, 0, 0, this);
  }  

  // ===========================================
  // getPreferredSize
  // ===========================================
  public Dimension getPreferredSize()
  {
    return dimMinSize;
  }
  
  // ===========================================
  // getMinimumSize
  // ===========================================
  public Dimension getMinimumSize()
  {
    return dimMinSize;
  }
  
  // ===========================================
  // preferredSize
  // ===========================================
  public Dimension preferredSize()
  {
    return dimMinSize;
  }
  
  // ===========================================
  // minimumSize
  // ===========================================
  public Dimension minimumSize()
  {
    return dimMinSize;
  }
}

[Назад]