Methodenaufruf aus anderer Klasse

Lennardt

Mitglied
Hallo Forum,

Java:
import java.util.Random;
import java.awt.*;
import javax.swing.JPanel;

public class Wuerfel extends javax.swing.JApplet {

    /** Initializes the applet Wuerfel */
  @Override
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  private void initComponents() {

    tfRunden = new javax.swing.JTextField();
    lbRunden = new javax.swing.JLabel();
    lbAuge1 = new javax.swing.JLabel();
    lbAuge2 = new javax.swing.JLabel();
    lbAuge3 = new javax.swing.JLabel();
    lbAuge4 = new javax.swing.JLabel();
    lbAuge5 = new javax.swing.JLabel();
    lbAuge6 = new javax.swing.JLabel();
    lbAnzahl1 = new javax.swing.JLabel();
    lbAnzahl2 = new javax.swing.JLabel();
    lbAnzahl3 = new javax.swing.JLabel();
    lbAnzahl4 = new javax.swing.JLabel();
    lbAnzahl5 = new javax.swing.JLabel();
    lbAnzahl6 = new javax.swing.JLabel();
    lbProzent5 = new javax.swing.JLabel();
    lbProzent4 = new javax.swing.JLabel();
    lbProzent2 = new javax.swing.JLabel();
    lbProzent1 = new javax.swing.JLabel();
    lbProzent6 = new javax.swing.JLabel();
    lbProzent3 = new javax.swing.JLabel();
    pnZeichenflaeche = new Zeichenflaeche();

    getContentPane().setLayout(null);

    tfRunden.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        tfRundenActionPerformed(evt);
      }
    });
    getContentPane().add(tfRunden);
    tfRunden.setBounds(230, 30, 182, 20);

    lbRunden.setText("Wie oft soll gewürfelt werden?");
    getContentPane().add(lbRunden);
    lbRunden.setBounds(30, 30, 190, 14);

    lbAuge1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge1.setText("1");
    lbAuge1.setEnabled(false);
    lbAuge1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge1);
    lbAuge1.setBounds(70, 90, 43, 14);

    lbAuge2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge2.setText("2");
    lbAuge2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge2);
    lbAuge2.setBounds(120, 90, 43, 14);

    lbAuge3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge3.setText("3");
    lbAuge3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge3);
    lbAuge3.setBounds(170, 90, 43, 14);

    lbAuge4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge4.setText("4");
    lbAuge4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge4);
    lbAuge4.setBounds(220, 90, 43, 14);

    lbAuge5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge5.setText("5");
    lbAuge5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge5);
    lbAuge5.setBounds(270, 90, 43, 14);

    lbAuge6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge6.setText("6");
    lbAuge6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge6);
    lbAuge6.setBounds(320, 90, 43, 14);

    lbAnzahl1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl1.setText("0");
    lbAnzahl1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl1);
    lbAnzahl1.setBounds(70, 120, 43, 14);

    lbAnzahl2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl2.setText("0");
    lbAnzahl2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl2);
    lbAnzahl2.setBounds(120, 120, 43, 14);

    lbAnzahl3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl3.setText("0");
    lbAnzahl3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl3);
    lbAnzahl3.setBounds(170, 120, 43, 14);

    lbAnzahl4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl4.setText("0");
    lbAnzahl4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl4);
    lbAnzahl4.setBounds(220, 120, 43, 14);

    lbAnzahl5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl5.setText("0");
    lbAnzahl5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl5);
    lbAnzahl5.setBounds(270, 120, 43, 14);

    lbAnzahl6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl6.setText("0");
    lbAnzahl6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl6);
    lbAnzahl6.setBounds(320, 120, 43, 14);

    lbProzent5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent5.setText("0%");
    lbProzent5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent5);
    lbProzent5.setBounds(270, 150, 43, 14);

    lbProzent4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent4.setText("0%");
    lbProzent4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent4);
    lbProzent4.setBounds(220, 150, 43, 14);

    lbProzent2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent2.setText("0%");
    lbProzent2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent2);
    lbProzent2.setBounds(120, 150, 43, 14);

    lbProzent1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent1.setText("0%");
    lbProzent1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent1);
    lbProzent1.setBounds(70, 150, 43, 14);

    lbProzent6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent6.setText("0%");
    lbProzent6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent6);
    lbProzent6.setBounds(320, 150, 43, 14);

    lbProzent3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent3.setText("0%");
    lbProzent3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent3);
    lbProzent3.setBounds(170, 150, 43, 14);
    getContentPane().add(pnZeichenflaeche);
    pnZeichenflaeche.setBounds(20, 180, 390, 110);
  }// </editor-fold>                        

    private void tfRundenActionPerformed(java.awt.event.ActionEvent evt) {                                         
      int runden = Integer.valueOf(tfRunden.getText());
      int[] ergebnis = new int[runden];
      Random zufall = new Random();

      // Array ergebnis[] mit Zufallszahlen füllen
      for(int i = 0; i < runden; i++) {
        ergebnis[i] = zufall.nextInt(6) + 1;
      }

      // Labels leeren, falls noch Werte von einem Durchlauf drin sind
      lbAnzahl1.setText("0");
      lbAnzahl2.setText("0");
      lbAnzahl3.setText("0");
      lbAnzahl4.setText("0");
      lbAnzahl5.setText("0");
      lbAnzahl6.setText("0");

      // Je Element des Arrays überprüfen welche Augenzahl gewürfelt wurde
      // und zu dem Wert des entsprechenden Labels addieren
      for(int i = 0; i < runden; i++) {
        switch(ergebnis[i]) {
          case 1:
            lbAnzahl1.setText(String.valueOf(Integer.valueOf(lbAnzahl1.getText()) + 1));
            break;
          case 2:
            lbAnzahl2.setText(String.valueOf(Integer.valueOf(lbAnzahl2.getText()) + 1));
            break;
          case 3:
            lbAnzahl3.setText(String.valueOf(Integer.valueOf(lbAnzahl3.getText()) + 1));
            break;
          case 4:
            lbAnzahl4.setText(String.valueOf(Integer.valueOf(lbAnzahl4.getText()) + 1));
            break;
          case 5:
            lbAnzahl5.setText(String.valueOf(Integer.valueOf(lbAnzahl5.getText()) + 1));
            break;
          case 6:
            lbAnzahl6.setText(String.valueOf(Integer.valueOf(lbAnzahl6.getText()) + 1));
          break;
        }
      }

      // Prozentzahlen ausrechnen
      int[] werteAugen = new int[6];
      werteAugen[0] = Integer.valueOf(lbAnzahl1.getText());
      werteAugen[1] = Integer.valueOf(lbAnzahl2.getText());
      werteAugen[2] = Integer.valueOf(lbAnzahl3.getText());
      werteAugen[3] = Integer.valueOf(lbAnzahl4.getText());
      werteAugen[4] = Integer.valueOf(lbAnzahl5.getText());
      werteAugen[5] = Integer.valueOf(lbAnzahl6.getText());

      double[] werteProzent = new double[6];
      for(int i = 0; i < 6; i++) {
        werteProzent[i] = (double) werteAugen[i] / runden * 100;
      }

      // Prozentwerte ins Label schreiben
      lbProzent1.setText(String.valueOf(Math.round(werteProzent[0] * 100) / 100.0 + "%"));
      lbProzent2.setText(String.valueOf(Math.round(werteProzent[1] * 100) / 100.0 + "%"));
      lbProzent3.setText(String.valueOf(Math.round(werteProzent[2] * 100) / 100.0 + "%"));
      lbProzent4.setText(String.valueOf(Math.round(werteProzent[3] * 100) / 100.0 + "%"));
      lbProzent5.setText(String.valueOf(Math.round(werteProzent[4] * 100) / 100.0 + "%"));
      lbProzent6.setText(String.valueOf(Math.round(werteProzent[5] * 100) / 100.0 + "%"));
    }                                        

  // Variables declaration - do not modify                     
  private javax.swing.JLabel lbAnzahl1;
  private javax.swing.JLabel lbAnzahl2;
  private javax.swing.JLabel lbAnzahl3;
  private javax.swing.JLabel lbAnzahl4;
  private javax.swing.JLabel lbAnzahl5;
  private javax.swing.JLabel lbAnzahl6;
  private javax.swing.JLabel lbAuge1;
  private javax.swing.JLabel lbAuge2;
  private javax.swing.JLabel lbAuge3;
  private javax.swing.JLabel lbAuge4;
  private javax.swing.JLabel lbAuge5;
  private javax.swing.JLabel lbAuge6;
  private javax.swing.JLabel lbProzent1;
  private javax.swing.JLabel lbProzent2;
  private javax.swing.JLabel lbProzent3;
  private javax.swing.JLabel lbProzent4;
  private javax.swing.JLabel lbProzent5;
  private javax.swing.JLabel lbProzent6;
  private javax.swing.JLabel lbRunden;
  public javax.swing.JPanel pnZeichenflaeche;
  private javax.swing.JTextField tfRunden;
  // End of variables declaration                   

}

class Zeichenflaeche extends JPanel {
  boolean paint = true;
  
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if(paint) {
      // Rahmen um den Zeichenbereich
      g.drawLine(0, 0, 390, 0);
      g.drawLine(0, 109, 390, 109);
      g.drawLine(0, 0, 0, 109);
      g.drawLine(389, 0, 389, 109);
    }
  }

  public void setPaint(boolean p) {
    this.paint = p;
  }

  public void setChart(double[] d) {


    this.setPaint(true);
    this.repaint();
  }
  
}

Was muss ich ändern, damit ich pnZeichenflaeche.setChart aus der tfRundenActionPerformed Methode aufrufen kann?

Gruß
 

Bolle52

Aktives Mitglied
Java:
  public javax.swing.JPanel pnZeichenflaeche;

das pnZeichenflaeche ist eine Instanz der Klasse JPanel.

Versuch es mal damit:

Java:
 public Zeichenflaeche  pnZeichenflaeche;
 

Lennardt

Mitglied
Vielen Dank, das Problem wäre gelöst!

Nun habe ich ein Neues. Ich habe versucht Balken für mein Diagramm zu zeichnen, jedoch bleibt jetzt das Applet weiß.

Java:
import java.util.Random;
import java.awt.*;
import javax.swing.JPanel;

public class Wuerfel extends javax.swing.JApplet {

    /** Initializes the applet Wuerfel */
  @Override
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  private void initComponents() {

    tfRunden = new javax.swing.JTextField();
    lbRunden = new javax.swing.JLabel();
    lbAuge1 = new javax.swing.JLabel();
    lbAuge2 = new javax.swing.JLabel();
    lbAuge3 = new javax.swing.JLabel();
    lbAuge4 = new javax.swing.JLabel();
    lbAuge5 = new javax.swing.JLabel();
    lbAuge6 = new javax.swing.JLabel();
    lbAnzahl1 = new javax.swing.JLabel();
    lbAnzahl2 = new javax.swing.JLabel();
    lbAnzahl3 = new javax.swing.JLabel();
    lbAnzahl4 = new javax.swing.JLabel();
    lbAnzahl5 = new javax.swing.JLabel();
    lbAnzahl6 = new javax.swing.JLabel();
    lbProzent5 = new javax.swing.JLabel();
    lbProzent4 = new javax.swing.JLabel();
    lbProzent2 = new javax.swing.JLabel();
    lbProzent1 = new javax.swing.JLabel();
    lbProzent6 = new javax.swing.JLabel();
    lbProzent3 = new javax.swing.JLabel();
    pnZeichenflaeche = new Zeichenflaeche();

    getContentPane().setLayout(null);

    tfRunden.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        tfRundenActionPerformed(evt);
      }
    });
    getContentPane().add(tfRunden);
    tfRunden.setBounds(230, 30, 182, 20);

    lbRunden.setText("Wie oft soll gewürfelt werden?");
    getContentPane().add(lbRunden);
    lbRunden.setBounds(30, 30, 190, 14);

    lbAuge1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge1.setText("1");
    lbAuge1.setEnabled(false);
    lbAuge1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge1);
    lbAuge1.setBounds(70, 90, 43, 14);

    lbAuge2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge2.setText("2");
    lbAuge2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge2);
    lbAuge2.setBounds(120, 90, 43, 14);

    lbAuge3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge3.setText("3");
    lbAuge3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge3);
    lbAuge3.setBounds(170, 90, 43, 14);

    lbAuge4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge4.setText("4");
    lbAuge4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge4);
    lbAuge4.setBounds(220, 90, 43, 14);

    lbAuge5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge5.setText("5");
    lbAuge5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge5);
    lbAuge5.setBounds(270, 90, 43, 14);

    lbAuge6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAuge6.setText("6");
    lbAuge6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAuge6);
    lbAuge6.setBounds(320, 90, 43, 14);

    lbAnzahl1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl1.setText("0");
    lbAnzahl1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl1);
    lbAnzahl1.setBounds(70, 120, 43, 14);

    lbAnzahl2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl2.setText("0");
    lbAnzahl2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl2);
    lbAnzahl2.setBounds(120, 120, 43, 14);

    lbAnzahl3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl3.setText("0");
    lbAnzahl3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl3);
    lbAnzahl3.setBounds(170, 120, 43, 14);

    lbAnzahl4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl4.setText("0");
    lbAnzahl4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl4);
    lbAnzahl4.setBounds(220, 120, 43, 14);

    lbAnzahl5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl5.setText("0");
    lbAnzahl5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl5);
    lbAnzahl5.setBounds(270, 120, 43, 14);

    lbAnzahl6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbAnzahl6.setText("0");
    lbAnzahl6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbAnzahl6);
    lbAnzahl6.setBounds(320, 120, 43, 14);

    lbProzent5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent5.setText("0%");
    lbProzent5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent5);
    lbProzent5.setBounds(270, 150, 43, 14);

    lbProzent4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent4.setText("0%");
    lbProzent4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent4);
    lbProzent4.setBounds(220, 150, 43, 14);

    lbProzent2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent2.setText("0%");
    lbProzent2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent2);
    lbProzent2.setBounds(120, 150, 43, 14);

    lbProzent1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent1.setText("0%");
    lbProzent1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent1);
    lbProzent1.setBounds(70, 150, 43, 14);

    lbProzent6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent6.setText("0%");
    lbProzent6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent6);
    lbProzent6.setBounds(320, 150, 43, 14);

    lbProzent3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    lbProzent3.setText("0%");
    lbProzent3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    getContentPane().add(lbProzent3);
    lbProzent3.setBounds(170, 150, 43, 14);
    getContentPane().add(pnZeichenflaeche);
    pnZeichenflaeche.setBounds(20, 180, 390, 110);
  }// </editor-fold>                        

    private void tfRundenActionPerformed(java.awt.event.ActionEvent evt) {                                         
      int runden = Integer.valueOf(tfRunden.getText());
      int[] ergebnis = new int[runden];
      Random zufall = new Random();

      // Array ergebnis[] mit Zufallszahlen füllen
      for(int i = 0; i < runden; i++) {
        ergebnis[i] = zufall.nextInt(6) + 1;
      }

      // Labels leeren, falls noch Werte von einem Durchlauf drin sind
      lbAnzahl1.setText("0");
      lbAnzahl2.setText("0");
      lbAnzahl3.setText("0");
      lbAnzahl4.setText("0");
      lbAnzahl5.setText("0");
      lbAnzahl6.setText("0");

      // Je Element des Arrays überprüfen welche Augenzahl gewürfelt wurde
      // und zu dem Wert des entsprechenden Labels addieren
      for(int i = 0; i < runden; i++) {
        switch(ergebnis[i]) {
          case 1:
            lbAnzahl1.setText(String.valueOf(Integer.valueOf(lbAnzahl1.getText()) + 1));
            break;
          case 2:
            lbAnzahl2.setText(String.valueOf(Integer.valueOf(lbAnzahl2.getText()) + 1));
            break;
          case 3:
            lbAnzahl3.setText(String.valueOf(Integer.valueOf(lbAnzahl3.getText()) + 1));
            break;
          case 4:
            lbAnzahl4.setText(String.valueOf(Integer.valueOf(lbAnzahl4.getText()) + 1));
            break;
          case 5:
            lbAnzahl5.setText(String.valueOf(Integer.valueOf(lbAnzahl5.getText()) + 1));
            break;
          case 6:
            lbAnzahl6.setText(String.valueOf(Integer.valueOf(lbAnzahl6.getText()) + 1));
          break;
        }
      }

      // Prozentzahlen ausrechnen
      int[] werteAugen = new int[6];
      werteAugen[0] = Integer.valueOf(lbAnzahl1.getText());
      werteAugen[1] = Integer.valueOf(lbAnzahl2.getText());
      werteAugen[2] = Integer.valueOf(lbAnzahl3.getText());
      werteAugen[3] = Integer.valueOf(lbAnzahl4.getText());
      werteAugen[4] = Integer.valueOf(lbAnzahl5.getText());
      werteAugen[5] = Integer.valueOf(lbAnzahl6.getText());

      double[] werteProzent = new double[6];
      for(int i = 0; i < 6; i++) {
        werteProzent[i] = (double) werteAugen[i] / runden * 100;
      }

      // Prozentwerte ins Label schreiben
      lbProzent1.setText(String.valueOf(Math.round(werteProzent[0] * 100) / 100.0 + "%"));
      lbProzent2.setText(String.valueOf(Math.round(werteProzent[1] * 100) / 100.0 + "%"));
      lbProzent3.setText(String.valueOf(Math.round(werteProzent[2] * 100) / 100.0 + "%"));
      lbProzent4.setText(String.valueOf(Math.round(werteProzent[3] * 100) / 100.0 + "%"));
      lbProzent5.setText(String.valueOf(Math.round(werteProzent[4] * 100) / 100.0 + "%"));
      lbProzent6.setText(String.valueOf(Math.round(werteProzent[5] * 100) / 100.0 + "%"));

      z.setChart(werteProzent);
    }                                        

  // Variables declaration - do not modify                     
  private javax.swing.JLabel lbAnzahl1;
  private javax.swing.JLabel lbAnzahl2;
  private javax.swing.JLabel lbAnzahl3;
  private javax.swing.JLabel lbAnzahl4;
  private javax.swing.JLabel lbAnzahl5;
  private javax.swing.JLabel lbAnzahl6;
  private javax.swing.JLabel lbAuge1;
  private javax.swing.JLabel lbAuge2;
  private javax.swing.JLabel lbAuge3;
  private javax.swing.JLabel lbAuge4;
  private javax.swing.JLabel lbAuge5;
  private javax.swing.JLabel lbAuge6;
  private javax.swing.JLabel lbProzent1;
  private javax.swing.JLabel lbProzent2;
  private javax.swing.JLabel lbProzent3;
  private javax.swing.JLabel lbProzent4;
  private javax.swing.JLabel lbProzent5;
  private javax.swing.JLabel lbProzent6;
  private javax.swing.JLabel lbRunden;
  public javax.swing.JPanel pnZeichenflaeche;
  private javax.swing.JTextField tfRunden;
  // End of variables declaration                   
public Zeichenflaeche z = (Zeichenflaeche) pnZeichenflaeche;
}

class Zeichenflaeche extends JPanel {
  boolean paint = true;
  double[] data;
  
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if(paint) {
      // Rahmen um den Zeichenbereich
      g.drawLine(0, 0, 390, 0);
      g.drawLine(0, 109, 390, 101);
      g.drawLine(0, 0, 0, 109);
      g.drawLine(389, 0, 389, 101);

      // Balken zeichnen
      for(int i = 0; i < 6; i++) {
        // drawLine(x-Koordinate Start, y-Koordinate Start, x-Koordinate Ende, y-Koordinate Ende)
        // drawLine(A,B,C,D)
        // A = Abstand Rahmen <-> Erster Balken + (i * Breite des Balken)
        // B = 100
        // C = wie A, nur 50px versetzt für die Breite der Balken
        // D = (neg. Maximale Länge + Prozente) mal minus Eins fürs Zeichnen
        g.drawLine(50 + (i * 65), 100, 150 + (i * 65), -1 * ( -100 + (int) data[i]));
      }
    }
  }

  public void setPaint(boolean p) {
    this.paint = p;
  }

  public void setChart(double[] d) {
    data = d;
    this.setPaint(true);
    this.repaint();
  }
  
}


