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



Zitieren