SWT (JFace): bekomme das FormLayout nicht hin.

Status
Nicht offen für weitere Antworten.

Vatar

Bekanntes Mitglied
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:
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
 

ronny

Bekanntes Mitglied
hmmmm, erstelle mal in der createContents(...) Methode
ein Composite, auf den du das layout legst und dann
fügst du dem Composite alle widgets hinzu, die du brauchst....

das parent.setlayout(..) nimmst du raus...

am ende gibts du nicht parent zurück, sondern das composite... :wink:
 

Vatar

Bekanntes Mitglied
Das hatte ich ganz am Anfang auch (da ich eigentlich sowieso zwei Composites benutzen wollte), aber da hat er auch nix angezeigt.

Du meinst ungefähr so:
Code:
protected Control createContents(Composite parent){
        controlComposite = new Composite( parent, SWT.NONE );
        controlComposite.setLayout(new FormLayout());
        
        pathToQueriesLabel = new Label (controlComposite, SWT.FLAT);
        pathToQueriesLabel.setText("Pfad zum Versata-Query-Verzeichnis");

        pathToQueriesText = new Text(controlComposite, SWT.SINGLE | SWT.BORDER);

        searchDirectory = new Button(controlComposite, SWT.PUSH);
        searchDirectory.setText("Durchsuchen...");

        start = new Button(controlComposite, SWT.PUSH);
        start.setText("Start");

        doLayout();
        
        setStatus("Application started");
        return controlComposite;
    }// endmethod

Da zeigt er das Fenster mit Menu und Status aber sonst nichts mehr.
 

ronny

Bekanntes Mitglied
so schauts schonmal ganz gut aus...

das anzeigeproblem liegt dann auf jedenfall bei deiner "layouterei" :D

z. B. überknallst du jedesmal FormData.... das legst du nur
einmal an und nimmst das für alle widgets her....
das geht definitiv schonmal in die hose. Du musst für
jedes widget ein eigenes FormData anlegen!

naja, die layoutmanager sind etwas tricky... versuchs
vielleicht auch parallel (statt FormLayout) mal mit nem gridlayout...
eventuell kommst du da am anfang besser zurecht.. :wink:
 

Vatar

