richard: grünes Häckchen bei Debug Punkt (Borland JBuilder)

Hallo!
Ich bin seit ein paar Tagen dabei, mir selbst Java beizubringen. Ich verwende den Borland JBuilder personal.
Jetzt habe ich versucht, zu debuggen (Haltepunkt lässt sich setzen).
Wenn ich den Haltepunkt innerhalb der direkt aufgerufenen Klasse setze und mit einem Debuglauf (2. grünes Symbol in Statuszeile des Builder) beginne, dann hält das Programm wie gewünscht.
Ich verwende aber auch ein Model, dessen Prozeduren von einer GUI Komponente benutzt werden. FAlls ich im Model einen Breakpoint setze, dann hält das Programm nicht an dem in ihm gesetzten Breakpoint, und ich bekomme ein kleines grünes Häckchen neben diesem Breakpoint zu sehen.
Was bedeutet dies?
Wie bekomme ich das Programm an diesem Punkt angehalten?
Ich danke für eure Hilfe,
Richard

  1. Hi,

    das geht gar nicht.
    Ich weiss ja nicht welches Framework Du verwendest.
    Jedoch ohne Sourcen dessen, wird das nix.

    Gruss Matze

    1. Hi Matze!
      Also die Grob-Idee:

      Wir haben ein Panel.
      Darin eine Scrollpane.
      Darin ein TreeControl.

      Die TreeControl hat ein Model, welches die vom Tree-Interface vorgeschriebenen Methoden implementiert.
      Innerhalb einer dieser Methoden (Bsp.

      public int getChildCount(Object node)
        {
          Node myNode = (Node) (node);
          int anz= myNode.getChildNodes().getLength();
          anz=anz;//Hier Breakpoint
          return anz;
        }

      )setze ich eine Breakpoint.
      Dabei ist Node ein Knoten einer XML Struktur, die4 ich mit Xalan erzeuge (XML Parsing).

      1. Servus,

        Die TreeControl hat ein Model, welches die vom Tree-Interface vorgeschriebenen Methoden implementiert.
        Innerhalb einer dieser Methoden (Bsp.

        Ja und da liegt gewissermassen schon das Problem:
        Ähnlich verhält sich das auch mit EJBeans.
        Leider kann dort der Jbuilder nicht mehr wirklich debuggen.
        Das Problem soweit Ich es nun richtig verastanden habe liegt darin, dass das Objekt an das Framework übergeben wird bzw. vom Framework die geforderte Methode aufgerufen wird.

        Da kann nun Jbuilder ohne sourcen keinen Zusammenhang mehr finden.
        Sprich der "verliert" den handel und bekommt ihn erst zu einem späteren Zeitpunkt, wenn das Framework verlasen wird wieder.

        Ist zwar nicht 100% richtig, da der handele nicht wirklich erloren geht jedoch Jbuilder keine Sourcen zum Framework hat und diese also nicht "auflösen" kann.

        Gruss Matze

        1. Hallo Matze!
          Soweit, so klar. Ich denke wir haben uns bis hier verstanden.
          Aber wie kann ich denn dann überprüfen, ob mein Model richtig mit dem Framework funktioniert?
          Ich meine, ich vermute, dass ich bei der Implementierung des Modells irgendwo einen Fehler im Aufbau des Trees gemacht habe.
          Wie krieg ich denn ohne Debugging raus, wo er liegt?
          Oder kennt jemand ein Beispiel, in dem eine XML Datei mit hilfe einer Treecontrol dargestellt wird (mit Sourcecode)?
          Ich danke auf jeden Fall für die Hilfe,
          Richard

          1. Servus,

            hat das Framework selber keine logging implementierung?
            Tja Ich kenne Dein Framework leider nicht, da kann Ich dir nicht weiter helfen.

            Gruss Matze

            1. Hallo!
              Also auch auf die Gefahr hin, dass ich mich jetzt bodenlos blamiere (aber wie bereits in der Einleitung geschrieben erlerne ich ja gerade Java):
              Meinst du mit Framework die verwendete GUI Componente?
              Das wäre ein JTree aus Swing.
              Oder verstehst Du darunter meine Model Implementierung?
              Dann hab ich dich bis jetzt vollständig falsch verstanden.
              Oder meinst du, wie der Aufbau des Programms ist?
              Es handelt sich um ein Applet, auf dem wie bereits beschrieben ein Panel, darauf eine Scrollpane und darauf ein (modifizierter) JTree liegt.
              Oder benötigst Du die komlette Source für eine nähere Angabe?
              (Übrigens bin ich schon vor der Verwendung von Swing Komponenten in Applets gewarnt worden, da dies aber eine Anwendung für ein Intranet wird, und für die entsprechenden Rechner eine entsprechende Konfig erstellt wird, gibt da kein Problem.)

              Jedenfalls folgt hier die Model Klasse:
              Wichtig: Diese Klasse soll einfach rudimentär eine XML Datei als TreeTable darstellen.

              import org.apache.xpath.domapi.XPathEvaluatorImpl;
              import org.w3c.dom.Document;
              import org.w3c.dom.Node;
              import org.w3c.dom.xpath.XPathEvaluator;
              import org.w3c.dom.xpath.XPathNSResolver;
              import org.w3c.dom.xpath.XPathResult;
              import org.xml.sax.InputSource;
              import java.io.FileNotFoundException;
              import javax.xml.parsers.ParserConfigurationException;
              import java.io.IOException;
              import org.xml.sax.SAXException;
              import javax.xml.transform.TransformerFactoryConfigurationError;
              import javax.xml.transform.TransformerConfigurationException;
              import javax.xml.transform.TransformerException;
              import java.io.StringWriter;
              import java.io.StringReader;
              import java.lang.*;
              import org.xml.sax.InputSource;
              import javax.xml.parsers.DocumentBuilderFactory;
              import javax.xml.transform.OutputKeys;
              import javax.xml.transform.Transformer;
              import javax.xml.transform.TransformerFactory;
              import javax.xml.transform.dom.DOMSource;
              import javax.xml.transform.stream.StreamResult;
              import org.w3c.dom.NodeList;

              /**
               * <p>Überschrift: Pruefling</p>
               * <p>Beschreibung: TableTree Applet</p>
               * <p>Copyright: Copyright (c) 2003</p>
               * @author Richard Holderied
               * @version 1.0
               */

              public class XMLTreeModel extends AbstractTreeTableModel
                  implements TreeTableModel{

              ////////////////////////////////////////////////////////
              //Konstruktor ordnet Root Element zu
              ////////////////////////////////////////////////////////
                private Node myRoot;
                private String auswertungsart;

              public XMLTreeModel(Object node, String art) {
                  //==> Aufruf: JTreeTable treeTable = new JTreeTable(new XMLTreeModel(*Rootobjekt*, z.b. new String("root"), ausInt));
                  super(node);
                  myRoot=(Node) node;//root gemerkt;
                  auswertungsart=art;
                  }

              ///////////////////////////////////////////////////////
              //Hilfseinträge, überschriften, art der Tabellenspalten
              ///////////////////////////////////////////////////////
                // Names of the columns.
                static protected String[] cNames = {
                    "Stepnr","Status","Lower Limit","Measurement","Upper Limit","Unit"};

              // Types of the columns.
                static protected Class[] cTypes = {
                    TreeTableModel.class, String.class, String.class, String.class, String.class, String.class};

              /////////////////////////////////////////////////////////
              //Wieviele TabellenSpalten, wie heissen Sie, was ist ihr Typ
              /////////////////////////////////////////////////////////

              public int getColumnCount() {
                  return cNames.length;
                }

              public String getColumnName(int column) {
                  return cNames[column];
                }

              public Class getColumnClass(int column) {
                   return cTypes[column];
                 }

              ///////////////////////////////////////////////////////////

              // Wie ist der Eintrag für Spalte X der Tabelle bei übergebenem Objekt node
                public Object getValueAt(Object node, int column) {
                Node myNode=(Node) node;
                 try {
                   switch (column) {
                     case 0:
                       return myNode.getNodeName();
                     case 1:
                       return myNode.getNodeValue();
                     case 2:
                       return myNode.getNodeValue();
                     case 3:
                       return myNode.getNodeValue();
                     case 4:
                        return myNode.getNodeValue();
                     case 5:
                        return myNode.getNodeValue();
                    }
                 }
                 catch (SecurityException se) {}
                 return null;
               }

              // Wieviele Kinder hat Object node
                public int getChildCount(Object node)
                {
                  Node myNode=(Node) node;
                  return myNode.getChildNodes().getLength();
                }

              //gib mir Kind which des Objects node
                public Object getChild(Object node, int which)
                {
                  Node myNode=(Node) node;
                  NodeList childList=myNode.getChildNodes();
                  return childList.item(which);
                }

              //ist das Object node ein Blatt (oder hat es Kinder)
                public boolean isLeaf(Object node) {
                  Node myNode=(Node) node;
                  /*boolean flagLeaf = true;
                  int how_long = myNode.getChildNodes().getLength();
                  if (how_long==0)
                       flagLeaf = false;
                  return flagLeaf;*/
                  return myNode.hasChildNodes();
                }
              }

              Fie anderen Klassen des Projekts finden sich unter:
              http://java.sun.com/products/jfc/tsc/articles/treetable1/index.html
              ersetzt wurde FileSystemModel.java

              Mehr info kann ich erst mal gar nicht geben (da ich nicht weiss, was noch wichtig ist).

              Nochmals Dank fürs Interesse,
              Richard

              1. Hi,

                ich schau mir das bei Gelegneheit am We an.
                Du kannst mir ja mal den ganzen Code zu Deinem Projekt mailen.

                Solange musst du Dich leider noch gedulden.

                Gruss Matze.

                1. Hallo Matze!
                  Ist eh schon Super, dass Du Dir soviel arbeit machen willst.
                  Klar werde ich dir die Source gerne mailen.
                  Schon mal vielen Dank im Voraus (und bis Montag),
                  Richard