Hallo,
ich möchte mehrere Bilder und Histogramme in einen Frame zeichnen und diese sollen alle dem LayoutManager (GridBagLayout) übergeordnet sein. Es soll dann proportional skaliert werden und gibt noch einige Besonderheiten.
Wie mach ich das am Besten? Jedes Bild nen eigenes Panel, die Panels den Layout zuweisen und dann das Panel zeichnen?
Ich möchte nur AWT und nicht SWING benutzen.
ich möchte mehrere Bilder und Histogramme in einen Frame zeichnen und diese sollen alle dem LayoutManager (GridBagLayout) übergeordnet sein. Es soll dann proportional skaliert werden und gibt noch einige Besonderheiten.
Wie mach ich das am Besten? Jedes Bild nen eigenes Panel, die Panels den Layout zuweisen und dann das Panel zeichnen?
Ich möchte nur AWT und nicht SWING benutzen.
Java:
package htw;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Fenster extends Frame {
public Fenster(String pfad) {
this.pfad = pfad;
}
private String pfad;
// This method returns an Image object from a buffered image
public static Image toImage(BufferedImage bufferedImage) {
return Toolkit.getDefaultToolkit().createImage(bufferedImage.getSource());
}
public void update(Graphics g) { //Example2409.java
paint(g);
}
@Override
public void paint(Graphics g) {
super.paint(g);
Color linie = new Color (255,0,255);
Image foto2 = null;
g.setColor(linie);
Dimension windowSize = this.getSize();
int heigth = (int) windowSize.getHeight();
int width = (int) windowSize.getWidth();
BufferedImage foto = null;
try {
foto = BufferImage.drawthePicture(pfad);
foto2 = toImage(foto);
// Skaliert das Bild auf best. Maße, 2 = FAST_SCALING
foto2 = foto2.getScaledInstance(width, heigth , 2);
g.drawImage(foto2, 0, getheigthTitlebar(), this);
// Groesse des aktuellen Fensters
g.drawString(String.valueOf(windowSize.getHeight()), 100, 100);
//g.drawLine(0, getheigthTitlebar(), 400, 200);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// Gibt die Hoehe der Titlebar wieder, um korrekt zu zeichnen
public int getheigthTitlebar (){
return this.getInsets().top;
}
}