Tree-Struktur in einer DB abspeichern

Status
Nicht offen für weitere Antworten.

raiha

Mitglied
Hi,

ich möchte die Struktur eines Trees (Äste und Blätter) in einer HSQL DB abspeichern und dann wieder laden. Hat jemand ne Idee wie man die Datenbasis am besten strukturiert und was man da neben dem Orndernamen mit abspeichert? Hat das vielleicht schonmal jemand gemacht?

Danke Rainer
 

Bleiglanz

Gesperrter Benutzer
Königsweg gibts da keinen, weil sich Bäume und SQL nicht besonders gern haben

Möglichkeit A)

fremdschlüssel auf sich selbst (parent_ID)

Möglichkeit B)

sog. Nested Sets (komplex, bitte googeln)

Möglichkeit C)

Manche Monster RDBMS (z.B. DB2) bringen eingebaute Unterstützung für "hierarchische Strukturen" schon mit
 

AlArenal

Top Contributor
Ich denke die am häufigsten genutze Möglichkeit ist die von Bleiglanz angesprochene Möglichkeit A:

Jeder Node entspricht dabei einem Datensatz. Jeder Datensatz enthält dabei einen Fremdschlüssel auf dieselbe Tabelle, welche die ID des Parent-Nodes enthält. Das dürfte die einfachste Möglichkeit sein einen Baum in einer Datenbank abzubilden. Der Root-Node ist dann dadurch gekennzeichnet, dass seine Parent-ID = 0 ist.

Wie du dann beim Einlesen verfährst hängt davon ab, ob du die Daten einfach nur strunzdoof als Daten behandelst, oder ob z.B. jeder Datensatz von einer Instanz abgebildet wird und wie du die Referenzen auf anderen Nodes ermittelst (Referenz auf Parent in jeder Instanz; externe Map (Node -> Parent); ...). Bei der Abbildung der Daten als Instanzen erzeugst du beim Einlesen der Daten für jeden Satz eine Instanz. Als nächstes durchläufst du deine Instanzen und setzt die Referenz auf die Instanz des Parents....

Ich habs bisher immer so gehandhabt, dass jeder Node ne Referenz auf seinen Parent beininhaltet, ebenso wie eine List mit den Children. Darauf aufbauend ist die Erstellung eines TreeModels ne triviale Angelegenheit, je nach Verwendung können andere Spielarten aber zweckmäßiger / speicher-schonender sein...
 

André Uhres

Top Contributor
Wenn die verschiedenen Ebenen jeweils nur einen einzigen Datentyp darstellen,
dann könnte man auch pro Ebene eine Tabelle anlegen,
wobei die Tabellen der unteren Ebenen jeweils die Schlüsselfelder der
darüberliegenden Tabellen enthalten.
 

AlArenal

Top Contributor
Andre_Uhres hat gesagt.:
Wenn die verschiedenen Ebenen jeweils nur einen einzigen Datentyp darstellen,
dann könnte man auch pro Ebene eine Tabelle anlegen,
wobei die Tabellen der unteren Ebenen jeweils die Schlüsselfelder der
darüberliegenden Tabellen enthalten.

Igitt!
Und dann willst du dynamisch Tabellen anlegen und löschen und dabei die Integrität der Daten gewährleisten? Da ende ich mit möglicherweise hunderten von Tabellen mit jeweils recht wenigen Datensätzen und muss erst nen SELECT machen um auszulesen mit welcher Tabelle ich im nächsten Schritt nen JOIN machen muss...

Da schüttelts mich...
 

André Uhres

Top Contributor
> Da ende ich mit möglicherweise hunderten von Tabellen

Wieso? Dann hätte der Baum ja hunderte von Ebenen ... also, wirklich...
wenn die Hierarchie fünf Ebenen hat, dann ist das schon viel (Ich muss allerdings
zugeben, daß SQL nicht gerade meine Stärke ist) :lol:
 

AlArenal

