Antwort
 
Themen-Optionen Thema durchsuchen
Alt 11.08.2006, 23:03 Nach oben    #1
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard ImageTree

Hi.

war lang nicht mehr hier, aber jetzt bräucht ich mal wieder eure hilfe...

Ich möchte gerne Bilder auflisten, die teilbilder besitzen.
das heißt, dass ich gern ein Tree brauche, der für jedes große bild ein neuen knoten erstellt, und darunter die teil bilder auflistet.

Da ich aber überhaupt keine Ahnung hab, wie das gehen soll, brauch ich eure ideen, und eure hilfe.

MFG
Xean
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 23:06 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Ist es vielleicht möglich mit einem JTree zu arbeiten und anstatt "Text" Bilder einzusetzen?

Habe jetzt nicht genauer geschaut, war nur so ein Gedanke.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.08.2006, 23:11 Nach oben    #3
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

rein in der theorie schon. aber nur wie? die teilbilder sind nur 32x32px groß.
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 02:56 Nach oben    #4
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hilft dir das hier weiter?
Habe gerade selbst damit etwas rumgespielt .. aber mir fehlt gerade etwas die Konzentration:
http://www.java-forum.org/de/viewtopic.php?t=8603

Was du machen könntest bzw. musst (so wie ich das sehe).
Du setzt ein Icon und setzt dann den Text des Nodes auf "". Das wäre eine Art Workaround.

Spiel mal etwas. Vielleicht setze ich mich morgen auch nochmal hin .. oder pago antwortet vorher schon.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 09:46 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Nachtrag:
Habe gerade mal etwas gespielt (gerade erst aufgestanden -) und das hier klappt.
PHP-Code:
import java.awt.*;
import java.net.URL;

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;

public class 
JTreeDemo extends JPanel {

    static final 
long serialVersionUID 1;
    
    private 
JTree tree;
    
    
    
/**
     * Default constructor. A layout manager is set and the tree is created.
     */
    
public JTreeDemo() {
        
super.setLayout(new GridLayout(1,0));
        
        
DefaultMutableTreeNode root 
            new 
DefaultMutableTreeNode("a test tree");
        
        
this.createNodes(root);    
        
        
tree = new JTree(root);
        
tree.setCellRenderer(new CustomTreeCellRenderer());
        
        
//Create the scroll pane and add the tree to it. 
        
JScrollPane scrollPane = new JScrollPane(tree);

        
Dimension minimumSize = new Dimension(10050);
        
scrollPane.setMinimumSize(minimumSize);

        
add(scrollPane);        
    }
    
    
    
/**
     * Method that creates the nodes that should be displayed in the tree.
     * In this test only categories and sub categories exists.
     * It is not possible to have a dynamic node depth.
     * 
     * @param root
     */
    
private void createNodes(DefaultMutableTreeNode root) {
        
        
DefaultMutableTreeNode category    null;
        
DefaultMutableTreeNode subcategory null;
        
        
// create a first category
        
category = new DefaultMutableTreeNode("cat1");
        
        
// add the category to the tree
        
root.add(category);
        
        
// create some sub categories and add them to the category
        
subcategory = new DefaultMutableTreeNode("subcat1");
        
category.add(subcategory);
        
        
subcategory = new DefaultMutableTreeNode("subcat2");
        
category.add(subcategory);                
    }
    
    
    
    
/**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    
private static void createAndShowGUI() {

        
//Create and set up the window.
        
JFrame frame = new JFrame("TreeDemo");
        
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        
//Create and set up the content pane.
        
JTreeDemo newContentPane = new JTreeDemo();
        
newContentPane.setOpaque(true); //content panes must be opaque
        
frame.setContentPane(newContentPane);

        
//Display the window.
        
frame.pack();
        
frame.setVisible(true);
    }

    public static 
void main(String[] args) {
        
//Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        
javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public 
void run() {
                
createAndShowGUI();
            }
        });
    }    
}


class 
CustomTreeCellRenderer extends DefaultTreeCellRenderer {
    
    static final 
long serialVersionUID 1;
    
    public 
Component getTreeCellRendererComponent(JTree treeObject value
            
boolean selectedboolean expandedboolean leafint row,
            
boolean hasFocus)
    {
        
super.getTreeCellRendererComponent(treevalueselectedexpanded
                
leafrowhasFocus
        
);
        
        
String nodeValue = ((DefaultMutableTreeNodevalue).getUserObject().toString();
        
        
ImageIcon icon null;
        
        if(
nodeValue.equalsIgnoreCase("cat1")) {
            
icon createImageIcon("test1.gif");
        }
        else if(
nodeValue.equalsIgnoreCase("subcat1")) {
            
icon createImageIcon("test2.gif");
        }
        else if(
nodeValue.equalsIgnoreCase("subcat2")) {
            
icon createImageIcon("test3.gif");
        }
        
        
/*
         * Set icon and "delete" text if an icon is define.
         * Else do nothing.
         */        
        
if(icon != null) {
            
setIcon(icon);
            
setText("");
        }        
        
        return 
this;
    }
    
    public static 
ImageIcon createImageIcon(String path) {
        
        
URL imgURL CustomTreeCellRenderer.class.getResource(path);
        if(
imgURL != null) {
            return new 
ImageIcon(imgURL);
        } else {
            
System.err.println("Couldn't find file: " path);
            return 
null;
        }        
    }

Habe mich dabei etwas an das Java-Tutorial angelehnt. Eigentlich recht simpel zu lösen das Problem, obwohl ich nicht weiß, ob die Nutzung von ImageIcons für sowas gedacht ist. Egal, klappt.

Grüße und guten Morgen, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 09:54 Nach oben    #6
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.133
Standard

Ich würd ja gerne, aber ich hab keine Ahnung, was hier das Problem ist.

Geht es darum, wie man ein TreeModel schreibt? Oder um den Renderer (wie in Bens Link)?
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 10:00 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Ich weiß zwar auch nicht, was Teilbilder eines Bilds sind , aber ich denke doch mal, dass er einen Tree haben will, der nicht mit Text, sondern mit Bildchen bestückt ist.
Egal, ich hab zum ersten Mal mit so 'nem Tree gearbeitet. Hauptsache bisschen was gelernt.

@Xean:
Sollte das nicht das sein, was du suchst, dann beschreib am besten das Problem mal etwas genauer.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 13:37 Nach oben    #8
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

ich glaub nicht...

also nochmal:
hier, dass ist so ein bild:


und ich möchte jetzt, dass ich, wenn ich in meinem programm mein großes bild lade, dass zu meinem root element des Trees ein neuer knoten dazu kommt.
das bild heißt "!!!woody.png", deshalb heißt der neue knoten "!!!woody" (als text) und diesem knoten sollen jetzt diese kleinen bildchen (als bild und nicht als text) hinzugefüht werden.
desheißt, dass ich eine methode brauche, die so zb anfängt:
public void addImage(String name, BufferedImage[] imgs){}

name = name des bildes
imgs = die kleinen bildchen.

der Tree sollte dann so aussehen:

root
|-!!!woody
| |- [bild1]
| |- [bild2]
| |- [bild3]
| |- [bild4]
| |- [bild5]
| |- [bild6]
| |- [bild7]
|
|-anderes Bild
| |- [bild1]
| |- [bild2]
| |- [bild3]
| |- [usw]
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 18:57 Nach oben    #9
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Jou,
ähm .. wo genau hakt es denn jetzt? Ich meine .. fertigen Quellcode wirst du wohl eher weniger erhalten.
Bisschen Eigenleistung zeigen.

Im Prinzip ist das, was du haben willst ja nur eine individuelle Erweiterung von dem Code, den ich oben gezeigt habe, oder?
Sofern ich das richtig verstanden habe, was du machen willst.

Du lädst ein Bild, dessen Name der Name eines Knotens ist. Diesem Bild sind weitere Bilder zugeordnet. Das sind dann die Unterknoten (nennt man das so?).

Stell ich mir jetzt gar nicht so schwer vor, was du da vorhast ..

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.08.2006, 16:52 Nach oben    #10
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

ich hoffe auch, dass es nicht so schwer ist... nur, ich kenn mich überhaubt nicht mit trees aus...

[EDIT]

Habs jetzt hinbekommen:

Geändert von Xean (14.08.2006 um 14:48 Uhr)
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45