hallo,
ziel:
eine shell erstellen auf der ein scrolledcomposite (oder ähnliches) liegt.
in dieser composite sollen dann buttons (swt.check) generiert werden.
im prinzip sowas wie ein combo, nur dass die einträge nicht ausgewählt werden, sondern selektiert (also per chheckbox)
da ich sowas fertig nicht gefunden habe... hab ich mich dran gemacht.
so weit so gut.
mein problem ist, dass egal welches layout ich zuweise, der inhalt NICHT über die ganze breite des scrolledcomposite rüber geht. sondern den linken rand ausfüllt und rechts davon ist alles frei...
wsa ich bis jetzt gemacht habe ist folgendes:
ich habe den Code des CCombo genommen und die intern verwendete swt.list in meine eigene CheckListe ersetzt, was gut funktioniert. (1-2 funktionen machen zwar keinen sinn, werden aber auch nicht verwendet)
der code wird auf/ausgeräumt, wenn das teil läuft
um den code minimal zu halten hier mal das problem in ein kleines programm rausgarbeitet:
die shell die das popup macht (ja, mit controls,damit man sie leichter schließen kann beim testen
)
im screenshot seht ihr (nicht: grün die shell) blau die scrollcomposite, und rot die composite wo die ganzen buttons rauf kommen
gibts eine andere lösung zu meinem problem?
oder kann mir emand meinen fehler zeigen?
danke schon mal
lumo
ziel:
eine shell erstellen auf der ein scrolledcomposite (oder ähnliches) liegt.
in dieser composite sollen dann buttons (swt.check) generiert werden.
im prinzip sowas wie ein combo, nur dass die einträge nicht ausgewählt werden, sondern selektiert (also per chheckbox)
da ich sowas fertig nicht gefunden habe... hab ich mich dran gemacht.
so weit so gut.
mein problem ist, dass egal welches layout ich zuweise, der inhalt NICHT über die ganze breite des scrolledcomposite rüber geht. sondern den linken rand ausfüllt und rechts davon ist alles frei...
wsa ich bis jetzt gemacht habe ist folgendes:
ich habe den Code des CCombo genommen und die intern verwendete swt.list in meine eigene CheckListe ersetzt, was gut funktioniert. (1-2 funktionen machen zwar keinen sinn, werden aber auch nicht verwendet)
der code wird auf/ausgeräumt, wenn das teil läuft
um den code minimal zu halten hier mal das problem in ein kleines programm rausgarbeitet:
die shell die das popup macht (ja, mit controls,damit man sie leichter schließen kann beim testen
Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Popup extends Shell {
/**
* Launch the application.
*
* @param args
*/
public static void main(String args[]) {
try {
Display display = Display.getDefault();
Popup shell = new Popup(display);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the shell.
*
* @param display
*/
public Popup(Display display) {
super(display, SWT.DIALOG_TRIM);
GridLayout gridLayout = new GridLayout(1, false);
gridLayout.marginWidth = 0;
gridLayout.verticalSpacing = 0;
gridLayout.horizontalSpacing = 0;
gridLayout.marginHeight = 0;
setLayout(gridLayout);
setBackground(Display.getDefault().getSystemColor(SWT.COLOR_GREEN));
createContents();
}
/**
* Create contents of the shell.
*/
protected void createContents() {
setText("SWT Application");
setSize(450, 300);
MyCheckList checkList = new MyCheckList(this, SWT.NONE);
GridData grid = new GridData(SWT.FILL, SWT.FILL, true, true, 1,
1);
grid.heightHint = 0;
grid.widthHint = 0;
checkList.setLayoutData(grid);
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
}
Java:
import org.eclipse.swt.SWT;
public class MyCheckList extends ScrolledComposite {
/**
* Create the composite.
*
* @param parent
* @param style
*/
public MyCheckList(Composite popup_shell, int style) {
super(popup_shell, style | SWT.V_SCROLL);
setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLUE));
setExpandVertical(true);
// auf das composite kommen dann die buttons drauf
Composite composite = new Composite(this, SWT.NONE);
composite.setBackground(Display.getDefault().getSystemColor(
SWT.COLOR_RED));
GridLayout grid = new GridLayout(1, false);
grid.horizontalSpacing = 0;
grid.marginWidth = 0;
grid.verticalSpacing = 0;
grid.marginHeight = 0;
composite.setLayout(grid);
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
composite.pack();
Button button = new Button(composite, SWT.CHECK);
button.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1,
1));
button.setText("Check Button");
Button button_1 = new Button(composite, SWT.CHECK);
button_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false,
1, 1));
button_1.setText("Check Button");
Button button_2 = new Button(composite, SWT.CHECK);
button_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false,
1, 1));
button_2.setText("Check Button");
setContent(composite);
setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
}
im screenshot seht ihr (nicht: grün die shell) blau die scrollcomposite, und rot die composite wo die ganzen buttons rauf kommen
gibts eine andere lösung zu meinem problem?
oder kann mir emand meinen fehler zeigen?
danke schon mal
lumo