[JAVA]Newbie Fehler?!

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/javanewbie_fehler_131809/page_1 - zur Vollversion wechseln!


das_pseudonym schrieb am 11.12.2004 um 20:33

Hey Leute findet irgendwer den Fehler in dem Prog?!
(Soll a Paintprogramm werden, ich versuch grad die konturen eines Rechteckes zu zeichnen das man aufziehen kann)

Hier der Code:

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

/**
 * <p>Überschrift: </p>
 * <p>Beschreibung: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Organisation: </p>
 * @author unbekannt
 * @version 1.0
 */

public class Drawer extends JFrame {
  int Xanf=0, Yanf=0, Xend=0, Yend=0;
  JButton BLinie = new JButton();
  JButton BRechteck = new JButton();
  GridLayout gridLayout1 = new GridLayout(7,1);


  //Den Frame konstruieren
  public Drawer() {
    super("Mein Painter");
    try {
      setSize(new Dimension(500, 500));
      jbInit();
      show();
    }
    catch (Exception e) {
      e.printS*****race();
    }
  }

  public static void main(String[] args)
  {
    Drawer Programm=new Drawer();

  }

  //Initialisierung der Komponenten
  private void jbInit() throws Exception {
    East_Panel Panel_East=new East_Panel();
    Center_Panel Panel_Center = new Center_Panel();
    South_Panel Panel_South = new South_Panel();
    Panel_East.setLayout(gridLayout1);
    this.getContentPane().add(Panel_South, BorderLayout.SOUTH);
    this.getContentPane().add(Panel_Center, BorderLayout.CENTER);
    this.getContentPane().add(Panel_East, BorderLayout.EAST);
  }
  class East_Panel extends JPanel
  {
    East_Panel()
    {
      super();
      BLinie.setText("Linie");
      BRechteck.setText("Rechteck");
      add(BLinie, null);
      add(BRechteck, null);
    }
  }
  class Center_Panel extends JPanel
  {
    Graphics g;
    Center_Panel()
    {
      super();
      this.addMouseListener(new MHandler());
      this.addMouseMotionListener(new MMHandler());
    }
    public void paintComponent(Graphics g)
      {
        g.drawRect(Xanf, Yanf, Xanf-Xend, Yanf-Yend);
        super.paintComponent(g);
      }

    class MHandler extends MouseAdapter
    {
      public void mousePressed(MouseEvent e)
      {
        Xanf=e.getX();
        Yanf=e.getY();
      }
    }
    class MMHandler extends MouseMotionAdapter
    {
      public void mouseDragged(MouseEvent e)
      {
        Xend=e.getX();
        Yend=e.getY();
        paintComponent(g);
      }
    }
  }
  class South_Panel extends JPanel
  {
    South_Panel(){}
  }
}

also was mach ich falsch?!?!


gue schrieb am 11.12.2004 um 20:55

Code:
java.lang.NullPointerException
        at Drawer$Center_Panel.paintComponent(Drawer.java:72)
        at Drawer$Center_Panel$MMHandler.mouseDragged(Drawer.java:90)
        at java.awt.Component.processMouseMotionEvent(Unknown Source)
        at javax.swing.JComponent.processMouseMotionEvent(Unknown Source)
...
paintComponent(Graphics) in Center_Panel wird anscheinend mit null aufgerufen. Am besten, du benutzt einen Canvas, den du auf das Panel legst und dessen paintComponent Methode du überschreibst.
Btw solltest du dich an die Java-Codingconventions halten (Bezeichner klein schreiben usw.).

Edit: und schreib in deinen Constructor
setDefaultCloseOperation(EXIT_ON_CLOSE);
damit das Programm beendet wird, wenn du das Fenster schließt (kannst du ja später umändern, wenn du das abfangen willst).


Ringding schrieb am 11.12.2004 um 23:11

Wenn du nächstes Mal so eine Frage stellst, schreib wenigstens dazu, was nicht funktioniert.


das_pseudonym schrieb am 12.12.2004 um 00:52

sry vergessen

hab a bissal was verändert is aber immer noch der selbe fehler
was soll ich tun?
immer wenn ma im CenterPanel ein rechteck aufziehen will kommen massig viele fehlermeldungen!

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

/**
 * <p>Überschrift: </p>
 * <p>Beschreibung: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Organisation: </p>
 * @author unbekannt
 * @version 1.0
 */

public class Drawer extends JFrame {
  int Xanf = 0, Yanf = 0, Xend = 0, Yend = 0;
  JButton BLinie = new JButton();
  JButton BRechteck = new JButton();
  GridLayout gridLayout1 = new GridLayout(7, 1);
  GridLayout gridLayout2 = new GridLayout(1,2);

  //Den Frame konstruieren
  public Drawer() {
    super("Mein Painter");
    try {
      setSize(new Dimension(500, 500));
      jbInit();
      show();
    }
    catch (Exception e) {
      e.printS*****race();
    }
  }

  public static void main(String[] args) {
    Drawer Programm = new Drawer();

  }

  //Initialisierung der Komponenten
  private void jbInit() throws Exception {
    East_Panel Panel_East = new East_Panel();
    Center_Panel Panel_Center = new Center_Panel();
    South_Panel Panel_South = new South_Panel();
    Panel_East.setLayout(gridLayout1);
    Panel_South.setLayout(gridLayout2);
    this.getContentPane().add(Panel_South, BorderLayout.SOUTH);
    this.getContentPane().add(Panel_Center, BorderLayout.CENTER);
    this.getContentPane().add(Panel_East, BorderLayout.EAST);
  }

  class East_Panel
      extends JPanel {
    public East_Panel() {
      super();
      BLinie.setText("Linie");
      BRechteck.setText("Rechteck");
      add(BLinie, null);
      add(BRechteck, null);
    }
  }

  class Center_Panel
      extends JPanel {
    Graphics g;
    public Center_Panel() {
      super();
      this.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
          Xanf = e.getX();
          Yanf = e.getY();
        }
      });
      this.addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent e) {
          Xend = e.getX();
          Yend = e.getY();
          paintComponent(g);
          validate();
        }
      });
    }

    public void paintComponent(Graphics g) {
      g.drawRect(Xanf, Yanf, Xanf - Xend, Yanf - Yend);
      super.paintComponent(g);
    }
  }

  class South_Panel extends JPanel {
    JLabel XKoo = new JLabel("X:");
    JLabel YKoo = new JLabel("Y:");
    
    public South_Panel() {
      add(XKoo, null);
      add(YKoo, null);
    }
  }
}

MfG

pseudo


watchout schrieb am 12.12.2004 um 03:26

Wenn du net bald die Java-Version und Fehlermeldungen dazuschreibst close ich den Thread, so bringt das nix.


gue schrieb am 12.12.2004 um 12:07

Ich weiß, ich sollte ihm normalerweise nicht helfen aber ich machs trotzdem :o :)
1. "hab a bissal was verändert is aber immer noch der selbe fehler" naja die Listener in anonyme Klassen packen ist nicht unbedingt viel "verändern" ;)
2. Das Problem liegt offensichtlich im MouseMotionListener vom CenterPanel. Dort rufst du paintComponent(g); auf, wobei g nie irgendwo initialisiert wurde. Ersetze das durch ein repaint(); dann sollten zumindest die Exceptions nicht mehr geworfen werden.
3. Du verwendest eine deprecated API (setVisible(true) anstatt show() verwenden).
4. Das ganze funktioniert trotzdem noch nicht, weil du noch irgendwo einen Fehler in der Programmlogik hast.
5. Das nächste mal genauer beschreiben, wo dein Problem liegt und zumindest den S*****race dazugeben ;)


das_pseudonym schrieb am 12.12.2004 um 14:55

So hab jez ein bissal was ausbessert laut gue und hab die fehlermeldungen jez wegbekommen es sind aber weitere Fehler aufgetreten und ein Problem hab ich noch.

1. Wenn man die Maus auf dem Panel_center bewegt dann erscheint die X, Y Koordiante nicht nur im SouthPanel sondern auch imoberen linken Eck vom CenterPanel ebenso wenn man einen button drückt wird dieser im centerpanel im oberen linken eck gezeichnet.

2. Die bereits gezeichneten Rechtecke löschen sich nicht also ich bräuchte nen Befehl der das ganze CenterPanel "leert" in der docu hab ich allerdings nichts gefunden

ich weiß ich geh euch am ***** aber BITTE HELFT MIR!!

Hier der veränderte Code:

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

/**
 * <p>Überschrift: </p>
 * <p>Beschreibung: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Organisation: </p>
 * @author unbekannt
 * @version 1.0
 */

public class Drawer extends JFrame {
  int Xanf = 0, Yanf = 0, Xend = 0, Yend = 0;
  JButton BLinie = new JButton();
  JButton BRechteck = new JButton();
  GridLayout gridLayout1 = new GridLayout(7, 1);
  GridLayout gridLayout2 = new GridLayout(1,2);
  JLabel XKoo = new JLabel("X:");
  JLabel YKoo = new JLabel("Y:");

  //Den Frame konstruieren
  public Drawer() {
    super("Mein Painter");
    try {
      addWindowListener(new WindowAdapter() {
                                  public void windowClosing(WindowEvent e) {
                                     System.exit(0);
                                  }
                               });
      setSize(new Dimension(500, 500));
      jbInit();
      show();
    }
    catch (Exception e) {
      e.printS*****race();
    }
  }

  public static void main(String[] args) {
    Drawer Programm = new Drawer();

  }

  //Initialisierung der Komponenten
  private void jbInit() throws Exception {
    East_Panel Panel_East = new East_Panel();
    Center_Panel Panel_Center = new Center_Panel();
    South_Panel Panel_South = new South_Panel();
    Panel_East.setLayout(gridLayout1);
    Panel_South.setLayout(gridLayout2);
    this.getContentPane().add(Panel_South, BorderLayout.SOUTH);
    this.getContentPane().add(Panel_Center, BorderLayout.CENTER);
    this.getContentPane().add(Panel_East, BorderLayout.EAST);
  }

  class East_Panel
      extends JPanel {
    public East_Panel() {
      super();
      BLinie.setText("Linie");
      BRechteck.setText("Rechteck");
      add(BLinie, null);
      add(BRechteck, null);
    }
  }

  class Center_Panel
      extends JPanel {
      public Center_Panel() {
      super();
      this.setBackground(Color.WHITE);
      this.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
          Xanf = e.getX();
          Yanf = e.getY();
        }
      });
      this.addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent e) {
          Xend = e.getX();
          Yend = e.getY();
          repaint();
          validate();
        }
      });
      this.addMouseMotionListener(new MouseMotionAdapter(){
        public void mouseMoved(MouseEvent e)
        {
          XKoo.setText("X: " + e.getX());
          YKoo.setText("Y: " + e.getY());
        }
        });
    }
    public void paint(Graphics g){
      g.setColor(Color.BLACK);
      
      if(Xend<Xanf && Yend<Yanf)
      {
        g.drawRect(Xend, Yend, Xend - Xanf, Yend - Yanf);
      }
      else
      {
        g.drawRect(Xanf, Yanf, Xend - Xanf, Yend - Yanf);
      }
      super.repaint();
    }
  }

  class South_Panel extends JPanel {

    public South_Panel() {
      this.add(XKoo, null);
      this.add(YKoo, null);
      validate();
    }
  }
}

MfG

tia

pseudo


gerhardtt schrieb am 12.12.2004 um 14:58

wieso schreibst du nie die fehlermeldung hinzu? so zwingst du jemanden der dir helfen will den code auszuführen...


das_pseudonym schrieb am 12.12.2004 um 15:00

DA GIBTS KEINE FEHLERMELDUNGEN!!!
mann


Dreamwatcher schrieb am 12.12.2004 um 15:05

Zitat von das_pseudonym
Zitat von Corran_Horn
naja aber der rest geht ja ...

einschicken geht ned da mein vater die rechnung verschmissen hat! :(

Ansonsten keine möglichkeiten das zu fixen?

es gibt sie also doch.....:rolleyes:


das_pseudonym schrieb am 12.12.2004 um 15:08

hast du den neuen beitrag schon gelesen??? du brauchst nicht auf sachen von gestern herumhacken *kopfschüttel*


gerhardtt schrieb am 12.12.2004 um 15:34

EDIT: na - ich verschwend nur mei energie


Ringding schrieb am 12.12.2004 um 15:47

Also lass uns zusammenfassen: Du willst Hilfe, stellst dürftige Information zur Verfügung, auf mehrmaliges Nachfragen widerwillig sogar mehr. Dann beschimpfst du Leute, die deine chaotische Fragestellung nicht mehr überschauen und erwartest anscheinend von uns, dass wir riechen können, dass du dein gestriges Problem mit den Fehlermeldungen heute schon gelöst hast und jetzt ein anderes hast.

Gut, wenn du glaubst, dass du so Hilfe bekommst, will ich dich nicht aufhalten...


das_pseudonym schrieb am 12.12.2004 um 15:53

HILFE warum hört mir denn keiner zu? ich finde mein letzter beitrag damit mein ich den letzten mit code war wohl mit den nötigen informationen bestückt oder? die probleme wurden erklärt und der code ist auch eingefügt aber da irgendwie sich keiner dazu ermiächtigt sich die LETZTEN beiträge von mir durchzulesen anstatt den ersten 2 kann mich wohl keiner verstehen also ich hab nen fehler gemacht hab mich entschuldigt und hab mich verbessert im gegensatz zu euch die ihr euch noch immer über meine vorangegangenen fehler aufregt ich sag nur

DANKE

das nenn ich sozial

MfG

pseudo


Ringding schrieb am 12.12.2004 um 15:57

Zitat von das_pseudonym
ich finde mein letzter beitrag damit mein ich den letzten mit code war wohl mit den nötigen informationen bestückt oder?
Stimmt.

Wenn du nicht so herumgeschimpft hättest, hätte ich's mir auch angeschaut.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025