Button soll neuen Frame öffnen

Rave

Bekanntes Mitglied
Hallo Leute,
ich hab ein kleinen Problem. Ich möchte das ein Button aus Frame 1 durch einen klick ein neues Frame öffnet.

Geschrieben ist es bei mir so:

Java:
private Anleitung anleitung;

...

Java:
   public void button7_ActionPerformed(ActionEvent evt) {
     anleitung.show();
  }

Weiss jemand wo das Problem liegt ich komm irgendwie nicht weiter.

Ich bekomm immer diesen NullPointer :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Funktionsplotter.button7_ActionPerformed(Funktionsplotter.java:319)
at Funktionsplotter$8.actionPerformed(Funktionsplotter.java:197)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
Erste Vermutung: Hast du anleitung auch irgendwo initialisiert? (
Code:
anleitung = new Anleitung()
)? ;-)
Ansonsten poste mal mehr von deinem Code.
 
Erste Vermutung: Hast du anleitung auch irgendwo initialisiert? (
Code:
anleitung = new Anleitung()
)? ;-)
Ansonsten poste mal mehr von deinem Code.

Eigentlich ja, aber da ich total Anfänger bin weiss ich nicht ob es die richtige Stelle ist

Java:
  //Anleitung
  anleitung = new Anleitung();
  private Anleitung anleitung;
  // Ende Attribute

So hab ich es initialisiert!

Und das ist der Frame der geöffnet werden soll:
Java:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 03.03.2011
  * @author
  */

public class Anleitung extends Frame {
  // Anfang Attribute

  private TextArea ta = new TextArea("", 1, 1, TextArea.SCROLLBARS_BOTH);
  // Ende Attribute

  public Anleitung(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    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);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    ta.setText("Anleitung zum Funktionsplotter 1.1\n\nAlle Textfelder müssen ausgefüllt sein!\nZoomfaktor kann variabel eingegeben werden!");
    ta.setBounds(0, 0, 300, 300);
    ta.setEditable(false);
    cp.add(ta);

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  // Ende Methoden

  public static void main(String[] args) {
    new Anleitung("Anleitung");
  }
}
 
Wieso ist da eine main-Methode drin, welche sozusagen das Frame öffnet?!

Java:
  //Anleitung
  anleitung = new Anleitung();
  private Anleitung anleitung;
  // Ende Attribute

Du initialisierst die Variable bevor du sie deklarierst und anscheinend außerhalb einer Methode im Klassenrumpf ???:L.
 
Zuletzt bearbeitet:
da deine Anleitung ja nichts weiter ist, als ein "info-Fenster" (oder ? ) ...warum machst du in deiner Action-Performed-Methode nicht einfach:

Java:
 public void button7_ActionPerformed(ActionEvent evt) {
     new Anleitung("Anleitung");
  }

und btw....den Codeteil kann man auch abkürzen 😉

Java:
 //Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  //  int x = (d.width - getSize().width) / 2;
  //  int y = (d.height - getSize().height) / 2;
   setLocationRelativeTo(null);
 
Zuletzt bearbeitet:
So ich poste jetzt einfach mal fast den kompletten Quellcode 😉

Java:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;



public class Funktionsplotter extends Frame {
  // Anfang Attribute
  boolean draw = false;
  float f,j,h,p1,p2,p3,p4,p5;
  float zoom = 1;
  //Textfelder
  private TextField textField1 = new TextField();
  private TextField textField2 = new TextField();
  private TextField textField3 = new TextField();
  private TextField textField4 = new TextField();
  private TextField textField5 = new TextField();
  private TextField textField6 = new TextField();
  //Label
  private Label label1 = new Label();
  private Label label2 = new Label();
  private Label label3 = new Label();
  private Label label4 = new Label();
  private Label label5 = new Label();
  private Label label6 = new Label();
  private Label label7 = new Label();
  private Label label8 = new Label();
  private Label label9 = new Label();
  private Label label10 = new Label();
  //Buttons
  private Button button1 = new Button();
  private Button button2 = new Button();
  private Button button3 = new Button();
  private Button button4 = new Button();
  private Button button5 = new Button();
  private Button button6 = new Button();
  private Button button7 = new Button();
  //Text Area
  private TextArea tabelle = new TextArea("", 1, 1, TextArea.SCROLLBARS_BOTH);
  //Anleitung
  anleitung = new Anleitung();
  private Anleitung anleitung;
  // Ende Attribute

  public Funktionsplotter(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 1000;
    int frameHeight = 800;
    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);
    this.setLayout(null);
    this.setBackground(Color.lightGray);
    //Panel anlegen
    Panel cp = new Panel(null);
    add(cp);
    cp.setBounds(700,0,300,700);
    cp.setBackground(Color.gray);
    Panel cp2 = new Panel(null);
    add(cp2);
    cp2.setBounds(0,700,1000,100);
    cp2.setBackground(Color.gray);
    // Anfang Komponenten
    //Textfield
    textField1.setBounds(64, 87, 30, 24);
    textField1.setText("0");
    cp.add(textField1);
    textField2.setBounds(51, 59, 28, 24);
    textField2.setText("0");
    cp.add(textField2);
    textField3.setBounds(116, 60, 28, 24);
    textField3.setText("0");
    cp.add(textField3);
    textField4.setBounds(138, 88, 30, 24);
    textField4.setText("0");
    cp.add(textField4);
    textField5.setBounds(197, 89, 25, 24);
    textField5.setText("0");
    cp.add(textField5);
    textField6.setBounds(170, 625, 33, 24);
    textField6.setText("1");
    cp.add(textField6);
    //Label
    label1.setBounds(27, 60, 24, 24);
    label1.setText("f(x)=");
    label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label1);
    label2.setBounds(83, 61, 32, 16);
    label2.setText("x^4+");
    label2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label2);
    label3.setBounds(147, 63, 20, 16);
    label3.setText("x^3");
    label3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label3);
    label4.setBounds(100, 92, 33, 16);
    label4.setText("x^2 +");
    label4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label4);
    label5.setBounds(172, 92, 24, 16);
    label5.setText("x +");
    label5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label5);
    label6.setBounds(46, 91, 14, 16);
    label6.setText("+");
    label6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label6);
    label7.setBounds(29, 190, 214, 16);
    label7.setText("HINWEISE!");
    label7.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label7);
    label9.setBounds(29, 210, 214, 16);
    label9.setText("Jedes Feld benötigt eine Eingabe!");
    label9.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label9);

    //Überschrift
    label10.setBounds(29, 25, 214, 16);
    label10.setText("Funktionsplotter 1.1");
    label10.setFont(new Font("MS Sans Serif", Font.PLAIN, 18));
    cp.add(label10);

    //Text
    label8.setBounds(152, 600, 68, 16);
    label8.setText("Zoomfaktor");
    label8.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label8);

    //Buttons
    button1.setBounds(24, 135, 97, 33);
    button1.setLabel("Zeichne");
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1_ActionPerformed(evt);
      }
    });
    cp.add(button1);
    button2.setBounds(24, 590, 121, 41);
    button2.setLabel("Reinzoomen");
    button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button2_ActionPerformed(evt);
      }
    });
    cp.add(button2);
    button3.setBounds(24, 640, 121, 41);
    button3.setLabel("Rauszoomen");
    button3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button3_ActionPerformed(evt);
      }
    });
    cp.add(button3);
    button4.setBounds(224, 595, 57, 89);
    button4.setLabel("Zoomen");
    button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button4_ActionPerformed(evt);
      }
    });
    cp.add(button4);
    button5.setBounds(136, 136, 89, 33);
    button5.setLabel("Ableitung");
    button5.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button5_ActionPerformed(evt);
      }
    });
    cp.add(button5);
    
    button6.setBounds(25, 50, 89, 33);
    button6.setLabel("Schliessen");
    button6.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button6_ActionPerformed(evt);
      }
    });
    cp2.add(button6);
    
    button7.setBounds(100, 50, 89, 33);
    button7.setLabel("Anleitung");
    button7.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button7_ActionPerformed(evt);
      }
    });
    cp2.add(button7);

    //Wertetabelle
    tabelle.setText("");
    tabelle.setEditable(false);
    tabelle.setBounds(25, 250, 240, 300);
    cp.add(tabelle);

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }
  
  public float pot (float x,float ex)  //Potenzieren
  {
    float y =1;
    for (float i = 0; i< ex; i++)
    {
      y = y*x;
    }
    return y;
  }
  
  public float func (float x)
  {
    float y = p1
    *pot(x,4)+p2
    *pot(x,3)+p3
    *pot(x,2)+p4
    *x+p5;
    return y;
  }

  //Ableitung bilden
  public void Abl ()
  {
    float koef4, koef3, koef2, koef1;
    koef4=Float.valueOf(textField2.getText());
    koef3=Float.valueOf(textField3.getText());
    koef2=Float.valueOf(textField1.getText());
    koef1=Float.valueOf(textField4.getText());
    textField2.setText(""+0.0);
    textField3.setText(""+(koef4*4));
    textField1.setText(""+(koef3*3));
    textField4.setText(""+(koef2*2));
    textField5.setText(""+koef1);
  }
  
  public void paint (Graphics g)
  {
    //Nullpunkt bei: 350|350
    g.drawLine(0,350,700,350);
    g.drawLine(350,0,350,700);
    g.setColor(Color.red);
    tabelle.setText("Wertetabelle"+"\n");
    if(draw == true)
    {
      p1 = Float.valueOf(textField2.getText());  //Koeffizienten werden aus den Textfeldern gelesen
      p2 = Float.valueOf(textField3.getText());
      p3 = Float.valueOf(textField1.getText());
      p4 = Float.valueOf(textField4.getText());
      p5 = Float.valueOf(textField5.getText());
      for (float i = -350; i<350; i=i+zoom) //x-Werte von -350 bis 350 werden durchgegangen
      {
        f = func(i); //Funktionswert zum momentanen X-Wert wird gebildet
        j = i+zoom;
        h = func(j);
        int x1,x2,y1,y2;
        x1=(int)(i/zoom);
        x2=(int)(j/zoom);
        y1=(int)(f/zoom);
        y2=(int)(h/zoom);
        g.drawLine(350+x1,350 - y1,350+x2,350 - y2);
        // Wertetabelle
        tabelle.setText(tabelle.getText()+" X= "+i+"                   "+" Y= "+f+"\n");
      }
    }
  }

  // Anfang Methoden
  public void button1_ActionPerformed(ActionEvent evt) {
    // ZEICHNEN
    draw = true; //Funktionsplotter soll gezeichnet werden
    repaint();
  }

  public void button2_ActionPerformed(ActionEvent evt) {
    // REINZOOMEN
    zoom=zoom/2;
    textField6.setText(""+(1/zoom));
    repaint();
  }

  public void button3_ActionPerformed(ActionEvent evt) {
    // RAUSZOOMEN
    zoom=zoom*2;
    textField6.setText(""+(1/zoom));
    repaint();
  }

  public void button4_ActionPerformed(ActionEvent evt) {
    // ZOOM aus Textfenster
    zoom=1/Float.valueOf(textField6.getText());
    repaint();
  }

  public void button5_ActionPerformed(ActionEvent evt) {
    // ABLEITUNG ZEICHNEN
    Abl(); //Ableitung wird gebildet
    draw = true; //Funktionsplotter soll gezeichnet werden
    repaint();
  }

  public void button6_ActionPerformed(ActionEvent evt) {
    dispose();
  }
  
   public void button7_ActionPerformed(ActionEvent evt) {
     anleitung.show();
  }
  // Ende Methoden

  public static void main(String[] args) {
    new Funktionsplotter("Funktionsplotter 1.1");
  }
}

Button7 soll dann den Frame der Klasse öffnen die ich oben gepostet habe 😉
 
Und wenn du das so machst, solltest du das Singleton-Pattern verwenden, damit man nicht 100 Fenster gleichzeitig mit dem Button öffnen kann.

Singleton Pattern in Java

Gibt auch andere Möglichkeiten z.b. alles andere solang deaktivieren oder andere Dinge, damit man den Button nicht mehr drücken kann.
 
Java:
public void button7_ActionPerformed(ActionEvent evt) {
     new Anleitung("Anleitung");
  }

so öffnet er den Frame, habe ich oben schon geschrieben...na da hast du dir aber was schönes zusammengeklaut^^
 
OHJE!

1. Verwende anstatt awt-Komponenten die entsprechenden Swing-Komponenten! JFrame, JLabel etc. Man sollte Swing und awt nicht vermischen.

2. die paint() - Methode sollte nicht überschrieben werden. Dafür ist paintComponent() da.

3.
Java:
  anleitung = new Anleitung();
  private Anleitung anleitung;

Da sollte deine IDE doch meckern ?! Wieso lässt sich das überhaup ausführen?!

Java:
private Anleitung anleitung = new Anleitung();

4. Ein Rat: Gib deinen Komponenten/Variablen vielsprechende Namen. Das erleichtert das Leben!

5. die .show() Methode ist Deprecated : D.h. die Methode ist veraltet und sollte nicht mehr verwendet werden! Implementiere dir eine Methode in deiner Anleitungs-Klasse z.B. open() welche setVisible(true), setSelected(true) etc. macht. Bin aber der Meinung ein einfacher Aufruf von new Anleitung() in Verbindung mit dem Singleton-Pattern oder Ähnlichem ist besser.

gruss
 
OHJE!

1. Verwende anstatt awt-Komponenten die entsprechenden Swing-Komponenten! JFrame, JLabel etc. Man sollte Swing und awt nicht vermischen.

2. die paint() - Methode sollte nicht überschrieben werden. Dafür ist paintComponent() da.

3.
Java:
  anleitung = new Anleitung();
  private Anleitung anleitung;

Da sollte deine IDE doch meckern ?! Wieso lässt sich das überhaup ausführen?!

Java:
private Anleitung anleitung = new Anleitung();

4. Ein Rat: Gib deinen Komponenten/Variablen vielsprechende Namen. Das erleichtert das Leben!

5. die .show() Methode ist Deprecated : D.h. die Methode ist veraltet und sollte nicht mehr verwendet werden! Implementiere dir eine Methode in deiner Anleitungs-Klasse z.B. open() welche setVisible(true), setSelected(true) etc. macht. Bin aber der Meinung ein einfacher Aufruf von new Anleitung() in Verbindung mit dem Singleton-Pattern oder Ähnlichem ist besser.

gruss

1. swing hab ich nicht benutzt...ist auch aus den Imports nun weg 😉

2. Überfordert mich grade leicht ? Meinst du das ich nicht Repaint() benutzen soll?

3.Nun:
Java:
import java.awt.*;
import java.awt.event.*;


public class Funktionsplotter extends Frame {
  // Anfang Attribute
  boolean draw = false;
  float f,j,h,p1,p2,p3,p4,p5;
  float zoom = 1;
  //Textfelder
  private TextField textField1 = new TextField();
  private TextField textField2 = new TextField();
  private TextField textField3 = new TextField();
  private TextField textField4 = new TextField();
  private TextField textField5 = new TextField();
  private TextField textField6 = new TextField();
  //Label
  private Label label1 = new Label();
  private Label label2 = new Label();
  private Label label3 = new Label();
  private Label label4 = new Label();
  private Label label5 = new Label();
  private Label label6 = new Label();
  private Label label7 = new Label();
  private Label label8 = new Label();
  private Label label9 = new Label();
  private Label label10 = new Label();
  //Buttons
  private Button button1 = new Button();
  private Button button2 = new Button();
  private Button button3 = new Button();
  private Button button4 = new Button();
  private Button button5 = new Button();
  private Button button6 = new Button();
  private Button button7 = new Button();
  //Text Area
  private TextArea tabelle = new TextArea("", 1, 1, TextArea.SCROLLBARS_BOTH);
  //Anleitung
  private Anleitung anleitung = new Anleitung();
  // Ende Attribute

  public Funktionsplotter(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 1000;
    int frameHeight = 800;
    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);
    this.setLayout(null);
    this.setBackground(Color.lightGray);
    //Panel anlegen
    Panel cp = new Panel(null);
    add(cp);
    cp.setBounds(700,0,300,700);
    cp.setBackground(Color.gray);
    Panel cp2 = new Panel(null);
    add(cp2);
    cp2.setBounds(0,700,1000,100);
    cp2.setBackground(Color.gray);
    // Anfang Komponenten
    //Textfield
    textField1.setBounds(64, 87, 30, 24);
    textField1.setText("0");
    cp.add(textField1);
    textField2.setBounds(51, 59, 28, 24);
    textField2.setText("0");
    cp.add(textField2);
    textField3.setBounds(116, 60, 28, 24);
    textField3.setText("0");
    cp.add(textField3);
    textField4.setBounds(138, 88, 30, 24);
    textField4.setText("0");
    cp.add(textField4);
    textField5.setBounds(197, 89, 25, 24);
    textField5.setText("0");
    cp.add(textField5);
    textField6.setBounds(170, 625, 33, 24);
    textField6.setText("1");
    cp.add(textField6);
    //Label
    label1.setBounds(27, 60, 24, 24);
    label1.setText("f(x)=");
    label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label1);
    label2.setBounds(83, 61, 32, 16);
    label2.setText("x^4+");
    label2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label2);
    label3.setBounds(147, 63, 20, 16);
    label3.setText("x^3");
    label3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label3);
    label4.setBounds(100, 92, 33, 16);
    label4.setText("x^2 +");
    label4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label4);
    label5.setBounds(172, 92, 24, 16);
    label5.setText("x +");
    label5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label5);
    label6.setBounds(46, 91, 14, 16);
    label6.setText("+");
    label6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label6);
    label7.setBounds(29, 190, 214, 16);
    label7.setText("HINWEISE!");
    label7.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label7);
    label9.setBounds(29, 210, 214, 16);
    label9.setText("Jedes Feld benötigt eine Eingabe!");
    label9.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label9);

    //Überschrift
    label10.setBounds(29, 25, 214, 16);
    label10.setText("Funktionsplotter 1.1");
    label10.setFont(new Font("MS Sans Serif", Font.PLAIN, 18));
    cp.add(label10);

    //Text
    label8.setBounds(152, 600, 68, 16);
    label8.setText("Zoomfaktor");
    label8.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label8);

    //Buttons
    button1.setBounds(24, 135, 97, 33);
    button1.setLabel("Zeichne");
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1_ActionPerformed(evt);
      }
    });
    cp.add(button1);
    button2.setBounds(24, 590, 121, 41);
    button2.setLabel("Reinzoomen");
    button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button2_ActionPerformed(evt);
      }
    });
    cp.add(button2);
    button3.setBounds(24, 640, 121, 41);
    button3.setLabel("Rauszoomen");
    button3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button3_ActionPerformed(evt);
      }
    });
    cp.add(button3);
    button4.setBounds(224, 595, 57, 89);
    button4.setLabel("Zoomen");
    button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button4_ActionPerformed(evt);
      }
    });
    cp.add(button4);
    button5.setBounds(136, 136, 89, 33);
    button5.setLabel("Ableitung");
    button5.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button5_ActionPerformed(evt);
      }
    });
    cp.add(button5);
    
    button6.setBounds(25, 50, 89, 33);
    button6.setLabel("Schliessen");
    button6.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button6_ActionPerformed(evt);
      }
    });
    cp2.add(button6);
    
    button7.setBounds(100, 50, 89, 33);
    button7.setLabel("Anleitung");
    button7.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button7_ActionPerformed(evt);
      }
    });
    cp2.add(button7);

    //Wertetabelle
    tabelle.setText("");
    tabelle.setEditable(false);
    tabelle.setBounds(25, 250, 240, 300);
    cp.add(tabelle);

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }
  
  public float pot (float x,float ex)  //Potenzieren
  {
    float y =1;
    for (float i = 0; i< ex; i++)
    {
      y = y*x;
    }
    return y;
  }
  
  public float func (float x)
  {
    float y = p1
    *pot(x,4)+p2
    *pot(x,3)+p3
    *pot(x,2)+p4
    *x+p5;
    return y;
  }

  //Ableitung bilden
  public void Abl ()
  {
    float koef4, koef3, koef2, koef1;
    koef4=Float.valueOf(textField2.getText());
    koef3=Float.valueOf(textField3.getText());
    koef2=Float.valueOf(textField1.getText());
    koef1=Float.valueOf(textField4.getText());
    textField2.setText(""+0.0);
    textField3.setText(""+(koef4*4));
    textField1.setText(""+(koef3*3));
    textField4.setText(""+(koef2*2));
    textField5.setText(""+koef1);
  }
  
  public void paint (Graphics g)
  {
    //Nullpunkt bei: 350|350
    g.drawLine(0,350,700,350);
    g.drawLine(350,0,350,700);
    g.setColor(Color.red);
    tabelle.setText("Wertetabelle"+"\n");
    if(draw == true)
    {
      p1 = Float.valueOf(textField2.getText());  //Koeffizienten werden aus den Textfeldern gelesen
      p2 = Float.valueOf(textField3.getText());
      p3 = Float.valueOf(textField1.getText());
      p4 = Float.valueOf(textField4.getText());
      p5 = Float.valueOf(textField5.getText());
      for (float i = -350; i<350; i=i+zoom) //x-Werte von -350 bis 350 werden durchgegangen
      {
        f = func(i); //Funktionswert zum momentanen X-Wert wird gebildet
        j = i+zoom;
        h = func(j);
        int x1,x2,y1,y2;
        x1=(int)(i/zoom);
        x2=(int)(j/zoom);
        y1=(int)(f/zoom);
        y2=(int)(h/zoom);
        g.drawLine(350+x1,350 - y1,350+x2,350 - y2);
        // Wertetabelle
        tabelle.setText(tabelle.getText()+" X= "+i+"                   "+" Y= "+f+"\n");
      }
    }
  }

  // Anfang Methoden
  public void button1_ActionPerformed(ActionEvent evt) {
    // ZEICHNEN
    draw = true; //Funktionsplotter soll gezeichnet werden
    repaint();
  }

  public void button2_ActionPerformed(ActionEvent evt) {
    // REINZOOMEN
    zoom=zoom/2;
    textField6.setText(""+(1/zoom));
    repaint();
  }

  public void button3_ActionPerformed(ActionEvent evt) {
    // RAUSZOOMEN
    zoom=zoom*2;
    textField6.setText(""+(1/zoom));
    repaint();
  }

  public void button4_ActionPerformed(ActionEvent evt) {
    // ZOOM aus Textfenster
    zoom=1/Float.valueOf(textField6.getText());
    repaint();
  }

  public void button5_ActionPerformed(ActionEvent evt) {
    // ABLEITUNG ZEICHNEN
    Abl(); //Ableitung wird gebildet
    draw = true; //Funktionsplotter soll gezeichnet werden
    repaint();
  }

  public void button6_ActionPerformed(ActionEvent evt) {
    dispose();
  }
  
   public void button7_ActionPerformed(ActionEvent evt) {
     anleitung.setVisible(true);
  }
  // Ende Methoden

  public static void main(String[] args) {
    new Funktionsplotter("Funktionsplotter 1.1");
  }
}

4. Wird gemacht 😉

5. habs nun erstmal mit setVisible() gemacht 😉


Nun allerdings dieser Fehler:

Compiliere C:\Users\Kiri\Downloads\Funktionsplotter\Funktionsplotter.java mit Java-Compiler
Funktionsplotter.java:47:33: cannot find symbol
symbol : constructor Anleitung()
location: class Anleitung
private Anleitung anleitung = new Anleitung();
^
1 error
 
schnell geantwortet... hab meinen beitrag editiert 🙂

Und wenn du öftert Java programmierst: verwende zur Entwicklung eine IDE wie eclipse oder netbeans. Das hat 1001 Vorteile.
 
Zuletzt bearbeitet:
Edit: Alles klar 😀 war zu einfach das ich nich gleich drauf gekommen bin 😀 ^^ Habs nun =) danke für die schnelle Hilfe !!!
 
Zuletzt bearbeitet:
Es gibt den Konstruktor public Anleitung() nicht, sonder nur public Anleitung(String title). Weißt du wann der Konstruktor gebraucht wird?
 
Es gibt den Konstruktor public Anleitung() nicht, sonder nur public Anleitung(String title). Weißt du wann der Konstruktor gebraucht wird?

Immer bevor eine Klasse ausgeführt wird wenn ich das richtig in Erinnerung habe =)

Problerm hatte ich dann übrgends gelöst 😉 siehe mein Post vor deinen =)

Danke =)
 
Noch so ne Kleinigkeit am Rande 😀

Wie kann ich das über mehrer Zeilen schreiben?

Java:
ta.setText("Anleitung zum Funktionsplotter 1.1\n\nAlle Textfelder müssen ausgefüllt sein!\nZoomfaktor kann variabel eingegeben werden!");

Ist nur Kosmetik im Code aber es nervt mich 😀
 
Java:
ta.setText("Anleitung zum Funktionsplotter 1.1"+
"\n\nAlle Textfelder müssen ausgefüllt sein!"+
"\nZoomfaktor kann variabel eingegeben werden!");
 
welcome anytime.

sicherlich nicht für meinen beitrag...aber grundsätzlich gibt es einen button:
post_thanks.gif


und benutz eine ide...mit der kombi strg+shift+F formatiert diese dir den quellcode sauber und anständig 😉
 

Neue Themen


Zurück
Oben