Home » Eclipse Projects » Standard Widget Toolkit (SWT) » Aligning widgets within different composites
Aligning widgets within different composites [message #538607] |
Tue, 08 June 2010 04:03  |
Eclipse User |
|
|
|
Hello all
Say I have a form with 3 columns.
I want to group say the bottom two rows into an SWT Group widget.
How do I tell the bottom two rows that they have to have the same column
size as the columns above, when they belong to a different parent and have a
different gridlayout object?
Poorly drawn ASCII example:
x x
x x
x x
yy yy
yy yy
The y's are the grouped widgets. They have their own GridLayout (set on the
Group composite). I want the column width to be the same for both sets of
widgets, e.g
x x
x x
x x
yy yy
yy yy
Thanks!
Greg
|
|
| | |
Re: Aligning widgets within different composites [message #538650 is a reply to message #538644] |
Tue, 08 June 2010 06:38   |
Eclipse User |
|
|
|
the double y represent a composite containing two buttons....
i understand that..now after seeing between the lines,the solution would be
package org.eclipse.swt.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
public class Snippet
{
static Display display;
static Shell shell;
public static void main(String[] args)
{
display = new Display();
shell = new Shell(display);
shell.setSize(300, 300);
shell.open();
shell.setLayout(new GridLayout(5, true));
for (int i = 0; i < 15; i++)
{
Button button = new Button(shell, SWT.PUSH);
button.setText("B" + (i + 1));
GridData layoutData = new GridData();
layoutData.grabExcessHorizontalSpace = true;
button.setLayoutData(layoutData);
}
Composite composite = new Group(shell, SWT.NONE);
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
composite.setLayout(new GridLayout(2, false));
GridData layoutData = new GridData();
Button button = new Button(composite, SWT.PUSH);
button.setText("B16");
Button button1 = new Button(composite, SWT.PUSH);
button1.setText("B17");
composite.setLayoutData(layoutData);
Composite composite1 = new Group(shell, SWT.NONE);
composite1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
composite1.setLayout(new GridLayout(2, false));
GridData layoutData1 = new GridData();
Button button11 = new Button(composite1, SWT.PUSH);
button11.setText("B16");
Button button12 = new Button(composite1, SWT.PUSH);
button12.setText("B17");
composite1.setLayoutData(layoutData);
shell.layout();
while (!shell.isDisposed())
{
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
changing
GridData layoutData = new GridData();
layoutData.grabExcessHorizontalSpace = true;
button.setLayoutData(layoutData);
to
GridData layoutData = new GridData(GridData.FILL_HORIZONATL);
button.setLayoutData(layoutData);
also would be what u want...
[Updated on: Tue, 08 June 2010 06:40] by Moderator
|
|
|
Re: Aligning widgets within different composites [message #538665 is a reply to message #538650] |
Tue, 08 June 2010 07:32   |
Eclipse User |
|
|
|
You'll notice in this example the columns are aligned with the group, not
the button within the group.
I need to align the widgets (buttons in this example) in the groups, to the
widgets in another control (for example the parent composite, the section
above the groups in the example).
Here is a diagram of what I am trying to achieve:
y y
---------
| x x |
---------
The y's need to be aligned with the x's in the group.
Let me know if you do not understand the question.
"vijay" <vijay.rajonline@gmail.com> wrote in message
news:hul6io$53c$1@build.eclipse.org...
> the double y represent a composite containing two buttons....
>
> i understand that..now after seeing between the lines,the solution would
> be
>
> package org.eclipse.swt.snippets;
>
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.layout.GridData;
> import org.eclipse.swt.layout.GridLayout;
> import org.eclipse.swt.widgets.Button;
> import org.eclipse.swt.widgets.Composite;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Group;
> import org.eclipse.swt.widgets.Shell;
>
> public class Snippet
> {
> static Display display;
>
> static Shell shell;
>
> public static void main(String[] args)
> {
> display = new Display();
> shell = new Shell(display);
> shell.setSize(300, 300);
> shell.open();
> shell.setLayout(new GridLayout(5, true));
> for (int i = 0; i < 15; i++)
> {
> Button button = new Button(shell, SWT.PUSH);
> button.setText("B" + (i + 1));
> GridData layoutData = new GridData();
> layoutData.grabExcessHorizontalSpace = true;
> button.setLayoutData(layoutData);
> }
> Composite composite = new Group(shell, SWT.NONE);
> composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
> true));
> composite.setLayout(new GridLayout(2, false));
> GridData layoutData = new GridData();
>
> Button button = new Button(composite, SWT.PUSH);
> button.setText("B16");
> Button button1 = new Button(composite, SWT.PUSH);
> button1.setText("B17");
> composite.setLayoutData(layoutData);
>
> Composite composite1 = new Group(shell, SWT.NONE);
> composite1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
> true));
> composite1.setLayout(new GridLayout(2, false));
> GridData layoutData1 = new GridData();
>
> Button button11 = new Button(composite1, SWT.PUSH);
> button11.setText("B16");
> Button button12 = new Button(composite1, SWT.PUSH);
> button12.setText("B17");
> composite1.setLayoutData(layoutData);
> shell.layout();
> while (!shell.isDisposed())
> {
> if (!display.readAndDispatch()) display.sleep();
> }
> display.dispose();
> }
> }
>
> --
> ---------------------
> why, mr. Anderson, why, why do you persist?
> Because I Choose To.
> Regards,
> Vijay
|
|
|
Re: Aligning widgets within different composites [message #538679 is a reply to message #538665] |
Tue, 08 June 2010 08:10   |
Eclipse User |
|
|
|
ok now i got u r requirement
Quote: | package org.eclipse.swt.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
public class Snippet
{
static Display display;
static Shell shell;
public static void main(String[] args)
{
display = new Display();
shell = new Shell(display);
shell.setSize(300, 300);
shell.open();
shell.setLayout(new GridLayout(5, true));
GridData layoutData = new GridData(SWT.CENTER, SWT.TOP, true, false);
// layoutData.widthHint = 20;
for (int i = 0; i < 15; i++)
{
Button button = new Button(shell, SWT.PUSH);
button.setText("B" + (i + 1));
button.setLayoutData(layoutData);
}
GridData layoutData1 = new GridData(GridData.FILL_HORIZONTAL);
layoutData1.horizontalSpan = 2;
Composite composite = new Group(shell, SWT.NONE);
composite.setLayoutData(layoutData1);
GridLayout layout = new GridLayout(2, false);
layout.marginHeight = 0;
layout.marginWidth = 0;
composite.setLayout(layout);
Button button = new Button(composite, SWT.PUSH);
button.setText("B16");
button.setLayoutData(layoutData);
Button button1 = new Button(composite, SWT.PUSH);
button1.setText("B17");
button1.setLayoutData(layoutData);
Composite composite1 = new Group(shell, SWT.NONE);
composite1.setLayoutData(layoutData1);
composite1.setLayout(layout);
Button button11 = new Button(composite1, SWT.PUSH);
button11.setText("B16");
button11.setLayoutData(layoutData);
Button button12 = new Button(composite1, SWT.PUSH);
button12.setText("B17");
button12.setLayoutData(layoutData);
shell.layout();
while (!shell.isDisposed())
{
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
|
this is the closest it can get....
if u want a perfect dynamic match,i think it would not be possible...
by the way i am the same guy answering "Getting column width from GridLayout " query
thats why i told u forget that query concentrate on this one...
(i am just trying to help )
|
|
| | | | |
Goto Forum:
Current Time: Thu Jul 03 08:25:47 EDT 2025
Powered by FUDForum. Page generated in 0.10203 seconds
|