Frage steht oben.
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
import java.awt.*;
import java.io.File;
import javax.swing.*;
/**
* Class ZEICHENFENSTER - Eine Klasse, die einfache grafische Zeichnungen
* in einem Programmfenster ermöglicht.
*
*
* @version 2007.05.07
*/
public class ZEICHENFENSTER
{
public JFrame frame;
private CanvasPane canvas;
private JPanel steuerungOst,steuerungSued;
private Graphics2D graphic;
private Color backgroundColor;
public Image canvasImage;
private static ZEICHENFENSTER singleton;
/**
* Erzeugt eine Zeichenfenster mit Standardmaßen 600*500 und Hintergrundfarbe weiß
* @param titel Titel des Fensters
*/
public ZEICHENFENSTER(String titel)
{
this(titel, 500, 250, Color.white);
frame = new JFrame();
}
/**
* Erzeugt ein Zeichenfenster mit weißem Hintergrund.
* @param titel Fensterueberschirft
* @param breite Breite des Fensters
* @param hoehe Hoehe des Fensters
*/
public ZEICHENFENSTER(String titel, int breite, int hoehe)
{
this(titel, breite, hoehe, Color.white);
frame = new JFrame();
}
/**
* Erzeugt ein Zeichenfenster.
* @param titel Fensterueberschirft
* @param breite Breite des Fensters
* @param hoehe Hoehe des Fensters
* @param hintergrundFarbe Hintergrundfarbe des Zeichenfensters
*/
private ZEICHENFENSTER(String titel, int breite, int hoehe, Color hintergrundFarbe)
{
frame = new JFrame();
canvas = new CanvasPane();
canvas.setPreferredSize(new Dimension(breite, hoehe));
frame.getContentPane().add(canvas,BorderLayout.CENTER);
JPanel p1=new JPanel();
p1.setLayout(new BorderLayout());
steuerungOst = new JPanel();
steuerungSued = new JPanel();
//frame.addMouseListener(new Senet());
steuerungOst.setLayout(new BoxLayout(steuerungOst,BoxLayout.Y_AXIS));
steuerungSued.setLayout(new BoxLayout(steuerungSued,BoxLayout.X_AXIS));
p1.add(steuerungOst,BorderLayout.NORTH);
frame.getContentPane().add(p1,BorderLayout.EAST);
frame.getContentPane().add(steuerungSued,BorderLayout.SOUTH);
frame.setTitle(titel);
backgroundColor = hintergrundFarbe;
frame.pack();
zeige();
}
public static ZEICHENFENSTER gibFenster()
{
if (singleton==null){singleton=new ZEICHENFENSTER("PAC-MAN - By Sebastian Goehring", 500, 600, Color.black);}// 836, 704,
singleton.zeige();
return singleton;
}
/**
* Macht das Zeichenfenster sichtbar bzw. setzt es in den Vordergrund,
* falls es bereits sichtbar ist.
*/
public void zeige()
{
if(graphic == null) {
// nur beim ersten Aufruf wird der Hintergrund mit der Hintergrundfarbe
// gefuellt
Dimension size = canvas.getSize();
canvasImage = canvas.createImage(size.width, size.height);
graphic = (Graphics2D)canvasImage.getGraphics();
graphic.setColor(backgroundColor);
graphic.fillRect(0, 0, size.width, size.height);
graphic.setColor(Color.black);
}
frame.setVisible(true);
}
(...unwichtiger Part..)
class ViewComponent extends JComponent {
public ViewComponent() {
}
public ViewComponent(File f) {
this.setImage(f);
}
public void setImage(File file) {
ZEICHENFENSTER.gibFenster().canvasImage = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath())
;
if (ZEICHENFENSTER.gibFenster().canvasImage != null)
repaint();
}
@Override
protected void paintComponent(Graphics g) {
if (ZEICHENFENSTER.gibFenster().canvasImage != null)
g.drawImage(ZEICHENFENSTER.gibFenster().canvasImage, 0, 0, this);
}
}
/*
* In dieser Klasse können erstellte Bilder hochgeladen werden.
*/
class ImageViewer {
private ViewComponent viewComponent = null;
private File imageFile = null;
public ImageViewer(String Bild) {
imageFile = new File(Bild);
viewComponent = new ViewComponent(imageFile);
ZEICHENFENSTER.gibFenster().frame.add(viewComponent);
ZEICHENFENSTER.gibFenster().frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
ZEICHENFENSTER.gibFenster().frame.setVisible(true);
}
}
ImageViewer image = new ImageViewer("Pacman.png");
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ImageFoo {
private JFrame frame;
private JPanel panel1;
private JPanel panel2;
public void init() {
this.panel1 = new FooPanel();
this.panel2 = new FooPanel2();
this.frame = new JFrame();
this.frame.setSize(300, 300);
this.frame.getContentPane().add(panel1);
this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.frame.setVisible(true);
}
public void start() {
while (true) {
this.frame.getContentPane().remove(panel1);
this.frame.getContentPane().add(panel2);
// swap panels
JPanel temp = this.panel1;
panel1 = panel2;
panel2 = temp;
this.frame.validate();
this.frame.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String... _) {
ImageFoo foo = new ImageFoo();
foo.init();
foo.start();
}
static class FooPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(10, 10, 10, 10);
}
}
static class FooPanel2 extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(10, 10, 10, 10);
}
}
}