Top Contributor
Jetzt verstehe ich was du meinst.. Da gehst du aber von einem ganz besonderen Spezialfall aus und ehrlich gesagt weiß ich mit deinem "Datentypen" nichts anzufangen.

Die meisten Trees enthalten ja nicht einfach nur Zahlen oder Strings, sondern mehr oder minder komplexe Objekte, die etwas repräsentieren (Dateien, Prozesse, Organisationseinheiten, ...). Persönlich kann ich mir nicht vorstellen jemals mit dynamischen Tabellen in einer SQL-Datenbank zu arbeiten. Auch in deinem Spezialfall nicht...
 

André Uhres

Top Contributor
> ehrlich gesagt weiß ich mit deinem "Datentypen" nichts anzufangen.

Ja gut, "Datentyp" ist vielleicht als Ausdruck hier nicht sehr glücklich gewählt.
Ich meine damit einfach alles was in eine bestimmte Tabelle reinpasst.
Beispiel:
Die Tabelle "Kundenstammdaten" enthält die Kundennummer, den Namen des Kunden,
seine Adresse, sein Bild, u.s.w.
Die Tabelle der "Lieferungen" enthält die Lieferungsnummer,
die Kundennummer, das Lieferdatum, u.s.w.
"Kundenstammdaten" wäre in diesem Beispiel die oberste Ebene und
"Lieferungen" eine Ebene darunter.
Somit sind mit diesem kleinen Beispiel schon eine ganze Menge von Daten
in nur zwei Ebenen strukturiert, die ganz einfach über die Kundennummer zusammenhängen.

EDIT 28.10.2005 (7:57):
> Buch über Datenstrukturen (wobei ich zum Sedgewick rate)
Code:
          Das wird aber teuer.
 

AlArenal

Top Contributor
Das muss er für sich selbst ausklamüsern. Zunächst gehts ja grundsätzlich darum wie man Bäume in einer Datenbank abbildet, ohne dass er nun einen konkreten Anwendungsfall genannt hat.

Bei gleichen Daten gehts halt über nen Schlüssel auf dieselbe Tabelle für den Parent. Bei deinem Anwendungsfall wäre das ein Fremdschlüssel in ner anderen Tabelle, da ist der Parent einer Lieferung eben ein Kunde...

Das grundsätzliche Vorgehen über den Bezug auf den Parent ändert sich dadurch nicht und kann man so auch in jedem Buch über Datenstrukturen finden (wobei ich zum Sedgewick rate). Nur wenn er allgemein fragt, bekommt er auch ne allgemeine Antwort. Einen Spezialfall kann er sich dann selbst ableiten oder entsprechend nochmal nachfragen.
 

raiha

Mitglied
hab ich ne Chance das ganze Tree-Objekt (mit Hibernate oder so) abzuspeichern? Hat das schonmal jemand gemacht?

Danke Rainer
 

André Uhres

Top Contributor
Code:
/*****************************************************************************************************
 * Simple_Tree.java
 ****************************************************************************************************/
package treeDnD1;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;
public class Simple_Tree extends JFrame implements WindowListener, ActionListener{
    private static final long serialVersionUID = 7526472295622776147L;
    public Simple_Tree() {
        initComponents();
        addWindowListener(this); 
        tree.setDragEnabled(true);
        tree.setShowsRootHandles(true);
        tree.setEditable(true);
    }
    private void initComponents(){
        scroller = new JScrollPane();
        tree = new JTree();
        toolbar = new JToolBar();
        neuB = new JButton();
        nachObenB = new JButton();
        nachUntenB = new JButton();
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        scroller.setViewportView(tree);
        getContentPane().add(scroller, BorderLayout.CENTER);
        neuB.setText("Add node");
        neuB.addActionListener(this);
        toolbar.add(neuB);
        nachObenB.setText("Move up");
        nachObenB.addActionListener(this);
        toolbar.add(nachObenB);
        nachUntenB.setText("Move down");
        nachUntenB.addActionListener(this);
        toolbar.add(nachUntenB);
        getContentPane().add(toolbar, BorderLayout.NORTH);
        pack();
    }
    private void addNode(){
        TreePath selectedPath = tree.getSelectionPath();
        if(selectedPath != null){
            Object o = selectedPath.getLastPathComponent();
            if(o != null){
                DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) o;
                DefaultMutableTreeNode newChild = new DefaultMutableTreeNode("new node "+count++);
                ((DefaultTreeModel)tree.getModel())
                .insertNodeInto(newChild, selectedNode, selectedNode.getChildCount());
                TreePath newPath = selectedPath.pathByAddingChild(newChild);
                tree.setSelectionPath(newPath);
                tree.startEditingAtPath(newPath);
            }
        }
    }
    private void move(final int direction){
        DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
        MutableTreeNode moveNode = (MutableTreeNode) tree.getLastSelectedPathComponent();
        if(moveNode == null) return ;
        MutableTreeNode parent = (MutableTreeNode) moveNode.getParent();
        if(parent == null) return ;
        int targetIndex = model.getIndexOfChild(parent, moveNode) + direction;
        if(targetIndex < 0 || targetIndex >= parent.getChildCount()) return;
        model.removeNodeFromParent(moveNode);
        model.insertNodeInto(moveNode, parent, targetIndex);
        //make the node visible by scroll to it
        TreeNode[] nodes = model.getPathToRoot(moveNode);
        TreePath path = new TreePath(nodes);
        tree.scrollPathToVisible(path);
        //select the newly added node
        tree.setSelectionPath(path);
    }
    public static void main(String[] args) { 
        Simple_Tree frame = null; 
        File serializeFile = new File(serializeFilename); 
        if (serializeFile.exists()) { 
            try { 
                FileInputStream fileIn = 
                        new FileInputStream(serializeFile); 
                ObjectInputStream in = new ObjectInputStream(fileIn); 
                frame = (Simple_Tree)in.readObject(); 
                
            } catch(IOException ioe) { 
                System.out.println("Error reading file: " + ioe); 
            } catch(ClassNotFoundException cnfe) { 
                System.out.println("No such class: " + cnfe); 
            } 
        } else { 
            frame = new Simple_Tree(); 
        } 
        frame.setVisible(true); 
    } 
    public void windowOpened(WindowEvent e) { }
    public void windowClosing(WindowEvent e) {
        try { 
            FileOutputStream fileOut = 
                    new FileOutputStream(serializeFilename); 
            ObjectOutputStream out = 
                    new ObjectOutputStream(fileOut); 
            out.writeObject(this); 
            out.flush(); 
            out.close(); 
        } catch(IOException ioe) { 
            System.out.println("Error saving frame: " + ioe); 
        } 
        dispose(); 
    }
    public void windowClosed(WindowEvent e) { }
    public void windowIconified(WindowEvent e) { }
    public void windowDeiconified(WindowEvent e) { }
    public void windowActivated(WindowEvent e) { }
    public void windowDeactivated(WindowEvent e) { }
    public void actionPerformed(ActionEvent e) {
        if(     e.getSource()==neuB) addNode(); 
        else if(e.getSource()==nachObenB) move(UP);
        else if(e.getSource()==nachUntenB) move(DOWN);
    }
    private static String serializeFilename ="Simple_Tree.ser"; 
    public JButton neuB;
    public JButton nachObenB;
    public JButton nachUntenB;
    public JScrollPane scroller;
    public JToolBar toolbar;
    public JTree tree;
    private int count=1;
    private final int UP = -1;
    private final int DOWN = 1;
}
 

raiha

Mitglied
danke - die Funktionalität ist wirklich super - wie bekomme ich das Tree-Objekt jetzt in die DB gespeichert (mit Hibernate)?

Danke Rainer
 

André Uhres

Top Contributor
Ups! Das wird ein Weilchen dauern bis ich das rauskrieg (wenn überhaupt).
Den Hibernate muss ich mir erst mal runterladen... :###
 

André Uhres

Top Contributor
...aber es wäre vielleicht erst mal interessant zu wissen, aus welchem Grund du den "Tree" in einer Datenbank speichern willst,
anstatt in einer flachen Datei (wie das in meinem Beispiel geschieht) ?
 
G

Guest

Gast
... der Tree soll eigentlich nur "virtuelle" Verzeichnisse auswählbar wachen. Die Inhalte dieser Verzeichnisse (Bilder welche in der DB liegen) sollen dann auf der rechten Seite (links ist der Tree) in einer SpliPane angezeigt werden.

gleich noch eine kleine Frage kann man den Tree anweisen das er keine "Blätter" sondern nur Verzeichnisse anlegt?

Danke Rainer
 

André Uhres

Top Contributor
Ich verstehe dich so, daß du den Tree in der DB gar nicht brauchst,
sondern nur die Bilder. Dann dürfte die einfache Datei aus meinem Beispiel
genügen um den Tree zu speichern.
Um die Icons der Blätter anzupassen brauchst du einen eigenen "TreeCellRenderer":
Code:
...
public class Simple_Tree extends JFrame implements WindowListener, ActionListener{
    private static final long serialVersionUID = 7526472295622776147L;
    public Simple_Tree() {
        ...
        myRenderer=new IconRenderer();
        tree.setCellRenderer(myRenderer);
    }
    ...
    private IconRenderer myRenderer;
    ...
}
class IconRenderer extends JLabel implements TreeCellRenderer {
    private static final long serialVersionUID = 7526472295622776147L;
    private static final String folder = "images/folder.gif";
    private static final String folderOpen = "images/folderOpen.gif";
    private DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
    private Color backgroundSelectionColor = defaultRenderer.getBackgroundSelectionColor();
    private Color backgroundNonSelectionColor = defaultRenderer.getBackgroundNonSelectionColor();
    public Component getTreeCellRendererComponent(JTree tree,
            Object value, boolean selected, boolean expanded, boolean leaf,
            int row, boolean hasFocus) {
        setOpaque(true);
        setText(value.toString());
        if (leaf) {
            if (selected) setIcon(new ImageIcon(folderOpen));
            else setIcon(new ImageIcon(folder));
        } else {
            if (expanded) setIcon(new ImageIcon(folderOpen));
            else  setIcon(new ImageIcon(folder));
        }
        if (selected) setBackground(backgroundSelectionColor);
        else  setBackground(backgroundNonSelectionColor);
        return this;
    }
}
Die Blätter werden hier so dargestellt als wären es Ordner mit nichts drin. Das was eigentlich drin ist (die Bilder) erscheint ja
getrennt auf der anderen Seite vom JSplitPane.
(Natürlich muss in dem Fall jedes Blatt-Objekt eine Bilderliste enthalten.)

Hier noch ein wichtiger Tipp: Die "serialVersionUID" muss als Feld zu allen Klassen hinzugefügt werden, die gespeichert
werden sollen, sonst erscheint bei der geringsten Programmänderung eine Fehlermeldung und das Programm
kann mit dem gespeicherten Objekt nicht mehr gestartet werden! Beispiel:
Code:
private static final long serialVersionUID = 7526472295622776147L;
[Edit Andre_Uhres: Geändert am: 30. 10. 2005, 23:27]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
4a61766120617274697374 dynamische Tree View AWT, Swing, JavaFX & SWT 2
I JavaFX BorderPane ins Tree einfügen AWT, Swing, JavaFX & SWT 11
F Swing Datenmodell in Tree spiegeln ohne Adapterklassen AWT, Swing, JavaFX & SWT 5
T SWT Warum ist mein 1.Tree Node selektiert? AWT, Swing, JavaFX & SWT 11
O Tree path expandieren AWT, Swing, JavaFX & SWT 2
Madlip SWT Tree mit einen Klick alles ausklappen AWT, Swing, JavaFX & SWT 3
J Knotenselect von bestimmten Knoten im Tree AWT, Swing, JavaFX & SWT 2
L SWT tree elemente markieren AWT, Swing, JavaFX & SWT 4
J SWT JFace Tree in Section unsichtbar (Eclipse Forms) AWT, Swing, JavaFX & SWT 5
L SWT Tree reagieren BEVOR selektiert wurde AWT, Swing, JavaFX & SWT 2
S SWT tree collapse AWT, Swing, JavaFX & SWT 4
W SWT Resize Tree-Element AWT, Swing, JavaFX & SWT 3
S Dropdown menu / tree AWT, Swing, JavaFX & SWT 7
P SWT Tree - Keine Selection zulassen AWT, Swing, JavaFX & SWT 4
G Swing Tree wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
B SWT SWT Tree mit mehreren Spalten AWT, Swing, JavaFX & SWT 3
A Swing JTree Tree Node löschen AWT, Swing, JavaFX & SWT 2
K SWT und Tree, wie kann ich TreeItem aus einem Tree entfernen? AWT, Swing, JavaFX & SWT 12
G SWT Tree AWT, Swing, JavaFX & SWT 4
S Tree - ArrayList Zuordnung! AWT, Swing, JavaFX & SWT 13
G Bezeichungen im Tree werden durch . gekürzt? AWT, Swing, JavaFX & SWT 5
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2
T TREE AWT, Swing, JavaFX & SWT 3
T Tree AWT, Swing, JavaFX & SWT 2
G tree.setSize tut nicht AWT, Swing, JavaFX & SWT 5
S SWT Tree AWT, Swing, JavaFX & SWT 3
U Baum/Tree nach Benutzer anzeigen AWT, Swing, JavaFX & SWT 3
L Renderer mit nativen komponenten in tabelle / tree / list AWT, Swing, JavaFX & SWT 4
R Tree automatisch öffnen AWT, Swing, JavaFX & SWT 7
N Tree automatisch öffnen AWT, Swing, JavaFX & SWT 2
J [SWT] alle Zellen in einem Tree einzeln selektieren AWT, Swing, JavaFX & SWT 2
S TableTree - Tree nicht in erster Spalte AWT, Swing, JavaFX & SWT 5
R Klick in einem Tree erkennen und auswerten AWT, Swing, JavaFX & SWT 6
F Ermittlung der X- und Y- Koordinaten im Tree bei Tastaturst. AWT, Swing, JavaFX & SWT 5
S [S] custom tree componente AWT, Swing, JavaFX & SWT 8
C tree action AWT, Swing, JavaFX & SWT 8
G Tree und expand eines bekannten Pfades AWT, Swing, JavaFX & SWT 5
F Tree-Knoten programmgesteuert auswählen AWT, Swing, JavaFX & SWT 3
J Tree nur mit Ordner anzeigen? AWT, Swing, JavaFX & SWT 4
W SWT - Tree: Problem mit Double-Click expand AWT, Swing, JavaFX & SWT 5
R Nur Verzeichnisse im Tree? AWT, Swing, JavaFX & SWT 5
G verzeichnis tree erstellen AWT, Swing, JavaFX & SWT 2
V Tree Ausgabe Problem AWT, Swing, JavaFX & SWT 2
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
K Swing Struktur für TreeTable rekursiv aufbauen AWT, Swing, JavaFX & SWT 17
agent47 JavaFX TreeView Struktur dynamisch einlesen AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX Projekt-Struktur AWT, Swing, JavaFX & SWT 2
J Swing Organisation & Struktur, die 2. AWT, Swing, JavaFX & SWT 4
J Swing MVC mit Java Swing, insbesondere die Controller-Struktur AWT, Swing, JavaFX & SWT 4
B Dialog aus DB Struktur erstellen AWT, Swing, JavaFX & SWT 4
H Struktur für Gui-Programmierung AWT, Swing, JavaFX & SWT 2
L Swing struktur und nahester Punkt AWT, Swing, JavaFX & SWT 4
M Abhängige JTable - MCV - Frage zu Struktur AWT, Swing, JavaFX & SWT 5
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben