Baum (Steuerelement)

Steuerelement einer grafischen Benutzeroberfläche

Ein Baum, verdeutlichend auch Baumansicht (engl.: Tree view oder treeview) oder eine hierarchische Liste,[1] ist ein Steuerelement einer grafischen Benutzeroberfläche, das eine hierarchisch gegliederte Liste darstellt und Auswahl daraus ermöglicht. Der Baum besteht dabei aus mehreren ineinander geschachtelten Knoten, welche wahlweise mit einem Mausklick auf das davor eingeblendete Symbol (meist ein Pluszeichen bzw. Minuszeichen oder ein Dreieck) aufgeklappt oder zugeklappt werden können.

Baum, der ein Verzeichnis mit Unterverzeichnissen darstellt (im Dateimanager Konqueror)

Darstellung Bearbeiten

Dargestellt wird der Baum in der Regel mit der Wurzel in der oberen linken Ecke. Die Verbindungslinien zwischen den Knoten können dabei gezeichnet oder ausgelassen werden. Werden diese nicht dargestellt, ist die hierarchische Struktur nur durch die eingerückte Darstellung der Knoten erkennbar. Ein weiteres Unterscheidungsmerkmal ist die Darstellung der Blätter, welche im Baum integriert werden oder aber auf einer Detailseite z. B. in Form einer Liste dargestellt werden können.

Eine Alternativform eines Baums ist die Kombination mit einer Textbox. Je nach Inhalt dieser Textbox werden im Baum nur die Knoten und Blätter angezeigt, welche das eingegebene Suchwort in irgendeiner Form enthalten. Solche Bäume werden unter anderem in der integrierten Entwicklungsumgebung Eclipse eingesetzt.

Verwendung Bearbeiten

Bäume werden oft eingesetzt, um hierarchisch verschachtelte Strukturen darzustellen. Die hierarchische Verzeichnisstruktur eines Computers etwa wird oft als Baum dargestellt. Bekannte Anwendungsbeispiele sind die Ordnerstruktur im Windows-Explorer oder der Dateimanager Xtree unter DOS.

Auch die Liste der Einstellungen einer Software wird oft als Baum dargestellt, um sie übersichtlicher zu machen.

Die meisten integrierten Entwicklungsumgebungen können die Struktur eines Softwareprojektes – vom ganzen Projekt bis hinunter zu Abschnitten in einzelnen Dateien – als Baum darstellen.

ISO 9241-161 schreibt vor, dass ein Baum so gestaltet sein muss, dass die hierarchische Position eines Knoten und der Daten angegeben wird. Ferner empfiehlt die Norm eine Ordnung der Daten auf „geeignete Weise“.[2]

Programmierung Bearbeiten

C# Bearbeiten

Das folgende Beispiel in der Programmiersprache C# zeigt die Implementierung eines Hauptfensters mit einem TreeView und einem Button für verschiedene Länder und Kontinente. Das Klick-Ereignis des Buttons ist mit einer Ereignisbehandlungsroutine verknüpft, die ein Fenster öffnet (siehe Ereignis).[3]

using System.Windows.Forms;

public class MainForm : System.Windows.Forms.Form
{		
	private System.Windows.Forms.TreeView worldTreeView;
	
	private System.Windows.Forms.Button detailsButton;
	
	// Konstruktor des MainForms.
	public MainForm()
	{
		InitializeWorldTreeViewAndButton();
	}
	
	// Startet die Anwendung und erzeugt das MainForm durch Aufruf des Konstruktors.
    public static void Main()
    {
        Application.Run(new MainForm());
    }
	
	// Initialisiert das TreeView und den Button.
	private void InitializeWorldTreeViewAndButton()
	{
		// Erzeugt ein TreeView für verschiedene Länder und Kontinente und einen Button auf dem Hauptfenster.
		
		worldTreeView = new TreeView();
		detailsButton = new Button();
		
		SuspendLayout();
		worldTreeView.SuspendLayout();
		
		worldTreeView.Location = new System.Drawing.Point(50, 50);
		worldTreeView.Nodes.Add("World", "Welt"); // Fügt den obersten Knoten hinzu
		TreeNodeCollection worldTreeNodeCollection = worldTreeView.Nodes[0].Nodes; // Die Sammlung der Nachfolgerknoten des obersten Knotens
		// Fügt dieser Sammlung 3 Knoten hinzu
		worldTreeNodeCollection.Add("Europe", "Europa");
		worldTreeNodeCollection.Add("America", "Amerika");
		worldTreeNodeCollection.Add("Asia", "Asien");
		TreeNodeCollection europeTreeNodeCollection = worldTreeNodeCollection[0].Nodes; // Die Sammlung der Nachfolgerknoten des Europa Knotens
		// Fügt dieser Sammlung 3 Knoten hinzu
		europeTreeNodeCollection.Add("Germany", "Deutschland");
		europeTreeNodeCollection.Add("France", "Frankreich");
		europeTreeNodeCollection.Add("Britain", "Britannien");
		TreeNodeCollection americaTreeNodeCollection = worldTreeNodeCollection[1].Nodes; // Die Sammlung der Nachfolgerknoten des Amerika Knotens
		// Fügt dieser Sammlung 1 Knoten hinzu
		americaTreeNodeCollection.Add("United States", "Vereinigte Staaten");
		Controls.Add(worldTreeView);
		
		detailsButton.Location = new System.Drawing.Point(50, 150);
		detailsButton.Text = "Details";
		Controls.Add(detailsButton);
		
		worldTreeView.ResumeLayout(false);
		worldTreeView.PerformLayout();
		
		Text = "Dialogs example"; // Setzt die Beschriftung des Hauptfensters.
		
		ResumeLayout(false);
		PerformLayout();
		
		detailsButton.Click += new System.EventHandler(NewButton_Clicked);
	}
	
	// Diese Methode wird aufgerufen, wenn der Benutzer auf den Button "Details" klickt.
	private void NewButton_Clicked(object sender, System.EventArgs e)
	{
		Form newForm = new Form(); // Erzeugt ein neues Fenster durch Aufruf des Standardkonstruktors.
		newForm.Text = worldTreeView.SelectedNode.Text; // Setzt die Beschriftung des Fensters gleich der Beschriftung des ausgewählten Knotens des TreeView.
		newForm.ShowDialog(); // Zeigt das Fenster als modaler Dialog an.
	}
}

Siehe auch Bearbeiten

Einzelnachweise Bearbeiten

  1. Bezeichnung nach ISO 9241-161, Nr. 8.17
  2. DIN EN ISO 9241-161, Nr. 8.17.5
  3. Microsoft Docs: TreeView Class