|
|
Исходный текст программы 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;
}
}
|
|
|