Hallo,
bis jetzt habe ich im Internet nur einfache Beispiele mit Tabs gefunden, ich möchte aber mehrere Composite in ein Gridlayout legen und eine Position enthält ein Tab(-folder) genau dieser aber Beansprucht mehr Platz als notwendig. Wenn ich bei den Tabs eine ScrolledComposite verwende habe ich das Problem dass ich für setMinSize(width,height) einen xfach grösseren Wert für den tatsächlich benötigten Platz angebe. Ich würde gerne aber die ScrolledComposite nur verwenden wenn der verbrauchte Platz grösser des verbrauchten Platzes der EltenComposite ist.
Kann mir da einer Helfen ?
bis jetzt habe ich im Internet nur einfache Beispiele mit Tabs gefunden, ich möchte aber mehrere Composite in ein Gridlayout legen und eine Position enthält ein Tab(-folder) genau dieser aber Beansprucht mehr Platz als notwendig. Wenn ich bei den Tabs eine ScrolledComposite verwende habe ich das Problem dass ich für setMinSize(width,height) einen xfach grösseren Wert für den tatsächlich benötigten Platz angebe. Ich würde gerne aber die ScrolledComposite nur verwenden wenn der verbrauchte Platz grösser des verbrauchten Platzes der EltenComposite ist.
Kann mir da einer Helfen ?
Code:
package tabfolderexample;
import java.util.Random;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
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.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
public class Swttab {
private Display display;
private Shell toplvlshell;
private Menu menuBar;
private TabFolder folder;
public static void main(String[] args) {
new Swttab();
}
public Swttab() {
display = new Display();
toplvlshell = new Shell(display);
toplvlshell.setText("Tabfolderexample");
toplvlshell.setLayout(new GridLayout(2, false));
GridLayout gridlayout = new GridLayout(1, false);
GridData griddata = new GridData(GridData.FILL_HORIZONTAL);
toplvlshell.setLayoutData(griddata);
Composite compo1 = new Composite(toplvlshell, SWT.BORDER);
Composite compo2 = new Composite(toplvlshell, SWT.BORDER);
folder = new TabFolder(compo1, SWT.BORDER);
folder.setLayout(new FillLayout());
for (int i = 1; i < 11; i++) {
Composite page1 = createTabPage(folder, "tab" + i);
}
compo1.setLayout(gridlayout);
compo1.setLayoutData(griddata);
GridLayout gridlayout2 = new GridLayout();
gridlayout2 = new GridLayout();
gridlayout2.numColumns = 1;
GridData griddata2 = new GridData();
griddata2.grabExcessHorizontalSpace = false;
Button but = new Button(compo2, SWT.PUSH | SWT.BORDER);
but.setText("Button");
compo2.setLayout(gridlayout2);
compo2.setLayoutData(griddata2);
toplvlshell.setSize(640, 250);
toplvlshell.open();
while (!toplvlshell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
private Composite createTabPage(TabFolder folder, String label) {
TabItem tab = new TabItem(folder, SWT.BORDER);
tab.setText(label);
Composite page = new Composite(folder, SWT.BORDER);
Random r = new Random();
if (r.nextInt() % 2 == 0) {
GridLayout gl = new GridLayout();
gl.numColumns = 1;
GridData gd = new GridData();
gd.grabExcessHorizontalSpace = true;
gd.grabExcessVerticalSpace = true;
gd.horizontalAlignment = SWT.FILL;
page.setLayout(gl);
page.setLayoutData(gd);
Button b = new Button(page, SWT.BORDER);
b.setText("Button No 1");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
toplvlshell.setText("Button was clicked");
}
});
b.setFocus();
b = new Button(page, SWT.BORDER);
b.setText("Button No 2");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
toplvlshell.setText("Button No 2 was clicked");
}
});
} else {
GridLayout gl = new GridLayout();
gl.numColumns = 1;
GridData gd = new GridData();
gd.grabExcessHorizontalSpace = true;
gd.grabExcessVerticalSpace = true;
gd.horizontalAlignment = SWT.FILL;
page.setLayout(gl);
page.setLayoutData(gd);
Label label1 = new Label(page, SWT.BORDER);
label1.setText("NoGUI --");
}
tab.setControl(page);
return page;
}
}