Moin Leute,
ich fange gerade erst an in Java zu programmieren, und habe mich daher an einem kleinen Programm zum Zeichnen gemacht. Ich habe bereits ein Tutorial gefunden, wo es einen beispielhaften Code gibt, von dem ich nur die Methode zum zeichnen übernommen habe (PaintingComponent), damit es funktioniert. Beim beispiel konnte man die Größe des Shapes nicht per Benutzereingabe festlegen. Dies wollte ich ändern, doch jetzt zeichnet das Programm nicht mehr, obwohl die Zeichnen Methode immer noch korrekt aufgerufen wird und die Werte eingelesen werden.
Hier erstmal der Code der Hauptklasse.
Die Methode massabfrage funktioniert (daher auch nicht auch noch hier eingefügt). Die Variablen x, y, w, und h sind in der Klasse Massabfrage.
Manches hat noch keine Funktion (z. B. delete) doch ich hoffe mal, dass das nicht der Fehler ist.
Ich sitze nun bereits eine ganze weile an diesem Problem und kann dennoch keinen Fehler finde, vielleicht findet ihr ihn.
Danke schon mal im Voraus an alle, die antworten.
ich fange gerade erst an in Java zu programmieren, und habe mich daher an einem kleinen Programm zum Zeichnen gemacht. Ich habe bereits ein Tutorial gefunden, wo es einen beispielhaften Code gibt, von dem ich nur die Methode zum zeichnen übernommen habe (PaintingComponent), damit es funktioniert. Beim beispiel konnte man die Größe des Shapes nicht per Benutzereingabe festlegen. Dies wollte ich ändern, doch jetzt zeichnet das Programm nicht mehr, obwohl die Zeichnen Methode immer noch korrekt aufgerufen wird und die Werte eingelesen werden.
Hier erstmal der Code der Hauptklasse.
Java:
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class Fenster extends Massabfrage
{
//Fenster wird "deklariert":
JFrame mainWin = new JFrame("InArchitect");
JMenuBar menuBar = new JMenuBar();
//neuObjMenu wird "deklariert":
JMenu neuObjMenu = new JMenu("Neues Objekt");
JMenuItem recta = new JMenuItem("Rechteck");
JMenuItem elli = new JMenuItem("Ellipse");
//deleteMenu wird "deklariert":
JMenu deleteMenu = new JMenu("Löschen");
JMenuItem delete = new JMenuItem("Projekt löschen");
//paintUtil wird erzeugt:
PaintingComponent paintUtil = new PaintingComponent();
//Ein Shape wird deklariert und auf null gesetzt:
Shape shape = null;
//Neuer ActionListener wird erzeugt:
ActionListener actList = new ActionListener()
{
public void actionPerformed(ActionEvent shapeAE)
{
//Shape wird abgefragt und gesetzt:
if(shapeAE.getSource() == recta)
{
neuesRechteck();
}else if(shapeAE.getSource() == elli)
{
}
/*else if(shapeAE.getSource() == )
{
}*/
//Farbe wird abgefragt und gesetzt:
if(shape != null)
{
paintUtil.setColor(JColorChooser.showDialog(mainWin, "Farbauswahl", null));
}
paintUtil.repaint();
}
}
;
public Fenster()
{
//Fenster wird "initialisiert":
mainWin.setLayout(new BorderLayout());
mainWin.setSize(800, 450);
mainWin.setLocationRelativeTo(null);
mainWin.getContentPane().setBackground(Color.WHITE);
mainWin.setExtendedState(JFrame.MAXIMIZED_BOTH); //MERKEN!!
mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Den Menupunkten von neuObjMenu wird ein ActionListener hinzugefügt:
recta.addActionListener(actList);
elli.addActionListener(actList);
//Dem neuObjMenu werden die Menüpunkte hinzugefügt:
neuObjMenu.add(recta);
neuObjMenu.add(elli);
//Dem deleteMenu wird der Menüpunkt hinzugefügt:
deleteMenu.add(delete);
//Der Menüleiste werden die Menüs hinzugefügt:
menuBar.add(neuObjMenu);
menuBar.add(deleteMenu);
//Dem Fenster wird die Menüleiste hinzugefügt:
mainWin.add(menuBar, BorderLayout.NORTH);
//Sichbarkeit des Fensters wird auf sichtbar gesetzt:
mainWin.setVisible(true);
}
//Programm wird gestartet:
public static void main()
{
Fenster fenster = new Fenster();
}
public void neuesRechteck()
{
massabfrage();
shape = new Rectangle2D.Float(x, y, w, h);
paintUtil.setShape(shape);
}
}
class PaintingComponent extends JComponent
{
Shape shape;
Color shapeColor;
public void paintComponent(Graphics g)
{
if(shape!=null && shapeColor!=null)
{
Graphics2D gTrudi = (Graphics2D)g;
gTrudi.setColor(shapeColor);
gTrudi.draw(shape);
}
}
public void setColor(Color shapeColor)
{
this.shapeColor = shapeColor;
}
public void setShape(Shape shape)
{
this.shape = shape;
}
public void loesche(Graphics g)
{
super.paintComponent(g);
}
}
Die Methode massabfrage funktioniert (daher auch nicht auch noch hier eingefügt). Die Variablen x, y, w, und h sind in der Klasse Massabfrage.
Manches hat noch keine Funktion (z. B. delete) doch ich hoffe mal, dass das nicht der Fehler ist.
Ich sitze nun bereits eine ganze weile an diesem Problem und kann dennoch keinen Fehler finde, vielleicht findet ihr ihn.
Danke schon mal im Voraus an alle, die antworten.
Zuletzt bearbeitet: