Hallo Leute
ich versuche zur Zeit so etwas wie ein Paint Programm zu programmieren habe jedoch paar Probleme. Hier zuerst mal der Queltext für die grafische Oberfläche:
Und dann noch die Quelltexte zum Zeichnen von Kreisen und von Rechtecken:
Rechteck:
Kreis:
So jetzt habe ich das Problem dass ich auf einen Panel nicht beides zeichnen kann sondern nur dass welchen Button ich zuerst gedrückt habe. Wenn ich zum Beispiel auf den Rechteck Button drücke dann kann ich hinterher kein Kreis mehr zeichnen. Wie muss ich meinen Quelltext ändern damit das funktioniert??? Wäre wirklich edel wenn mir jemand helfen könnte
ich versuche zur Zeit so etwas wie ein Paint Programm zu programmieren habe jedoch paar Probleme. Hier zuerst mal der Queltext für die grafische Oberfläche:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 11/18/2010
* @author
*/
public class GUIneu extends JFrame {
// Anfang Attribute
private JPanel JPanel1 = new JPanel(null);
private JButton JButton1 = new JButton();
private JButton JButton2 = new JButton();
private JButton JButton3 = new JButton();
private JButton JButton4 = new JButton();
private JButton JButton5 = new JButton();
private JButton JButton6 = new JButton();
private JButton JButton7 = new JButton();
private JButton JButton8 = new JButton();
private ButtonGroup jButtonGroup1 = new ButtonGroup();
// Ende Attribute
public GUIneu(String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 1000;
int frameHeight = 700;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
JPanel1.setBounds(0, 0, 1000, 700);
JPanel1.setBackground(null);
cp.add(JPanel1);
JButton1.setBounds(0, 0, 50, 50);
JButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Bleistift.JPG")));
JButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton1_ActionPerformed(evt);
}
});
JPanel1.add(JButton1);
JButton2.setBounds(0, 50, 50, 50);
JButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Rechteck.JPG")));
JButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton2_ActionPerformed(evt);
}
});
JPanel1.add(JButton2);
JButton3.setBounds(0, 100, 50, 50);
JButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Kreis.JPG")));
JButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton3_ActionPerformed(evt);
}
});
JPanel1.add(JButton3);
JButton4.setBounds(0, 150, 50, 50);
JButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Linie.JPG")));
JButton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton4_ActionPerformed(evt);
}
});
JPanel1.add(JButton4);
JButton5.setBounds(0, 200, 50, 50);
JButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Ratzifummi.JPG")));
JButton5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton5_ActionPerformed(evt);
}
});
JPanel1.add(JButton5);
JButton6.setBounds(0, 250, 50, 50);
JButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Text.JPG")));
JButton6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton6_ActionPerformed(evt);
}
});
JPanel1.add(JButton6);
JButton7.setBounds(0, 300, 50, 50);
JButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Lupe.JPG")));
JButton7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton7_ActionPerformed(evt);
}
});
JPanel1.add(JButton7);
JButton8.setBounds(0,350, 50, 50);
JButton8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Farbpalette.JPG")));
JButton8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JButton8_ActionPerformed(evt);
}
});
JPanel1.add(JButton8);
// Ende Komponenten
setResizable(false);
setVisible(true);
}
// Anfang Methoden
public void JButton1_ActionPerformed(ActionEvent evt) {
Freihandzeichnen Fenster = new Freihandzeichnen();
Fenster.setBounds(50, 0, 1000, 700);
JPanel1.add(Fenster);
}
public void JButton2_ActionPerformed(ActionEvent evt) {
Rechtecknew win = new Rechtecknew();
win.setBounds(50, 0, 1000, 700);
JPanel1.add(win);
}
public void JButton3_ActionPerformed(ActionEvent evt) {
Kreis kreis = new Kreis();
kreis.setBounds(50, 0, 1000, 700);
JPanel1.add(kreis);
}
public void JButton4_ActionPerformed(ActionEvent evt) {
Linie linie = new Linie();
linie.setBounds(50, 0, 1000, 700);
JPanel1.add(linie);
}
public void JButton5_ActionPerformed(ActionEvent evt) {
Radiergummi Radier = new Radiergummi();
Radier.setBounds(50, 0, 1000, 700);
JPanel1.add(Radier);
}
public void JButton6_ActionPerformed(ActionEvent evt) {
}
public void JButton7_ActionPerformed(ActionEvent evt) {
Zoom zoom = new Zoom();
zoom.setBounds(50, 0, 1000, 700);
JPanel1.add(zoom);
}
public void JButton8_ActionPerformed(ActionEvent evt) {
Component comp = (Component) evt.getSource();
Color newColor = JColorChooser.showDialog(
null, "Wähle neue Farbe", comp.getBackground() );
JPanel1.setBackground( newColor );
}
// Ende Methoden
public static void main(String[] args) {
new GUIneu("GUIneu");
}
}
Und dann noch die Quelltexte zum Zeichnen von Kreisen und von Rechtecken:
Rechteck:
Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Rechtecknew extends JPanel implements MouseListener, MouseMotionListener {
// Anfang Attribute
private Graphics2D g2;
private Rectangle paintRect = new Rectangle();
// Ende Attribute
public Rechtecknew() {
System.out.println("Rechteck..");
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
protected void paintComponent(Graphics g) {
if (paintRect != null) {
g2 = (Graphics2D) g;
g2.setPaintMode();
g.drawRect(paintRect.x, paintRect.y, paintRect.width, paintRect.height);
paintRect.x = paintRect.width ;
paintRect.y = paintRect.height;
}
}
// Anfang Methoden
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
paintRect.x=e.getX();
paintRect.y=e.getY();
}
public void mouseReleased(MouseEvent e) {
paintRect.width = e.getX()-paintRect.x;
paintRect.height = e.getY()-paintRect.y;
repaint();
}
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
// Ende Methoden
}
Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Kreis extends JPanel implements MouseListener, MouseMotionListener {
private int startX, startY, tempX, tempY;
private Graphics2D g2;
public Kreis() {
System.out.println("Kreis..");
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
protected void paintComponent(Graphics g) {
if (g != null) {
g = (Graphics2D) g;
g.drawArc(startX, startY, tempX, tempY,360 , 360);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
}
public void mouseReleased(MouseEvent e) {
tempX = e.getX()-startX;
tempY = e.getY()-startY;
repaint();
}
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
}
So jetzt habe ich das Problem dass ich auf einen Panel nicht beides zeichnen kann sondern nur dass welchen Button ich zuerst gedrückt habe. Wenn ich zum Beispiel auf den Rechteck Button drücke dann kann ich hinterher kein Kreis mehr zeichnen. Wie muss ich meinen Quelltext ändern damit das funktioniert??? Wäre wirklich edel wenn mir jemand helfen könnte
Zuletzt bearbeitet von einem Moderator: