SWT - Simples Layout Problem

Status
Nicht offen für weitere Antworten.

Solour

Aktives Mitglied
Hey,

ich versuch jetzt seid mehr als einer stunde diese zwei buttons vernünftig zu layouten...
die sollen einfach beide gleichbreit sein _und_ zusammen so breit wie das fenster sein.
eigentlich nicht so schwer vom gedanken her... aber in SWT.. :bahnhof:

hoffentlich kennt sich da jemand besser aus als ich :D

ciao

Code:
	public void show() {
		final Display display = new Display();
		final Shell shell = new Shell(display);
		shell.setSize(350, 280);
		shell.setLayout(new RowLayout());
		
		final Button bAccept;
		final Button bAbort;
		{
			final Composite buttonArea = new Composite(shell, SWT.NULL);
			bAccept = new Button(buttonArea, SWT.PUSH);
			bAccept.setText("Accept");
			GridData gd = new GridData();
			gd.horizontalAlignment = SWT.FILL;
			gd.grabExcessHorizontalSpace = true;
			bAccept.setLayoutData(gd);
			bAbort = new Button(buttonArea, SWT.PUSH);
			bAbort.setText("Abort");
			gd = new GridData();
			gd.horizontalAlignment = SWT.FILL;
			gd.grabExcessHorizontalSpace = true;
			bAccept.setLayoutData(gd);

			GridLayout gridLayout = new GridLayout();
			buttonArea.setLayout(gridLayout);
			gridLayout.numColumns = 2;
			buttonArea.layout(true, true);
		}
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	public static void main(String[] args) {
		new SWT_TEST().show();
	}
 

byte

Top Contributor
Code:
...
buttonArea.setLayout(new FormLayout());

FormData data = new FormData();
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(50, 0);
bAccept.setLayoutData(data);

data = new FormData();
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(bAccept, 0);
data.right = new FormAttachment(100, 0);
bAbort.setLayoutData(data);
 

Solour

Aktives Mitglied
Hey,

leider ist SWT immernoch ne totale black box für mich :)
dein code wird sicher funktionieren, aber was sind die ... ??

Code:
	public void show() {
		final Display display = new Display();
		final Shell shell = new Shell(display);
		shell.setSize(350, 280);
		shell.setLayout(new RowLayout());
		
		final Button bAccept;
		final Button bAbort;
		{
			final Composite buttonArea = new Composite(shell, SWT.NULL);
			bAccept = new Button(buttonArea, SWT.PUSH);
			bAccept.setText("Accept");
			bAbort = new Button(buttonArea, SWT.PUSH);
			bAbort.setText("Abort");
			
			buttonArea.setLayout(new FormLayout());

			FormData data = new FormData();
			data.top = new FormAttachment(0, 0);
			data.left = new FormAttachment(0, 0);
			data.right = new FormAttachment(50, 0);
			bAccept.setLayoutData(data);

			data = new FormData();
			data.top = new FormAttachment(0, 0);
			data.left = new FormAttachment(bAccept, 0);
			data.right = new FormAttachment(100, 0);
			bAbort.setLayoutData(data);
			
			buttonArea.layout(true, true);
		}
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	public static void main(String[] args) {
		new SWT_TEST().show();
	}
 

Solour

Aktives Mitglied
hey,

in deiner zeile 1 :p
ich weiß nicht was ich sonst tun muss, um dein code-snippet zu verwenden..

ciao
 

byte

Top Contributor
Achso das meinst Du. Die Frage erübrigt sich eigtl. denn der Code von Dir sieht doch gut aus. Lass es doch mal laufen, sollte funktionieren. ;)
 

Solour

Aktives Mitglied
hehe

ich hätt den code nicht gepostet, wenn es klappen würd :)

die hocken beide in der oberen linken ecke..
also
-----------------------------------------------------
| Abort | Accept |
----------------------
|
|
|
|----------------------------------------------------

was ich z.b. überhaupt nicht weiß:
  • muss SWT.NULL beim composite erstellen sein, oder doch etwas anderes?
  • muss man die composite-größe setzen?
 

byte

Top Contributor
Dann gib der Shell doch auch ein FormLayout und ziehe das Composite über das ganze Fenster:

Code:
shell.setLayout(new FormLayout());

...

data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachmen(100, 0);
data.bottom = new FormAttachment(100, 0);
buttonArea.setLayoutData(data);
 

Solour

Aktives Mitglied
uff...