Bekanntes Mitglied
DANKE.
Man sollte sich doch ab und an Objektorientierung und die dazugehörigen Zeiger erinnern :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JFace Bezugsquelle AWT, Swing, JavaFX & SWT 5
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
A JFace Wizard: Ist es möglich eine Page zu löschen? AWT, Swing, JavaFX & SWT 2
M Filter in die JFace/SWT Tabelle einbauen AWT, Swing, JavaFX & SWT 5
I SWTBot und JFace AWT, Swing, JavaFX & SWT 2
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
E JFace ListSelectionDialog & Mouse-Events? AWT, Swing, JavaFX & SWT 2
M SWT /Jface Wann einen ColumnLabelProvider benutzen? AWT, Swing, JavaFX & SWT 2
K SWT/JFace AWT, Swing, JavaFX & SWT 8
J SWT JFace Tree in Section unsichtbar (Eclipse Forms) AWT, Swing, JavaFX & SWT 5
A SWT Eclipse JFace Binding TreeViewer AWT, Swing, JavaFX & SWT 4
J Welche Fallstricke gibt es bei TreeTables in SWT/JFace AWT, Swing, JavaFX & SWT 3
M SWT Jface Action und localised Strings AWT, Swing, JavaFX & SWT 6
M sortierbare Tabelle mit jface und databinding AWT, Swing, JavaFX & SWT 3
B Sudokuartiger View (RadiobuttonTableView) mit JFace Viewer? AWT, Swing, JavaFX & SWT 3
D SWT JFace TableViewer nächster CellEditor nach Enter aktivieren AWT, Swing, JavaFX & SWT 5
D SWT JFace Wizard Progressbar AWT, Swing, JavaFX & SWT 4
E SWT JFace TitleAreaDialog OK Button sperren AWT, Swing, JavaFX & SWT 3
N swt und awt in JFace ummodeln AWT, Swing, JavaFX & SWT 13
V SWT/JFace Interessante Links AWT, Swing, JavaFX & SWT 3
dzim JFace ListViewer-Einträge mit CellEditor? AWT, Swing, JavaFX & SWT 3
X RCP/SWT/JFace: Sprache lässt sich nicht ändern AWT, Swing, JavaFX & SWT 3
dzim NullPointer bei refresh() einer JFace TableViewer AWT, Swing, JavaFX & SWT 2
dzim JFace TableViewer mit verschiedenen Inhalten AWT, Swing, JavaFX & SWT 4
L Frage zu Erstellung des Menu mit JFace AWT, Swing, JavaFX & SWT 2
A Jface: Wie Inhalt des Hauptbereichs verändern AWT, Swing, JavaFX & SWT 5
M JFace TableViewer + ContentProvider, wo sind die Spalten? AWT, Swing, JavaFX & SWT 6
S JFace Startprobleme AWT, Swing, JavaFX & SWT 2
G HTML-Link mit SWT bzw. JFACE AWT, Swing, JavaFX & SWT 4
G Dynamic Help mit SWT/JFace AWT, Swing, JavaFX & SWT 5
G JFace/SWT contra AWT/Swing AWT, Swing, JavaFX & SWT 10
F [jFace] ListViewer: zusätzliche Infos anzeigen lassen AWT, Swing, JavaFX & SWT 2
D JDIC Browser in SWT/JFace Anwendung nutzen AWT, Swing, JavaFX & SWT 2
S SWT/JFace TreeViewer: Rootknoten anzeigen AWT, Swing, JavaFX & SWT 10
J Fehler bei Applikationen mit JFace AWT, Swing, JavaFX & SWT 2
G JFace benutzen, aber wie! AWT, Swing, JavaFX & SWT 2
byte SWT -> JFace: TreeViewer AWT, Swing, JavaFX & SWT 4
S SWT/JFace TreeViewer-Problem AWT, Swing, JavaFX & SWT 2
V SWT (JFace): Foreground des Textes im TreeViewer ändern. AWT, Swing, JavaFX & SWT 2
L (jface) InputDialog erweitern. AWT, Swing, JavaFX & SWT 2
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
G AWT Wie bekomme ich einen zeitgesteuerten robot hin? AWT, Swing, JavaFX & SWT 6
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
S Bekomme bein Buttonklick das Jtextfield nicht ausgegeben AWT, Swing, JavaFX & SWT 8
Madlip SWT Wie bekomme ich e.getSource xxx AWT, Swing, JavaFX & SWT 2
A Bekomme das Label nicht in die Mitte von Reihe AWT, Swing, JavaFX & SWT 7
L Wie bekomme ich ein Mehrzeiliges JTextField? AWT, Swing, JavaFX & SWT 12
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
I Swing Wie bekomme ich den Fokus für einen JPanel AWT, Swing, JavaFX & SWT 5
pinerski Swing Wie bekomme ich bei einer JComboBox den Text? AWT, Swing, JavaFX & SWT 2
K bekomme Seitenwechsel nicht hin AWT, Swing, JavaFX & SWT 4
S Hilfe! Bekomme Daten nicht ausgelesen AWT, Swing, JavaFX & SWT 3
V Hilfe :( bekomme textarea nicht versetzt AWT, Swing, JavaFX & SWT 2
W Vom JPanel bekomme ich keine Events AWT, Swing, JavaFX & SWT 5
I selectedText: Wie bekomme ich Zugriff auf den Text? AWT, Swing, JavaFX & SWT 4
H Bekomme den TreeSelectionListener nicht zum Laufen AWT, Swing, JavaFX & SWT 5
G Wie bekomme ich ein JFrame/JDialog zum Blinken? AWT, Swing, JavaFX & SWT 6
E Wie bekomme ich hier ein vertikale JScrollPane hin?? AWT, Swing, JavaFX & SWT 4
G Bekomme immer: NullPointerException AWT, Swing, JavaFX & SWT 2
G FormLayout dynamisch wachsend AWT, Swing, JavaFX & SWT 0
GUI-Programmer LayoutManager FormLayout mit speziellen Komponentenabstand AWT, Swing, JavaFX & SWT 4
A FormLayout Panel-Breite AWT, Swing, JavaFX & SWT 7
A Beschreibung Parameter FormLayout AWT, Swing, JavaFX & SWT 8
F FormLayout Größen Problem AWT, Swing, JavaFX & SWT 2
N Verschiedene FormLayout in einem Panelbuilder AWT, Swing, JavaFX & SWT 3
G FormLayout minimum größe AWT, Swing, JavaFX & SWT 7
G FormLayout AWT, Swing, JavaFX & SWT 2
T Vertikaler JSeparator in FormLayout AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben