Auffüllen eines JTree

Ich habe ein array von Objekten der Klasse A, die enthalten ein array von Objekten der Klasse B.
Ich habe schon ein paar Fragen: (Codierung Beispiele wären eine große Hilfe)

  1. Wie kann ich einen JTree mit übergeordneten Knoten als Objekt-und Kinder-Knoten als B ist, und füllen Sie es?
  2. Vorausgesetzt, dass das gesamte JFrame gliedert sich in zwei Platten(eine mit den JTree und anderen JPanel angezeigt werden Objekt-Attribute entsprechend der ausgewählten option auf der JTree) wie kann ich dies möglich machen? Wie jetzt, ich bin in der Lage, hart-code die Werte in die JTree.

Ich gesucht habe eine viel für Beispiele im Netz, aber war in der Lage zu finden, die nur basic Beispiele.

Dies ist, was ich bisher getan habe:

public class A {
int a1=10;
int a2=20;
B bobj[]=new B[2];
A(){
   bobj[0]=new B();
   bobj[1]=new B();
}
}

class B {
int b=30;
}

In meinem Jtree-code:

import javax.swing.tree.TreeModel;

public class try1 extends javax.swing.JFrame {
 static A a2=new A();
/** Creates new form try1 */
public try1() {
    initComponents();
}

/** This method is called from within the constructor 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() {

    jScrollPane1 = new javax.swing.JScrollPane();
    Tree = new javax.swing.JTree();
    jPanel1 = new javax.swing.JPanel();
    jPanel2 = new javax.swing.JPanel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    Tree.setModel(a2);
    Tree.setAutoscrolls(true);
    Tree.setRootVisible(true);
    jScrollPane1.setViewportView(Tree);
    Tree.getAccessibleContext().setAccessibleName("");
    Tree.getAccessibleContext().setAccessibleDescription("");

    jPanel1.setBackground(new java.awt.Color(254, 254, 254));

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 655, Short.MAX_VALUE)
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 569, Short.MAX_VALUE)
    );

    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 463, Short.MAX_VALUE)
    );
    jPanel2Layout.setVerticalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 151, Short.MAX_VALUE)
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(21, 21, 21))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(473, Short.MAX_VALUE))
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(43, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 569, Short.MAX_VALUE))
            .addContainerGap(24, Short.MAX_VALUE))
    );

    pack();
}//</editor-fold>

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
    a2=new A();
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
           new try1().setVisible(true);
        }
    });
}

//Variables declaration - do not modify
public javax.swing.JTree Tree;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
//End of variables declaration

}

Fand ich dieses Beispielhier
1. Da die zB ' s ursprüngliche format ist ein array von strings,verwenden Sie die hastable. Da bin ich mit einer Klasse von Objekten(A), die Objekte enthält, die von B, wie sollte ich es machen(ich erhalte eine Fehlermeldung oben).
2.Ich habe anbei das layout von meinem Bild. Ich habe hardcoded den Jtree in der Abbildung. Was soll ich tun, wenn ich klicken Sie auf einen Jtree Knoten, ich bin in der Lage, um die details anzuzeigen, die auf JAuffüllen eines JTreeTextField in der Nähe von es?

  • Wie zu 1) und zeigen Sie uns, was Sie versucht haben, und 2), aus der hervorgeht, wo genau du steckst. Recht Sie Fragen sich nun, sehr allgemein und vage Fragen und es wäre schwer, diese zu beantworten, ohne zu schreiben ein komplettes tutorial. Sie kennen den Bohrer für eine harte Programmierung problem: brechen Sie das Projekt in kleine Aufgaben und dann lösen Sie jede kleine Aufgabe. Ich schlage vor, dass Sie geben diesem einen Versuch, und wenn dann stecken sich Fragen, wie spezifisch eine Frage wie möglich. Viel Glück!
  • Klar, werde ich Bearbeiten, meine Frage sofort. danke!
  • "Coding-Beispiele wären eine große Hilfe" Ebenfalls Beweise der Aufwand wäre eine große Hilfe.
  • Genau, und nicht zu vergessen, dass es gibt Tonnen von Beispielen bereits heraus dort auf, wie zum erstellen und füllen eines JTree, also wissen, was du versucht hast und wo genau du stehst, ist unerlässlich, wenn wir eine Chance haben, Ihnen zu helfen. Ich freue mich auf Ihre Bearbeitung.
  • bitte lernen Sie die java Namenskonventionen halten
  • Sie verwenden Ein, als ob es ein TreeModel Klasse, aber es nicht umsetzen das TreeModel-interface oder erweitern von DefaultTreeModel.
  • Auch versuchen Sie diese kleinen code ohne NetBeans-code-Generierung. Viele von uns können nicht testen Sie Ihren code, wenn Sie verwenden diese, und auch es zu tun auf Ihre eigenen, lehrt Sie wertvolle Lektionen darüber, wie man code Schwingen.
  • Auch, haben, Lesen Sie die API und tutorials über die Verwendung des TreeNode-interface? Ich habe mir die Beispiel-code durch das Java-Baum-tutorials, und Sie scheinen alles andere als "basic" zu mir.
  • und die anderen - Danke für die info! Ich dachte mir, ein Weg, es zu tun! Dies geschah, weil ich zog aus der IDE und tatsächlich schrieb den code, statt der Festsetzung der Swing-Container/Steuert. Ich werde nach den genauen code so schnell wie möglich.

InformationsquelleAutor P R | 2011-10-15
Schreibe einen Kommentar