das hatte sogar so irgendwie geklappt..
aber ich hab mein problem vermutlich etwas zu stark vereinfacht:
so soll es aussehen:
Code:
-------------------------------------------------------|
|                                                      |
|                                                      |
|                 SWT_AWT bridge                       |
|                                                      |
|                                                      |
|------------------------------------------------------|
|        Abort           |                   Accept    |
-------------------------------------------------------|
aber es sieht so aus:
Code:
-------------------------------------------------------|
|                                                      |
|                                                      |
|                 SWT_AWT bridge                       |
|                                                      |
|                                                      |
|------------------------------------------------------|
|        Abort           |                   Accept    |
-------------------------------------------------------|
|                                                      |
|                                                      |
|                                                      |
|------------------------------------------------------|
also das untere ding sollte eigentlich am unteren rand hängen..
ja ich weiß, das snippet ist schon seehr groß.. tut mir leid.. :/

hoffentlich hat da einer noch ne idee :?

Code:
public class SWT_TEST2 {

	private static SWT_TEST2 instance = null;

	public static SWT_TEST2 getInstance(Shell sh) {
		if (instance == null || instance.getShell().isDisposed())
			instance = new SWT_TEST2(sh, "Editor");
		return instance;
	}

	private Shell dialog;

	private SWT_TEST2(final Shell sh, String title) {
		dialog = new Shell(sh, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
		dialog.setSize(500, 300);
		dialog.setLayout(new FormLayout());
		final Composite cBridge;
		{
			cBridge = new Composite(dialog, SWT.EMBEDDED);
			final Frame f = SWT_AWT.new_Frame(cBridge);
			// f.add(mainPanel);
			JPanel pan = new JPanel();
			JButton bButton1 = new JButton("Button1");
			JButton bButton2 = new JButton("Button2");
			pan.add(bButton1);
			pan.add(bButton2);
			f.add(pan);
			f.setVisible(true);
			f.pack();
			FormData data = new FormData();
			data.top = new FormAttachment(0, 0);
			data.left = new FormAttachment(0, 0);
			data.right = new FormAttachment(100, 0);
			cBridge.setLayoutData(data);
		}
		final Button bAccept;
		final Button bAbort;
		{
			final Composite buttonArea = new Composite(dialog, SWT.NULL);
			bAccept = new Button(buttonArea, SWT.PUSH);
			bAccept.setText("Accept");
			bAbort = new Button(buttonArea, SWT.PUSH);
			bAbort.setText("Abort");

			buttonArea.setLayout(new FormLayout());

			FormData data = new FormData();
			data.top = new FormAttachment(0, 0);
			data.left = new FormAttachment(0, 0);
			data.right = new FormAttachment(50, 0);
			bAccept.setLayoutData(data);

			data = new FormData();
			data.top = new FormAttachment(0, 0);
			data.left = new FormAttachment(bAccept, 0);
			data.right = new FormAttachment(100, 0);
			bAbort.setLayoutData(data);

			data = new FormData();
			data.top = new FormAttachment(cBridge);
			data.left = new FormAttachment(0, 0);
			data.right = new FormAttachment(100, 0);
			data.bottom = new FormAttachment(100, 0);
			buttonArea.setLayoutData(data);
			buttonArea.layout(true, true);
		}
		Listener listener = new Listener() {
			public void handleEvent(Event event) {
				if (event.widget == bAccept) {
					tearDown(true);
				} else if (event.widget == bAbort) {
					tearDown(false);
				}
			}
		};
		bAccept.addListener(SWT.Selection, listener);
		bAbort.addListener(SWT.Selection, listener);
		dialog.setLocation(0, 0);
	}

	public Shell getShell() {
		return dialog;
	}

	private boolean accepted = false;

	private void tearDown(boolean accepted) {
		this.accepted = accepted;
		dialog.setVisible(false);
	}

	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		SWT_TEST2 dialog = SWT_TEST2.getInstance(shell);
		Shell dialogShell = dialog.getShell();
		dialogShell.open();
		while (!dialogShell.isDisposed() && dialogShell.isVisible())
			if (!display.readAndDispatch())
				display.sleep();
	}

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A simples programm funzt net AWT, Swing, JavaFX & SWT 7
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
F JScrollPane verwirft Layout von JPanel AWT, Swing, JavaFX & SWT 2
C LayoutManager Layout und vergrößern des Frames AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5
A Ungewollte Layout änderungen AWT, Swing, JavaFX & SWT 3
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
E JPanel mit Null Layout entfernt Buttons AWT, Swing, JavaFX & SWT 11
N Swing Layout positionieren AWT, Swing, JavaFX & SWT 2
B Methode setzt nicht das Layout in einer if-Abfrage AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben