Hallo,
ich habe folgendes Problem:
ich möchte ein Frame(Verwendung: Window zum Darstellen von einem Bild) in ein ScrollPane einfügen und die Größe des ScrollPanes an die des Frames anpassen. Das ScrollPane ist in einem "Haupt"-Frame enthalten, somit soll, nach Einfügen des Frames in ScrollPane, auch dieses der entsprechenden Größe angepasst werden.
Anbei noch ein Teil des Programmcodes, das Problem ist die Methode openInScrollPane. Hier soll das Frame(ImageWindow bzw StackWindow)) der ScrollPane hinzugefügt werden und das gesamte Frame("Neuron2DView") Größenmässig angepasst werden.
Danke schon mal im Voraus,
Ninja
ich habe folgendes Problem:
ich möchte ein Frame(Verwendung: Window zum Darstellen von einem Bild) in ein ScrollPane einfügen und die Größe des ScrollPanes an die des Frames anpassen. Das ScrollPane ist in einem "Haupt"-Frame enthalten, somit soll, nach Einfügen des Frames in ScrollPane, auch dieses der entsprechenden Größe angepasst werden.
Anbei noch ein Teil des Programmcodes, das Problem ist die Methode openInScrollPane. Hier soll das Frame(ImageWindow bzw StackWindow)) der ScrollPane hinzugefügt werden und das gesamte Frame("Neuron2DView") Größenmässig angepasst werden.
Code:
public class Layout extends Frame
{
public static Layout layout = null;
public static Frame frame = null;
private static ScrollPane scrollpane = null;
/**
* Hilfsmethode makegbc, mit der auf einfache Weise ein neues GridBagConstraints-Objekt für einen vorgegebenen
* Bereich von Zellen erzeugt werden kann
*
* @param x
* @param y
* @param width
* @param height
* @return
*/
private GridBagConstraints makegbc(int x, int y, int width, int height)
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.insets = new Insets(1, 1, 1, 1);
return gbc;
}
/**
* Hilfsmethode um Stack in ScollPane anzuzeigen
*
* @param image
*/
public void openInScrollPane(ImagePlus image)
{
ImageCanvas canvas = new ImageCanvas(image);
if(image.getStackSize()>1)
{
StackWindow stackw = new StackWindow(image, canvas); //extends ImageWindow
stackw.add(scrollpane);
}
else
{
ImageWindow imagew = new ImageWindow(image, canvas); //extends Frame
imagew.add(scrollpane);
}
}
/*
* Konstruktor Layout
*/
public Layout ()
{
frame = new Frame("Neuron2DView");
GridBagLayout gbl = new GridBagLayout();
frame.setLayout( gbl );
GridBagConstraints gbc;
// Hinzufuegen ScrollPane fuer thumbnail
ScrollPane thumbnail = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
gbc = makegbc(0, 0, 3, 6);
gbc.weightx = 10;
gbc.weighty = 10;
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(thumbnail, gbc);
frame.add(thumbnail);
// Hinzufuegen TextField fuer Information
TextField info = new TextField();
gbc = makegbc(3, 8, 1, 1);
gbc.weightx = 100;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.SOUTHEAST;
gbl.setConstraints(info, gbc);
frame.add(info);
//Hinzufuegen Button
Button logo = new Button("LOGO");
gbc = makegbc(0, 8, 1, 1);
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.SOUTHWEST;
gbl.setConstraints(logo, gbc);
frame.add(logo);
//Hinzufuegen ScrollPane fuer image
scrollpane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
scrollpane.setBackground(Color.blue);
gbc = makegbc(3, 0, 8, 8);
gbc.weightx = 100;
gbc.weighty = 100;
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(scrollpane, gbc);
frame.add(scrollpane);
//Darstellung des Look-and-Feel im Windows-Schema
try
{
String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
UIManager.setLookAndFeel(plaf);
}
catch (UnsupportedLookAndFeelException e)
{
System.err.println(e.toString());
}
catch (ClassNotFoundException e)
{
//
e.printStackTrace();
}
catch (InstantiationException e)
{
//
e.printStackTrace();
}
catch (IllegalAccessException e)
{
//
e.printStackTrace();
}
//Darstellung
frame.pack();
frame.setSize( 700, 500 );
frame.setMenuBar(new MenuBar2D());
frame.addWindowListener(new WindowClosingAdapter(true));
frame.setVisible( true );
}
}
Danke schon mal im Voraus,
Ninja