Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize()
Beiträge zu diesem Thema Autor Datum
 Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Matze84 16.12.2013 16:15
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() eulerscheZahl 16.12.2013 18:25
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Matze84 17.12.2013 10:26
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() eulerscheZahl 17.12.2013 16:13
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Matze84 19.12.2013 18:13
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Matze84 22.12.2013 23:49
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Matze84 23.12.2013 01:54
 RE: Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Matze84 23.12.2013 02:00

Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize() Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo zusammen.

Ich bins mal wieder.

Ich habe in Java mit dem SWT eine GUI zu programmieren.

da drin habe ich
die shell
code:
1:
2:
3:
4:
shell = new Shell();
		shell.setSize(784, 616);
		shell.setText("SWT Application");
		shell.setLayout(new FormLayout());

ein Textfeld Widget
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
txtSuchtext = new Text(shell, SWT.BORDER);
		FormData fd_txtSuchtext = new FormData();
		fd_txtSuchtext.right = new FormAttachment(0, 191);
		fd_txtSuchtext.top = new FormAttachment(0, 10);
		fd_txtSuchtext.left = new FormAttachment(0, 10);
		txtSuchtext.setLayoutData(fd_txtSuchtext);
		txtSuchtext.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if(e.keyCode == SWT.CR){
					browserBrowser.setUrl(Wikipedia.getUrl(txtSuchtext.getText()));
					txtSuchtext.setText("");
				}
			}
		});


einen Button Widget
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
btnSuchen = new Button(shell, SWT.NONE);
		FormData fd_btnSuchen = new FormData();
		fd_btnSuchen.bottom = new FormAttachment(0, 31);
		fd_btnSuchen.right = new FormAttachment(0, 272);
		fd_btnSuchen.top = new FormAttachment(0, 10);
		fd_btnSuchen.left = new FormAttachment(0, 197);
		btnSuchen.setLayoutData(fd_btnSuchen);
		btnSuchen.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				browserBrowser.setUrl(Wikipedia.getUrl(txtSuchtext.getText()));
				txtSuchtext.setText("");
			}
		});
btnSuchen.setText("Suchen");

und ein Browser Widget
code:
1:
2:
3:
4:
5:
6:
7:
browserBrowser = new Browser(shell, SWT.NONE);
		FormData fd_browserBrowser = new FormData();
		fd_browserBrowser.bottom = new FormAttachment(100, -10);
		fd_browserBrowser.right = new FormAttachment(0, 758);
		fd_browserBrowser.top = new FormAttachment(0, 37);
		fd_browserBrowser.left = new FormAttachment(0, 10);
		browserBrowser.setLayoutData(fd_browserBrowser);


In der Wikipedia Klasse steht:
code:
1:
2:
3:
4:
5:
6:
public class Wikipedia {

	public static String getUrl(String _searchTerm){
		return "http://de.wikipedia.org/wiki/"+_searchTerm;
	}
}


nun möchte ich, dass wenn ich das Fenster (shell) größer mache, dass das Browser Widget dadurch auch automatisch größer wird.
(bisher funktioniert das nur für die Höhe)

Vielleicht kann mir jmd das Prinzip erklären oder einen Link geben, damit ich dass dann verstehe und selbst umsetzen kann...

Lg Matze
16.12.2013 16:15 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,
ich konnte meinen Vorschlag leider nicht testen (Cannot load 32-bit SWT libraries on 64-bit JVM, ich bin zu faul, die passende Einstellung zu finden), aber was mir spontan einfällt:
Das Resize-Event der entsprechenden Komponente - hier also der shell - abzufangen.
etwa so (Quelle java2s.com):
code:
1:
2:
3:
4:
5:
  shell.addListener (SWT.Resize,  new Listener () {
    public void handleEvent (Event e) {
      fd_browserBrowser.setSize(shell.getSize().x - delta_x, shell.getSize().y - delta_y);
    }
  });


__________________
Syntax Highlighting fürs Board (Link)
16.12.2013 18:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

sowas ähnliches habe ich mir schon gedacht...
wie sähe denn dabei dein delta_x bzw delta_y genau aus?
Also wo kommt das her? (oder hat dieses handleEvent das automatisch!?)
(habe noch nicht geschafft reinzuschauen, das werde ich erst heute Abend schaffen)


Ich wollte aber, dass auch der Button und der Text kleiner wird, damit es auf allen Auflösungen/Display-Größen annähernd gleich aussieht, weil wenn ich das Fenster ziemlich klein mache, verschwindet irgendwann der Button.
(Ich weiß das hab ich im Ursprungsthread nicht so formuliert)

Ich hatte gehofft dass es ein LayoutManager gibt der da ein paar Einstellungen benötigt, damit er das "von allein" macht.

Sprich: sich alle Widgets holt und alle entsprechend verkleinert.

Mir würde auch reichen, dass dann am Rand solche Scrollbars auftauchen, damit das ganze hin und her geschoben werden kann.



PS: wie ihr sicher bemerkt habt, bin ich neu in der GUI-Programmierung und Java kenne ich auch erst ca 5Monate verwirrt (Studium halt)
deswegen: habt erbarmen mit mir Gott

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Matze84: 17.12.2013 10:27.

17.12.2013 10:26 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

delta_x und delta_y waren von mir als Platzhalter für eine feste Zahl in Pixeln gedacht.

In html werden gerne relative Größen angegeben, abgestimmt auf die Bildschirmgröße bzw. Fenstergröße.
Ich Java dann so:
fd_browserBrowser.setSize((int)shell.getSize().x * 0.75), (int)(shell.getSize().y * 0.80));

Von einer Möglichkeit, das automatisch anzupassen weiß ich nichts, was aber nicht heißen muss, dass es das nicht gibt.

__________________
Syntax Highlighting fürs Board (Link)
17.12.2013 16:13 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

das funktioniert schon mal gut!
Danke....

da müsste es aber auch noch was über die LayoutManager geben, weil es am Ende unseres Aufgabenblockes mehr oder weniger so verlangt wird.
19.12.2013 18:13 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe endlich rausgefunden, wie das "automatische" Resize von Widgets geht, mittels Layouts...


Die Seite ist auf englisch, aber wie ich finde trotzdem sehr gut zu verstehen, nachzuvollziehen, weil es reichlich Beispiele gibt.

http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layo
uts/index.html
22.12.2013 23:49 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So ich bin immernoch bei meiner GUI
(gott sei Dank fast fertig)

Aber ich habe im Moment ein Problem...

Im Quickstarter von eclipse, wo er es nicht compilet und quasi nur schnell anzeigt, wie es aussieht, sieht mein Program so aus:
Bild 1
So soll es auch aussehen!

Wenn ich dann aber starte (also Run As java Application)
sieht das Programm erstmal so aus.

Bild 2
Das Browser-Widget überdeckt quasi den Synonym-Teil in der "sashForm"

Erst wenn ich die Größe des Fensters ändere, sieht es so aus, wie es soll.

hier ist mal der Code (für die Darstellung)

Ich habs in eine textDatei gepackt, weil es sonst ein bisschen viel wäre.

Code zum Projekt

Vielleicht weiß, sieht, findet jemand herraus woran das liegen könnte.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Matze84: 23.12.2013 01:55.

23.12.2013 01:54 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Fehler gefunden Zunge raus LOL Hammer böse großes Grinsen

In Zeile 161 der ResizeListener, den du (eulersche Zahl) mir geschrieben hast, hat das so verschoben, ich hatte nur vergessen ihn zu löschen.

Dann mal Gute Nacht. Tanzen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Matze84: 23.12.2013 02:00.

23.12.2013 02:00 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » Java - GUI - dynamisches ändern der Widgetgröße beim Fenster.Resize()