Moin Moin.
Also zuerst mal, ich habe schon mal ein kleines ChatProgramm mit dem SWT geschrieben und habe in diesem auch das FormLayout erfolgreich eingesetzt (leider hab ich das Proggi nicht mehr :-( ).
Jetzt wollte ich halt mal ein wenig mit JFace rumspielen. Benutze ich kein Layout (also setLayout(null) ) und positioniere meine Komponenten selbst passt alles. sobald ich einen LayoutManager verwende wird mir nur noch das Objekt angezeigt welches ich zuerst hinzugefügt habe (belegt dann die gesammte Fenstergröße). Setzte ich das FormLayout für meine Composite so zeigt er gar keine Komponenten mehr an und zerschießt zu allem Überfluss auch noch meine Menu- und Status-Leiste (vorher waren die immer schön oben und unten am Fenster angebracht).
und nun ein wenig Code:
Ich hatte beim layouten schon mehrer FormAttachements ausprobiert.
Ich hoffe es kann mir jemand helfen, auch bei Tutorials trat dieses Problem auf.
thx
Also zuerst mal, ich habe schon mal ein kleines ChatProgramm mit dem SWT geschrieben und habe in diesem auch das FormLayout erfolgreich eingesetzt (leider hab ich das Proggi nicht mehr :-( ).
Jetzt wollte ich halt mal ein wenig mit JFace rumspielen. Benutze ich kein Layout (also setLayout(null) ) und positioniere meine Komponenten selbst passt alles. sobald ich einen LayoutManager verwende wird mir nur noch das Objekt angezeigt welches ich zuerst hinzugefügt habe (belegt dann die gesammte Fenstergröße). Setzte ich das FormLayout für meine Composite so zeigt er gar keine Komponenten mehr an und zerschießt zu allem Überfluss auch noch meine Menu- und Status-Leiste (vorher waren die immer schön oben und unten am Fenster angebracht).
und nun ein wenig Code:
Code:
public class VersataQuerySearcher extends ApplicationWindow {
private ExitAction exitAction = new ExitAction( this );
private Composite controlComposite;
private Composite treeComposite;
private Label pathToQueriesLabel;
private Text pathToQueriesText;
private Button searchDirectory;
private Button start;
private TreeViewer tree;
public VersataQuerySearcher (){
super(null);
addMenuBar();
addToolBar(SWT.FLAT |SWT.WRAP);
addStatusLine();
}// end Constructor
/**
* overriden
* @see ApplicationWindow#configureShell(org.eclipse.swt.widgets.Shell)
*/
public void configureShell(Shell shell){
super.configureShell( shell );
shell.setText( "VersataQuerySearcher" );
shell.setImage(new Image(shell.getDisplay(), "./ressources/titleImage.gif"));
}// endmethod
/**
* overriden
* @see Window#initializeBounds()
*/
public void initializeBounds(){
getShell().setSize( 640, 480 );
getShell().setLocation( 100, 100 );
}// endmethod
/**
* overriden
* @see ApplicationWindow#createMenuManager()
*/
protected MenuManager createMenuManager () {
MenuManager menuManager = new MenuManager();
MenuManager fileMenu = new MenuManager ("&File");
fileMenu.add( exitAction );
menuManager.add( fileMenu );
return menuManager;
}// endmethod
/**
* overriden
* @see ApplicationWindow#createToolBarManager(int)
*/
protected ToolBarManager createToolBarManager ( int style ){
ToolBarManager toolBar = new ToolBarManager( style );
return toolBar;
}// endmethod
/**
* Creates the visual Contents.
* @see Window#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents(Composite parent){
// controlComposite = new Composite( parent, SWT.NONE );
// controlComposite.setLayout(new FormLayout());
parent.setLayout(new FormLayout());
pathToQueriesLabel = new Label (parent, SWT.FLAT);
pathToQueriesLabel.setText("Pfad zum Versata-Query-Verzeichnis");
// pathToQueriesLabel.setBounds(10, 10, 100, 30);
pathToQueriesText = new Text(parent, SWT.SINGLE | SWT.BORDER);
// pathToQueriesText.setBounds(10, 50, 100, 30);
searchDirectory = new Button(parent, SWT.PUSH);
searchDirectory.setText("Durchsuchen...");
// searchDirectory.setBounds(120, 50, 100, 30);
start = new Button(parent, SWT.PUSH);
start.setText("Start");
// start.setBounds(10, 100, 50, 30);
doLayout();
setStatus("Application started");
return parent;
}// endmethod
/** just lLayout */
private void doLayout(){
FormData formData = new FormData();
formData.top = new FormAttachment(0, 10);
formData.left = new FormAttachment(0, 10);
formData.width = 150;
formData.height = 30;
pathToQueriesLabel.setLayoutData(formData);
formData.top = new FormAttachment(pathToQueriesLabel, 10);
formData.left = new FormAttachment(0, 10);
formData.width = 100;
formData.height = 30;
pathToQueriesText.setLayoutData(formData);
formData.left = new FormAttachment(pathToQueriesText, 10);
formData.width = 100;
formData.height = 30;
searchDirectory.setLayoutData(formData);
formData.top = new FormAttachment(pathToQueriesText, 50);
formData.width = 100;
formData.height = 30;
start.setLayoutData(formData);
}// endmethod
public static void main ( String [] args ){
VersataQuerySearcher window =new VersataQuerySearcher();
/* Sorgt dafür, dass die Zeile nach open() erst ausgeführt wird,
* wenn das Fenster vom Benutzer geschlossen wurde. */
window.setBlockOnOpen(true);
window.open();
// Ressourcen freigeben
Display.getCurrent().dispose();
}// endmethod main
}// end Class
Ich hatte beim layouten schon mehrer FormAttachements ausprobiert.
Ich hoffe es kann mir jemand helfen, auch bei Tutorials trat dieses Problem auf.
thx