Hey Leute... Ich bastel hier an nem Programm rum (ist eher so nach dem Steinbruch Prinzip als nach irgendeinem anderen [Schule]) und komme nicht wirklich weiter....
Ich hab mir 2 Frames erstellen lassen.. eines mit einem Canvas in dem ein Polygon nach den Mauskoordinaten Gezeichnet wird und ein zweiter von dem aus die farbe der Linie geregelt werde kann (sollte ;-) ) ...allerdings bekomme ich das mit dem Farbwechsel nicht hin, da die Variablen nicht über die Klassen hinaus genutzt werden können... Vielleicht hat ja jemand ne Idee oder kann mir sogar sagen wie es funktionieren könnte (nicht über die leere if schleife wundern... es funktionierte nicht und ich wollte es nicht ganz wegmachen ;-) )
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.awt.event.*;
class Farben extends JFrame implements ActionListener{
public Farben(){
GridLayout myLayout = new GridLayout(4,1);
setLayout(myLayout);
setPreferredSize(new Dimension(100, 500)); //Bestimmt Größe
setLocation( 700, 200 ); // Hier wird die Position des JFrames festgelegt
Button bRot=new Button("Rot"); //erstellt einen Button
bRot.setBackground(Color.red); //Farbe des Buttons
add(bRot); //fügt dem JFrame den Button hinzu
bRot.addActionListener(this);
Button bBlau=new Button("Blau"); //erstellt einen Button
bBlau.setBackground(Color.blue); //Farbe des Buttons
add(bBlau); //fügt dem JFrame den Button hinzu
bBlau.addActionListener(this);
Button bGelb=new Button("Gelb"); //erstellt einen Button
bGelb.setBackground(Color.yellow); //Farbe des Buttons
add(bGelb); //fügt dem JFrame den Button hinzu
bGelb.addActionListener(this);
Button bGruen=new Button("Grün"); //erstellt einen Button
bGruen.setBackground(Color.green); //Farbe des Buttons
add(bGruen); //fügt dem JFrame den Button hinzu
bGruen.addActionListener(this);
pack();
setVisible(true); //Macht das Frame Sichtbar
}
public void actionPerformed(ActionEvent e){
if (e.getActionCommand() == "Rot")
{
}
if (e.getActionCommand() == "Blau")
{
}
}
}
public class ZeichenCanvas extends JPanel { //erstellt die Klasse ZeichenCanvas mit den Eigenschaften von JPanel
public ArrayList<Point> koordinaten; // erstellt Array
public ZeichenCanvas() { //erstellt die Zeichenfläche
super();
koordinaten = new ArrayList<Point>();
setSize(400, 400);
addMouseListener(new ZeichenListener(this)); //fügt den Mouse Listener hinzu
}
protected void paintComponent(Graphics g) { //Die Funktion des Zeichnens
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if(koordinaten.isEmpty()){ //Beginnt die Funktion von vorne wenn der Array leer ist
return;
}
Point last = null;
for(Point p: koordinaten){ //Schleife
if(last==null) last = p; //Erstes Koordinatenpaar (last) wird dem Koordinaten von p zugeteilt
int x = (int) p.getX(); //x,y Koordinaten werden ermitttelt
int y = (int) p.getY();
g2.setColor(Color.blue); //Linienfarbe
g2.drawLine((int) last.getX(), (int) last.getY(),x,y); //Zeichnen einer Linie zwischen x,y und last.x, last.y
last = p; // Die letzten Koordinaten werden p zugewiesen
}
}
private class ZeichenListener implements MouseListener{ //Funktion zum löschen der Zeichenfläche
ZeichenCanvas dc;
public ZeichenListener(ZeichenCanvas dc) { //Canvas wird benannt (dc)
this.dc = dc;
}
public void mouseClicked(MouseEvent e) {
if(e.getButton()==MouseEvent.BUTTON2){ //Wenn die Maustaste 2 gedrückt wird:
dc.koordinaten.clear(); //- werden die Koordinaten aus dem Array gelöscht
dc.repaint(); // -wird die Zeichenfläche gelöscht
return;
}
dc.koordinaten.add(e.getPoint()); //andernfalls
dc.repaint(); //
}
public void mousePressed(MouseEvent e) {} //Stummelfuntionen ...
public void mouseReleased(MouseEvent e) {} // ...
public void mouseEntered(MouseEvent e) {} // ...
public void mouseExited(MouseEvent e) {} // ...
}
public static void main(String[] args) { //Main Funktion
ZeichenCanvas c = new ZeichenCanvas(); //Erstellt Canvas
JFrame m = new JFrame("ZeichenFenster"); //Erstellt JFrame
m.setPreferredSize(new Dimension(500, 500)); //Bestimmt Größe
m.setLocation( 200, 200 ); // Hier wird die Position des JFrames festgelegt
m.add(c); //Fügt den Canvas hinzu
m.pack();
m.setVisible(true); //Macht das Fenster sichtbar
Farben f= new Farben(); //Erstellt 2tes JFrame
}
}
Schonmal Danke im Vorraus
Till