Hallo,
ich habe ein Problem, ich möchte gern mehrere Rechtecke zeichnen, wobei sie mit der Farbe ausgefüllt werden sollen, auf dessen Button ich vorher klicke.
Das Rechteck geht immer weg, ist schwarz und meine Clear-Fkt. funktioniert auch nicht mehr
Woran kann es liegen, und wie mach ich das mit den Button? Also dass ich da raufklicke und mein nächstes Rechteck mit dieser Farbe ausgefüllt wird. Komm da irgendwie nicht weiter...
Vielen Dank schonmal für Eure Hilfe, Code folgt:
Wäre für jeden Tipp dankbar.
ich habe ein Problem, ich möchte gern mehrere Rechtecke zeichnen, wobei sie mit der Farbe ausgefüllt werden sollen, auf dessen Button ich vorher klicke.
Das Rechteck geht immer weg, ist schwarz und meine Clear-Fkt. funktioniert auch nicht mehr
Woran kann es liegen, und wie mach ich das mit den Button? Also dass ich da raufklicke und mein nächstes Rechteck mit dieser Farbe ausgefüllt wird. Komm da irgendwie nicht weiter...
Vielen Dank schonmal für Eure Hilfe, Code folgt:
Code:
import java.awt.*;
import java.awt.event.*;
public class RechteckDraw extends Canvas implements MouseListener, ActionListener{
public RechteckDraw() {
super();
// TODO Auto-generated constructor stub
myFrame = new Frame("Recktecke zeichnen");
// Beim Schließen des Frames Applikation beenden
myFrame.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
}
);
myFrame.setBackground(Color.lightGray);
myFrame.setLayout(new BorderLayout());
myPanel = new Panel();
myPanel.setSize(400, 100);
myPanel.add(myButton = new Button("Clear"));
myButton.addActionListener(this);
myPanel.add(myButton = new Button("Schwarz"));
myButton.addActionListener(this);
myPanel.add(myButton = new Button("Red"));
myButton.addActionListener(this);
myPanel.add(myButton = new Button("Blue"));
myButton.addActionListener(this);
myPanel.add(myButton = new Button("Yellow"));
myButton.addActionListener(this);
myPanel.add(myButton = new Button("Exit"));
myButton.addActionListener(this);
// die redefinierte Methode paint befindet sich in dieser Klasse!
myCanvas = this;
myCanvas.setSize(400, 400);
myCanvas.setForeground( Color.black );
myCanvas.setBackground( Color.white );
// MouseListener wird in dieser Klasse implementiert
myCanvas.addMouseListener(this);
myFrame.add("Center", myCanvas);
myFrame.add("South", myPanel);
myFrame.setLocation( 100, 200 );
myFrame.pack(); // ordnet die Komponenten neu an
myFrame.show(); // macht das Fenster sichtbar
}
protected Frame myFrame;
protected Panel myPanel;
protected Canvas myCanvas;
protected Button myButton;
protected int x, y, b, h;
protected Image drwImg = null;
protected Graphics drwGr = null;
/** zeichnet die Fläche im Canvas
* Diese Methode redefiniert die Methode paint aus der
* Klasse Canvas. */
public void paint( Graphics g ) {
if (drwImg == null) {
drwImg = createImage(getSize().width, getSize().height);
drwGr = drwImg.getGraphics();
}
g.fillRect(x, y, b, h);
//g.drawImage(drwImg, 0, 0, null);
}
// ActionEventListener
public void actionPerformed( ActionEvent e ) {
switch (e.getActionCommand().charAt(0)) {
// Button am ersten Buchstaben unterscheiden
case 'C':
drwGr.clearRect(0,0,getSize().width,getSize().height);
repaint();
break;
case 'S':
/* wenn auf den Button "Schwarz" gedrückt wird,
soll Rechteck schwarz ausgemalt sein */
repaint();
break;
case 'R':
/* wenn auf den Button "Red" gedrückt wird,
soll Rechteck rot ausgemalt sein */
repaint();
break;
case 'B':
/* wenn auf den Button "Blue" gedrückt wird,
soll Rechteck blau ausgemalt sein */
repaint();
break;
case 'Y':
/* wenn auf den Button "Yellow" gedrückt wird,
soll Rechteck gelb ausgemalt sein */
repaint();
break;
case 'E':
System.exit(0);
return;
}
}
// MouseListener
public void mousePressed( MouseEvent e ) {
x = e.getX();
y = e.getY();
}
public void mouseReleased( MouseEvent e ) {
b = e.getX();
h = e.getY();
if (drwGr != null)
drwGr.drawLine(x,y,b,h);
repaint();
}
public void mouseClicked( MouseEvent e ) { }
public void mouseEntered( MouseEvent e ) { }
public void mouseExited( MouseEvent e ) { }
public static void main(String[] args) {
new RechteckDraw();
}
}
Wäre für jeden Tipp dankbar.