import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
public class GUI extends JFrame
{
private final Painter painter;
private final JLabel ueberschrift;
public GUI() {
super("Anzeige");
setLayout(new BorderLayout());
((JPanel)getContentPane()).setBorder(new EmptyBorder(6,6,6,6));
// Werkzeugleiste erstellen
JPanel werkzeugleiste = new JPanel();
werkzeugleiste.setLayout(new GridLayout(0,1));
JButton button1 = new JButton ("Button");
knotenHinzufuegen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
einfuegen();
}
});
werkzeugleiste.add(button1);
JButton button2= new JButton("Button");
farbeKnoten.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
aendern();
}
});
werkzeugleiste.add(button2);
.....
JPanel anordnung = new JPanel();
anordnung.add(werkzeugleiste);
add(anordnung, BorderLayout.WEST);
// Contentbereich erstellen, in dem die Graphics eingefügt werden sollen
JPanel anzeigehintergrund = new JPanel();
anzeigehintergrund.setBorder(new EtchedBorder());
anzeigehintergrund.setBackground(new Color(255, 255, 255));
anzeigehintergrund.setLayout(new BorderLayout());
painter = new Painter();
painter.setBackground(new Color(255, 255, 255));
ueberschrift = new JLabel("Hier entsteht mein Muster");
anzeigehintergrund.add(painter, BorderLayout.CENTER);
anzeigehintergrund.add(ueberschrift, BorderLayout.NORTH);
add(anzeigehintergrund, BorderLayout.CENTER);
setVisible(true);
}
private void einfuegen() {
Zeichnung zeichnung = new Zeichnung();
// Zeichnung modifizieren und anschließend übergeben
painter.addZeichnung(zeichnung);
}
private void aendern() {
// ...
}
private final class Painter extends JPanel
{
private final List<Zeichnung> zeichnungen;
/**
*
*/
public Painter() {
this.zeichnungen = new ArrayList<Zeichnung>();
}
/**
* @param zeichnung
*/
public void addZeichnung(Zeichnung zeichnung) {
zeichnungen.add(zeichnung);
repaint();
}
/**
* @param zeichnung
*/
public void removeZeichnung(Zeichnung zeichnung) {
zeichnungen.remove(zeichnung);
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
for(int i = 0; i < zeichnungen.size(); i++) {
zeichnungen.get(i).paint(g2);
}
}
}
}