Guten morgen 
Ich habe mich jetzt einige Zeit mit dem Programm beschäftigt, kann aber nicht erkennen, warum nichts gezeichnet wird. Es soll ein Funktionsplotter werden. Wenn man auf den Button klickt, wird der Inhalt vom Textfeld an das Panel übergeben. Das Panel gibt die Funktion an den Rechner weiter. Der berechnet für jeden x-Wert innerhalb des Panels den y-Wert und zeichnet eine Linie zwischen den jeweiligen Punkten. Leider wird aber die Funktion nicht gezeichnet. das vorläufige Koordinatensystem schon. Mir ist klar, dass ich später noch die Funktionswerte anpassen muss, aber ich wollte erstmal das Problem lösen.
Wäre super, wenn mir jemand helfen könnte
(Die Funktion wird durch das JEP Package geparsed)
Quelltext der Klasse Panel
Ich habe mich jetzt einige Zeit mit dem Programm beschäftigt, kann aber nicht erkennen, warum nichts gezeichnet wird. Es soll ein Funktionsplotter werden. Wenn man auf den Button klickt, wird der Inhalt vom Textfeld an das Panel übergeben. Das Panel gibt die Funktion an den Rechner weiter. Der berechnet für jeden x-Wert innerhalb des Panels den y-Wert und zeichnet eine Linie zwischen den jeweiligen Punkten. Leider wird aber die Funktion nicht gezeichnet. das vorläufige Koordinatensystem schon. Mir ist klar, dass ich später noch die Funktionswerte anpassen muss, aber ich wollte erstmal das Problem lösen.
Wäre super, wenn mir jemand helfen könnte
(Die Funktion wird durch das JEP Package geparsed)
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JTextField;
import javax.swing.JButton;
public class Main extends JApplet {
private JTextField textField;
/**
* Create the applet.
*/
public Main() {
final Panel panel = new Panel();
JLabel lblFunktion = new JLabel("Funktion");
textField = new JTextField();
textField.setColumns(10);
JButton btnBerechnen = new JButton("Berechnen");
ActionListener al = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
panel.zeichneFunktion(textField.getText());
}
};
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(panel, GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lblFunktion)
.addGap(18)
.addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(btnBerechnen)
.addContainerGap(101, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.TRAILING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(lblFunktion)
.addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(btnBerechnen))
.addPreferredGap(ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
.addComponent(panel, GroupLayout.PREFERRED_SIZE, 450, GroupLayout.PREFERRED_SIZE))
);
getContentPane().setLayout(groupLayout);
}
public void init()
{
this.setSize(500,500);
}
public void start()
{
}
public void paint()
{
}
}
Quelltext der Klasse Panel
Java:
import java.awt.Graphics;
import javax.swing.JPanel;
public class Panel extends JPanel{
Rechner rechner= new Rechner();
boolean zeichnen = false;
public Panel(){
Rechner rechner= new Rechner();
}
@Override
protected void paintComponent(Graphics g) {
int x1, x2, y1, y2;
super.paintComponent(g);
g.drawLine(0, this.getSize().height/2, this.getSize().width, this.getSize().height/2); //x-Achse
g.drawLine(this.getSize().width/2, 0, this.getSize().width/2, this.getSize().height); //y-Achse
if(zeichnen)
{
x1 = -this.getSize().width;
do{
y1=(int) rechner.funktionswert(x1);
x2=x1;
x2++;
y2=(int) rechner.funktionswert(x2);
x1++;
g.drawLine(x1, y1, x2, y2);
}while(x1<this.getSize().width);
}
}
public void zeichneFunktion(String funktionInput) {
rechner.funktionUebergeben(funktionInput);
zeichnen = true;
repaint();
}
}