SWT Resize Tree-Element

WiETiT

Mitglied
Hallo,

seit ca. 2 Wochen beschäftigte ich mich für ein kleines Projekt mit SWT. Meine Shell/Display besteht aus einem Header(oben), einem Navigationsbereich (links), dem Contentbereich (rechts) und dem Footer(unten). Das Layout habe ich mittels GridLayout und FillLayout gelöst. Die Navigationsleiste besteht aus einem Tree und einem Rahmen. Diese ist Anfangs nur so groß, dass gerade alle Elemente ohne Scrollbalken angezeigt werden. Wenn ich einen Unterpunkt aufklappe (SWT.Expand) wird ein Scrollbalken angezeigt. Ich möchte aber, dass sich der vertikale Bereich der Navigation so vergrößert, dass die Elemente ohne Scrollbalken angezeigt werden können.

Ich habe bereits verschiedene Ansätze probiert (resize, update, etc) allerdings reagiert er auf keinen dieser Befehle. Ich habe auch festgestellt, wenn ich einen Unterpunkt aufklappe und das Window maximiere um es danach wieder zu minimieren, wird die Größe der Navigation so angepasst, dass kein Scrollbalken angezeigt werden muss...

Wäre schön, wenn mir jemand von euch einen Tipp geben könnte, wie ich das Problem in den Griff bekomme.

Vielen Dank, David

edit: Ich habe eben mal einen Snippet geschrieben, der vllt das Problem etwas besser beschreibt. Habe auch versucht die Größe einfach mal auf irgendeinen Wert zu ändern, wenn der Tree aufgeklappt wird, allerdings ohne Erfolg.

Java:
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class Snippet{
	
	public static void main(String[] args){
		
		final Display display = new Display();
		final Shell shell = new Shell(display);
		shell.setSize(400,400);
		shell.setLayout(new GridLayout(1,false));
		
		final Tree tree = new Tree(shell,SWT.SINGLE | SWT.BORDER);
		
		TreeItem item;
		for(int i=1; i<=4 ; i++){
			item = new TreeItem(tree, SWT.None);
			item.setText("Kapitel "+i);
			item = new TreeItem(item, SWT.None);
			item.setText("Kapitel "+i+".1");
		}
		
		tree.addListener(SWT.Expand, new Listener(){
			public void handleEvent(Event e){
				tree.redraw(tree.getLocation().x, tree.getLocation().y, 200, 200, true);
				tree.update();
			}
		});
		
		
		shell.open();
		while(!shell.isDisposed()){
			if(!display.readAndDispatch()){
				display.sleep();
			}
		}
		display.dispose();
		
	}
	
	
}
 
Zuletzt bearbeitet:
G

Gast2

Gast
Versuch die layout methode aufzurufen...

Java:
            	tree.layout();
                shell.layout();
 

WiETiT

Mitglied
Zunächst einmal vielen Dank für die Antwort. Layout() liefert bis jetzt erlich gesagt nicht das gewünschte Ergebnis. Manchmal passt er die Größe an, manchmal aber auch nicht.

Hat noch jmd einen Tipp?

Java:
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
 
public class Snippet{
    
    public static void main(String[] args){
        
        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setSize(400,400);
        shell.setLayout(new GridLayout(1,false));
        
        final Tree tree = new Tree(shell,SWT.SINGLE | SWT.BORDER);
        
        TreeItem item;
        for(int i=1; i<=4 ; i++){
            item = new TreeItem(tree, SWT.None);
            item.setText("Kapitel "+i);
            item = new TreeItem(item, SWT.None);
            item.setText("Kapitel "+i+".1");
        }
        
        tree.addListener(SWT.Expand, new Listener(){
            public void handleEvent(Event e){
                tree.layout();
                shell.layout();            
            }
        });
        
        
        shell.open();
        while(!shell.isDisposed()){
            if(!display.readAndDispatch()){
                display.sleep();
            }
        }
        display.dispose();
        
    }
    
    
}
 

Wildcard

Top Contributor
Java:
final Tree tree = new Tree(shell,SWT.SINGLE | SWT.BORDER);
GridDataFactory.fillDefaults.grab(false,true).applyTo(tree);
GridDataFactory liegt in JFace, wenn du keine JFace Dependency möchtest kannst du auch einfach ein GridData Objekt instanzieren.
Thema JFace:
SWT ist eine sehr dünne Schicht über dem Widget Toolkit des OS und daher sehr low level. SWT wird eigentlich erst durch JFace richtig benutzbar. Ich würde dir daher empfehlen statt eines SWT Trees einen JFace TreeViewer zu verwenden, damit programmiert sich sehr viel sauberer und besser.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
M Swing Component Resize AWT, Swing, JavaFX & SWT 7
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
J Resize Node im BorderPane AWT, Swing, JavaFX & SWT 7
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
G Resize JFrame AWT, Swing, JavaFX & SWT 8
J Button vergrößert sich bei Fenster resize AWT, Swing, JavaFX & SWT 22
B JavaFX Scene Builder: resize funktioniert (meist) nicht AWT, Swing, JavaFX & SWT 6
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
HaukeG JavaFX JavaFX Resize und DragAndDrop eines Pane AWT, Swing, JavaFX & SWT 4
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
E JavaFX ScrollBar in TableView bei Column Resize AWT, Swing, JavaFX & SWT 2
T Bild drehen ohne Resize AWT, Swing, JavaFX & SWT 3
P ScrollPane nach zeichnen dynamisch resize AWT, Swing, JavaFX & SWT 7
J resize - Label bleibt erst schwarz AWT, Swing, JavaFX & SWT 4
M Kein resize nach Component.setVisible() AWT, Swing, JavaFX & SWT 2
W Zeichnen in einem JFrame nach Resize AWT, Swing, JavaFX & SWT 7
lumo SWT Resize und aktualisierung der gui AWT, Swing, JavaFX & SWT 6
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
TiME-SPLiNTER JLabel mit Icon & JFrame Resize AWT, Swing, JavaFX & SWT 5
J JTextArea verschwindet bei resize vom JFrame AWT, Swing, JavaFX & SWT 2
T JFrame resize AWT, Swing, JavaFX & SWT 2
1 Swing manual resize table column to min size AWT, Swing, JavaFX & SWT 2
J Swing JFrame resize-Möglichkeiten AWT, Swing, JavaFX & SWT 10
R Resize Rectangle Problem AWT, Swing, JavaFX & SWT 3
A SWT Group und Column mit Resize ändern AWT, Swing, JavaFX & SWT 5
lumo Swing Resize löst probleme...? AWT, Swing, JavaFX & SWT 12
A Swing JPanel mit GridBagLayout Resize-problem AWT, Swing, JavaFX & SWT 1
hdi Swing JFrame Resize nicht in "Echtzeit" AWT, Swing, JavaFX & SWT 4
S Swing JTabbedPane: Resize des JFrame bei Tab wechsel AWT, Swing, JavaFX & SWT 8
B JInternalFrame resize event AWT, Swing, JavaFX & SWT 2
T nach resize transparent weg AWT, Swing, JavaFX & SWT 4
I SWT komponenten resize AWT, Swing, JavaFX & SWT 4
S JFrame instante Resize AWT, Swing, JavaFX & SWT 3
J resize eines Bildes automatisch berechnen lassen? AWT, Swing, JavaFX & SWT 2
D JInternalFrame iconified Position nach parent-resize AWT, Swing, JavaFX & SWT 2
F Resize in ScrollPane AWT, Swing, JavaFX & SWT 4
M nachträglicher resize von frame AWT, Swing, JavaFX & SWT 6
A resize ohne anddauerndes repaint AWT, Swing, JavaFX & SWT 2
T schönes Resize bei eigenem JFrame AWT, Swing, JavaFX & SWT 5
A resize ohne neu zu zeichnen AWT, Swing, JavaFX & SWT 8
C Swing und resize AWT, Swing, JavaFX & SWT 5
R Resize Problem bei JComponent AWT, Swing, JavaFX & SWT 2
P Resize von ScrollPane Inhalten AWT, Swing, JavaFX & SWT 2
A jtable resize AWT, Swing, JavaFX & SWT 6
R resize ImageIcon AWT, Swing, JavaFX & SWT 7
A GUI Komponenten verlieren Proportion bei resize (GBL) AWT, Swing, JavaFX & SWT 4
S Resize Event? AWT, Swing, JavaFX & SWT 2
K Image Resize + zu Byte [] konvertieren AWT, Swing, JavaFX & SWT 5
E Ärger mit ScrollPane, JTable und der Resize-Einstellung AWT, Swing, JavaFX & SWT 2
R JTable, automatischer resize der Zellen nach einer Eingabe AWT, Swing, JavaFX & SWT 4
J JFrame resize in Echtzeit AWT, Swing, JavaFX & SWT 3
B TableLayout - Resize Probleme AWT, Swing, JavaFX & SWT 2
R Autoresize eines Panel nach resize des Frames? AWT, Swing, JavaFX & SWT 3
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
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 Tree-Struktur in einer DB abspeichern AWT, Swing, JavaFX & SWT 15
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

Ähnliche Java Themen

Neue Themen


Oben