Hey,
ich hab da eine kleine GUI, leider ist mir (offensichtlich) nicht klar, wie dieses FormLayout funktioniert...
Ziel ist:
lName tfObjectName
cbAbstract lCardinalities tfMin tfMax
lAttributeTypes
table
bAdd bDelete
bAccept bAbort
Die buttons bAdd, bDelete, bAccept und bAbort unten werden schon richtig angezeigt.
Die table hängt auch darüber.
Alles was weiter oben ist wird irgendwie nicht/ganz komisch angezeigt..
tfMin und tfMax sollen gleich breit sein und den rest der "zeile" ausfüllen.
Wäre ein GridLayout vllt. besser? Ich hab gelesen, das sich beim FormLayout die Komponenten nicht von selbst anpassen?
Hier ein kleines Beispiel meiner GUI. Wenn man sich die anweisungen für das vermurkste layout wegdenkt ists ja auch nicht soo viel
Ciao
/edit: hier meine lösung, falls das mal jemand braucht
ich hab da eine kleine GUI, leider ist mir (offensichtlich) nicht klar, wie dieses FormLayout funktioniert...
Ziel ist:
lName tfObjectName
cbAbstract lCardinalities tfMin tfMax
lAttributeTypes
table
bAdd bDelete
bAccept bAbort
Die buttons bAdd, bDelete, bAccept und bAbort unten werden schon richtig angezeigt.
Die table hängt auch darüber.
Alles was weiter oben ist wird irgendwie nicht/ganz komisch angezeigt..
tfMin und tfMax sollen gleich breit sein und den rest der "zeile" ausfüllen.
Wäre ein GridLayout vllt. besser? Ich hab gelesen, das sich beim FormLayout die Komponenten nicht von selbst anpassen?
Hier ein kleines Beispiel meiner GUI. Wenn man sich die anweisungen für das vermurkste layout wegdenkt ists ja auch nicht soo viel
Ciao
/edit: hier meine lösung, falls das mal jemand braucht
Code:
package tableTest2;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
public class Test {
public static void main(String[] args) {
Shell shell = new Shell();
// Set layout for shell
shell.setLayout(new FormLayout());
shell.setSize(500, 300);
// Create a composite to hold the children
Composite composite = new Composite(shell, SWT.NONE);
new Test(composite);
shell.pack();
shell.open();
Display display = shell.getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
private Button cbAbstract;
// Set column names
private String[] columnNames = { "value", "type" };
private Table table;
private Text tfMax;
private Text tfMin;
private Text tfObjectName;
public Test(final Composite parent) {
parent.setLayout(new FormLayout());
final Button bAccept;
final Button bAbort;
final Button bAdd;
final Button bDelete;
final Label lName;
final Label lCardinalities;
final Label lAttributeTypes;
final Composite cards = new Composite(parent, SWT.NULL);
cards.setLayout(new FormLayout());
// create components
{
// numb labels
lName = new Label(parent, SWT.NULL);
lCardinalities = new Label(parent, SWT.NULL);
lAttributeTypes = new Label(parent, SWT.NULL);
lName.setText("Name:");
lCardinalities.setText("Cardinalities:");
lAttributeTypes.setText("AttributeTypes:");
// buttons and fields
tfObjectName = new Text(parent, SWT.BORDER);
cbAbstract = new Button(parent, SWT.CHECK);
tfMin = new Text(cards, SWT.BORDER);
tfMax = new Text(cards, SWT.BORDER);
// create the table
{
table = new Table(parent, SWT.SINGLE | SWT.BORDER
| SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION
| SWT.HIDE_SELECTION);
table.setLinesVisible(true);
table.setHeaderVisible(true);
TableColumn column = new TableColumn(table, SWT.LEFT, 0);
column.setText(columnNames[0]);
column.setWidth(450 / 2);
column = new TableColumn(table, SWT.LEFT, 1);
column.setText(columnNames[1]);
column.setWidth(450 / 2);
}
bAdd = new Button(parent, SWT.PUSH | SWT.CENTER);
bDelete = new Button(parent, SWT.PUSH | SWT.CENTER);
bAccept = new Button(parent, SWT.PUSH | SWT.CENTER);
bAbort = new Button(parent, SWT.PUSH | SWT.CENTER);
cbAbstract.setText("Abstract?");
bAccept.setText("Accept");
bAbort.setText("Abort");
bAdd.setText("Add");
bDelete.setText("Delete");
}
// layout components
{
FormData data = new FormData();
// center vertically, to top of tfObjectName!
data.top = new FormAttachment(tfObjectName, 0, SWT.CENTER);
data.left = new FormAttachment(0, 0);
data.bottom = new FormAttachment(cbAbstract);
lName.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(lName, 5);
data.right = new FormAttachment(100, 0);
tfObjectName.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(tfObjectName, 5);
data.left = new FormAttachment(0, 0);
cbAbstract.setLayoutData(data);
data = new FormData();
// center vertically, to top of cards!
data.top = new FormAttachment(cards, 5, SWT.CENTER);
data.left = new FormAttachment(cbAbstract, 5);
lCardinalities.setLayoutData(data);
data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(50, 2);
tfMin.setLayoutData(data);
data = new FormData();
data.left = new FormAttachment(tfMin, 3);
data.right = new FormAttachment(100, 0);
tfMax.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(tfObjectName, 5);
data.left = new FormAttachment(lCardinalities, 5);
data.right = new FormAttachment(100, 0);
cards.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(cbAbstract, 5);
data.left = new FormAttachment(0, 0);
lAttributeTypes.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(lAttributeTypes, 5);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(bAdd);
data.height = 220;
table.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(bAdd);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(50, 0);
bAccept.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(bDelete);
data.left = new FormAttachment(bAccept);
data.right = new FormAttachment(100, 0);
bAbort.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(table);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(50, 0);
bAdd.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(table);
data.left = new FormAttachment(bAdd);
data.right = new FormAttachment(100, 0);
bDelete.setLayoutData(data);
data = new FormData();
data.top = new FormAttachment(0, 5);
data.bottom = new FormAttachment(100, -5);
data.left = new FormAttachment(0, 5);
data.right = new FormAttachment(100, -5);
parent.setLayoutData(data);
parent.layout(true, true);
parent.setTabList(new Control[] { tfObjectName, cbAbstract, cards,
table, bAdd, bDelete, bAccept, bAbort });
cards.setTabList(new Control[] { tfMin, tfMax });
}
}
}