Konsole sagt folgendes:

Code:
run:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at Zeichenflaeche.paintComponent(Wuerfel.java:294)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at javax.swing.JComponent.paintChildren(JComponent.java:862)
        at javax.swing.JComponent.paint(JComponent.java:1038)
        at javax.swing.JComponent.paintChildren(JComponent.java:862)
        at javax.swing.JComponent.paint(JComponent.java:1038)
        at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
        at javax.swing.JComponent.paintChildren(JComponent.java:862)
        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5131)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1479)
        at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1410)
        at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
        at javax.swing.JComponent.paint(JComponent.java:1015)
        at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
        at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
        at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
        at java.awt.Container.paint(Container.java:1780)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
        at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        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)
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at Zeichenflaeche.paintComponent(Wuerfel.java:294)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at javax.swing.JComponent.paintChildren(JComponent.java:862)
        at javax.swing.JComponent.paint(JComponent.java:1038)
        at javax.swing.JComponent.paintChildren(JComponent.java:862)
        at javax.swing.JComponent.paint(JComponent.java:1038)
        at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
        at javax.swing.JComponent.paintChildren(JComponent.java:862)
        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5131)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1479)
        at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1410)
        at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
        at javax.swing.JComponent.paint(JComponent.java:1015)
        at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
        at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
        at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
        at java.awt.Container.paint(Container.java:1780)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
        at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        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)

Gruß
 

eRaaaa

Top Contributor
Java:
   g.drawLine(50 + (i * 65), 100, 150 + (i * 65), -1 * ( -100 + (int) data[i]));

dein
Code:
data
ist zu dem Zeitpunkt vermutlich noch [c]null[/c]. mache mal eine if-Abfrage vor die Schleife!

Und
Java:
	public javax.swing.JPanel pnZeichenflaeche;
	private javax.swing.JTextField tfRunden;
	// End of variables declaration
	public Zeichenflaeche z = (Zeichenflaeche) pnZeichenflaeche;  // <-- null

da bringt die Zuweisung deines
Code:
z
natürlich auch nichts, das wird auch null sein !
 

Marco13

Top Contributor
Vielleicht hätte ich das sagen sollen: Die Zeile
Zeichenflaeche z = (Zeichenflaeche)pnZeichenflaeche;
muss direkt vor der Zeile stehen, wo du jetzt
z.setChart(...);
machst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Methoden g.setColor funktioniert nicht bei Methodenaufruf in anderer Klasse Java Basics - Anfänger-Themen 1
G Methodenaufruf anderer Klasse Java Basics - Anfänger-Themen 18
C Methodenaufruf mit geänderten Argumenten Java Basics - Anfänger-Themen 10
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
N methodenaufruf for each geht nicht Java Basics - Anfänger-Themen 2
K Methodenaufruf /-ausgabe Java Basics - Anfänger-Themen 5
O Methodenaufruf Java Basics - Anfänger-Themen 5
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
Queiser Methodenaufruf Java Basics - Anfänger-Themen 2
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
I Java Methodenaufruf Java Basics - Anfänger-Themen 9
A OOP Methodenaufruf in einer anderen Klasse Java Basics - Anfänger-Themen 2
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
M Methodenaufruf in der Main Datei funzt nicht Java Basics - Anfänger-Themen 13
BadBat Klassen instanz als variable + methodenaufruf Java Basics - Anfänger-Themen 4
M Methodenaufruf in Methode Java Basics - Anfänger-Themen 6
M Objekt Name für MethodenAufruf nachträglich zuweisen? Java Basics - Anfänger-Themen 2
J if() mit Methodenaufruf kombiniert (Pixelerkennung) Java Basics - Anfänger-Themen 3
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
T Rekursiver Methodenaufruf funktioniert nicht Java Basics - Anfänger-Themen 7
M Methoden Methodenaufruf allgemein Java Basics - Anfänger-Themen 3
H Ist Math.Random() eine Methode oder ein Methodenaufruf (Klausurfrage) Java Basics - Anfänger-Themen 4
O Methodenaufruf Java Basics - Anfänger-Themen 6
F Methodenaufruf Java Basics - Anfänger-Themen 1
F Erste Schritte Label Text vor Methodenaufruf setzen Java Basics - Anfänger-Themen 17
J Array mit Methodenaufruf Java Basics - Anfänger-Themen 2
S Problem bei Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 3
OnDemand Methodenaufruf Java Basics - Anfänger-Themen 3
A Methoden Benutzerdefinierter Methodenaufruf Java Basics - Anfänger-Themen 4
O Methodenaufruf - Inhaltsveränderung Java Basics - Anfänger-Themen 23
L Einfacher Methodenaufruf vs. Objekt Java Basics - Anfänger-Themen 4
O Methodenaufruf im Konstruktor Java Basics - Anfänger-Themen 6
G was ist ein Methodenaufruf mit (){}? Java Basics - Anfänger-Themen 6
S Methoden Klassen Definition - Methodenaufruf Java Basics - Anfänger-Themen 7
K Methoden Methodenaufruf für BufferedWriter .. Java Basics - Anfänger-Themen 5
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
A Problem bei Methodenaufruf Java Basics - Anfänger-Themen 6
B Parameterausführung bei Methodenaufruf Java Basics - Anfänger-Themen 8
A Methodenaufruf Java Basics - Anfänger-Themen 4
P Vererbung Methodenaufruf funktioniert aber Wertzuweisung von Variablen nicht Java Basics - Anfänger-Themen 9
S methodenaufruf Java Basics - Anfänger-Themen 8
G Erste Schritte Methodenaufruf, Variablen-Deklaration Java Basics - Anfänger-Themen 6
L Methodenaufruf in main() Java Basics - Anfänger-Themen 3
M Methodenaufruf in for-Schleife - nur 1 mal ausgegeben Java Basics - Anfänger-Themen 3
I Externer Methodenaufruf, Punkt-Notation Java Basics - Anfänger-Themen 11
I Methoden Rückverfolgung Methodenaufruf Java Basics - Anfänger-Themen 15
E Methoden Wie kann ich eine Methode so schreiben, dass Methodenaufruf polymorph erfolgen kann? Java Basics - Anfänger-Themen 8
M Methoden Methodenaufruf mit .class. Java Basics - Anfänger-Themen 2
J rekursiver Methodenaufruf Java Basics - Anfänger-Themen 12
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
T Java mehrfacher Methodenaufruf Java Basics - Anfänger-Themen 15
B Quicksort --> Methodenaufruf Java Basics - Anfänger-Themen 10
O Methodenaufruf Java Basics - Anfänger-Themen 4
A nullPointerException bei Methodenaufruf Java Basics - Anfänger-Themen 16
J Vererbung, Methodenaufruf Java Basics - Anfänger-Themen 4
M Problem bei Methodenaufruf aus ActionListener Java Basics - Anfänger-Themen 5
G Methodenaufruf aus der Kommandozeile Java Basics - Anfänger-Themen 28
N Methodenaufruf funtioniert nicht Java Basics - Anfänger-Themen 3
C Methodenaufruf mit Variablen die gesetzt werden Java Basics - Anfänger-Themen 10
Antoras mit ActionListener/Methodenaufruf Textfelder zeichnen Java Basics - Anfänger-Themen 4
G Dynamischer Methodenaufruf Java Basics - Anfänger-Themen 3
G Methodenaufruf über ein Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
H ungültige methodenaufruf Java Basics - Anfänger-Themen 16
G Methodenaufruf Java Basics - Anfänger-Themen 3
G Frage zu Oberklasse bei Methodenaufruf Java Basics - Anfänger-Themen 2
V Dynamischer Klassen bzw. Methodenaufruf Java Basics - Anfänger-Themen 6
V Wie und wieso geht dieser Methodenaufruf? Java Basics - Anfänger-Themen 2
S Methodenaufruf Java Basics - Anfänger-Themen 6
G Methodenaufruf in der for-Schleife mit Array Java Basics - Anfänger-Themen 7
L hsqldb Methodenaufruf Java Basics - Anfänger-Themen 10
K synchron und asynchroner Methodenaufruf Java Basics - Anfänger-Themen 17
R Fehler bei Methodenaufruf Java Basics - Anfänger-Themen 2
G Methodenaufruf Java Basics - Anfänger-Themen 3
T NullPointerException bei Methodenaufruf Java Basics - Anfänger-Themen 2
G Methodenaufruf Java Basics - Anfänger-Themen 10
K Klassenübergriefendes Methodenaufruf Problem Java Basics - Anfänger-Themen 6
S methodenaufruf. Java Basics - Anfänger-Themen 16
G methodenaufruf Java Basics - Anfänger-Themen 4
E Methodenaufruf mittels variable? kA Java Basics - Anfänger-Themen 5
G methodenaufruf Java Basics - Anfänger-Themen 3
G methodenaufruf Java Basics - Anfänger-Themen 5
W Überschreiben und Methodenaufruf Java Basics - Anfänger-Themen 3
L Methodenaufruf zwischen Klassen Java Basics - Anfänger-Themen 3
C Methodenaufruf mit throws IOException Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben