при открытии изображения каждый раз создаю новое окно, а как сделать чтобы оно открывалось в дочерних окнах?
Код
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.applet.*;
import javax.swing.*;
public class imageV {
public static void main(String[] args) {
FrameWindow frame;
frame = new FrameWindow("Image_Viewer");
frame.setVisible(true);
}
}
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;
//для ожидания завершения процесса загрузки выбранного изображения
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); // для отслеживания размеров окна
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(miOpen))
{
FileOpen();
}
else if(e.getSource().equals(miExit))
{
setVisible(false);
System.exit(0);
}
}
public void componentResized(ComponentEvent e)
{
if(sp != null)
{
doLayout();
sp.doLayout();
sp.repaint();
iv.repaint();
}
}
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) {}
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) {}
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); //5 частей
iv = new imgViewer(img,
new Dimension(img.getWidth(this),
img.getHeight(this)));
sp.add(iv);
sp.doLayout();
}
}
class imgViewer extends Panel
{
Image im;
Dimension dimMinSize;
public imgViewer(Image img, Dimension dim)
{
im = img; //ссылка на изображение
dimMinSize = dim;
}
public void paint(Graphics g)
{
g.drawImage(im, 0, 0, this);
}
public Dimension getPreferredSize()
{
return dimMinSize;
}
public Dimension getMinimumSize()
{
return dimMinSize;
}
public Dimension preferredSize()
{
return dimMinSize;
}
public Dimension minimumSize()
{
return dimMinSize;
}
}