CASE 1
// Class definition
public class MovablePanel extends Composite{
protected Label
labelHeader;
protected Composite compositeHeader;
public
Composite compositeContent;
public
MovablePanel(Composite parent, int style){
super(parent,
style);
setLayout(new
FormLayout());
FormData
formData;
compositeHeader = new Composite(this,
SWT.BORDER);
labelHeader = new
Label(compositeHeader, SWT.NONE);
labelHeader.setText("Nazwa
panelu");
labelHeader.pack();
formData = new
FormData();
formData.left = new FormAttachment(0,
5);
formData.top = new FormAttachment(0,
5);
labelHeader.setLayoutData(formData);
formData
= new FormData();
formData.left = new FormAttachment(0,
0);
formData.right = new FormAttachment(100,
0);
formData.top = new FormAttachment(0,
0);
compositeHeader.setLayoutData(formData);
compositeContent
= new Composite(this, SWT.BORDER);
formData = new
FormData();
formData.left = new FormAttachment(0,
0);
formData.right = new FormAttachment(100,
0);
formData.top = new FormAttachment(compositeHeader,
0);
formData.bottom = new FormAttachment(100,
0);
compositeContent.setLayoutData(formData);
compositeContent.setLayout(new
FormLayout());
Text text = new
Text(compositeContent,
SWT.SINGLE);
text.setText("123");
formData = new
FormData();
formData.left = new FormAttachment(0,
5);
formData.right = new FormAttachment(100,
-5);
formData.top = new FormAttachment(0,
5);
formData.bottom = new FormAttachment(100,
-5);
text.setLayoutData(formData);
}
}
// Creating instance
MovablePanel panel = new MovablePanel(shell,
SWT.BORDER);
panel.setBounds(0, 0, 300, 150);
//----------------------
CASE 2
// Class definition
public class MovablePanel extends Composite{
protected Label
labelHeader;
protected Composite compositeHeader;
public
Composite compositeContent;
public
MovablePanel(Composite parent, int style){
super(parent,
style);
setLayout(new
FormLayout());
FormData
formData;
compositeHeader = new Composite(this,
SWT.BORDER);
labelHeader = new
Label(compositeHeader, SWT.NONE);
labelHeader.setText("Nazwa
panelu");
labelHeader.pack();
formData = new
FormData();
formData.left = new FormAttachment(0,
5);
formData.top = new FormAttachment(0,
5);
labelHeader.setLayoutData(formData);
formData
= new FormData();
formData.left = new FormAttachment(0,
0);
formData.right = new FormAttachment(100,
0);
formData.top = new FormAttachment(0,
0);
compositeHeader.setLayoutData(formData);
compositeContent
= new Composite(this, SWT.BORDER);
formData = new
FormData();
formData.left = new FormAttachment(0,
0);
formData.right = new FormAttachment(100,
0);
formData.top = new FormAttachment(compositeHeader,
0);
formData.bottom = new FormAttachment(100,
0);
compositeContent.setLayoutData(formData);
compositeContent.setLayout(new
FormLayout());
}
}
// Creating instance
FormData
formData;
MovablePanel panel = new
MovablePanel(shell, SWT.BORDER);
panel.setBounds(0, 0, 300,
150);
Text text = new
Text(panel.compositeContent,
SWT.SINGLE);
text.setText("123");
formData = new
FormData();
formData.left = new FormAttachment(0,
5);
formData.right = new FormAttachment(100,
-5);
formData.top = new FormAttachment(0,
5);
formData.bottom = new FormAttachment(100,
-5);
text.setLayoutData(formData);
//----------------------
As you can see in first case it works fine, but in second case Text
Control is doesn't displayed. When i try adjust Text position and size with
text.setBounds(), it works, but I have to use FormLayout. I guess the reason
of Control behavior is invalid use of FormData, but I can't find what's
wrong.
Any
ideas?