000
08.12.2002, 13:48 Uhr
e-Caf|Y|baB
|
Hallo, ich habe ein Programm geschrieben, in dem ein Hauptfenster erstellt wird, dass mehrere Kindfenster enthält. Hierbei habe ich mit den Swing-Klassen gearbeitet. In einem dieser Kindfenster soll der Benutzer zeichnen können. Das funktioniert auch, nur habe ich das Problem, dass alles gezeichnete verschwindet, wenn ein anderes Fenster aktiviert wurde. Also: 1. Wie kann ich realisieren, dass das Gezeichnete dableibt? 2. Außerdem möchte ich das Gezeichnete gerne in einer Variablen oder einer Datei abspeichern, könnt ihr mir helfen?
Mein Code des Kindfensters:
C++: |
import java.awt.*; import java.awt.event.*; import javax.swing.*;
class ZeichnenFenster extends JInternalFrame { public ZeichnenFenster( String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable) {
super(title,resizable,closable,maximizable,iconifiable); this.setBackground(Color.lightGray); this.setLocation(0, 0); this.setSize(400, 400); this.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
JPanel PZeichnen = new JPanel(); JPanel PZeichnenMenu = new JPanel();
// Panel PZeichnen einrichten: PZeichnen.setBorder(BorderFactory.createEtchedBorder()); this.getContentPane().add(PZeichnen, BorderLayout.CENTER); PZeichnen.setBackground(Color.white); PZeichnen.addMouseListener(new MausLauscher()); // Panel PZeichnenMenu einrichten: PZeichnenMenu.setBorder(BorderFactory.createEtchedBorder()); this.getContentPane().add(PZeichnenMenu, BorderLayout.EAST); PZeichnenMenu.setBackground(Color.red);
} class MausLauscher extends MouseAdapter { int cnt = 0; public void mousePressed(MouseEvent event) { Graphics g = getGraphics(); int x = event.getX(); int y = event.getY(); x += 5; y += 25; if (event.getClickCount() == 1) { //Gesicht ++cnt; //Kopf und Augen g.drawOval(x-10,y-10,20,20); g.fillRect(x-6,y-5,4,5); g.fillRect(x+3,y-5,4,5); //Mund if (event.isMetaDown()) { //grimmig g.drawLine(x-5,y+7,x+5,y+7); } else { //lächeln g.drawArc(x-7,y-7,14,14,225,100); } //Zähler g.drawString(""+cnt,x+10,y-10); } else if (event.getClickCount() == 2) { //Brille g.drawLine(x-9,y-3,x+9,y-3); } } } }
|
Danke für jede Hilfe, MfG e-Caf -- There are 10 types of people - those who understand binary and those who don't. |