2015-07-15 3 views
0

Je veux gérer la position du composant dans l'interface graphique en les faisant glisser et les déposer facilement sur la page de conception d'Eclipse. Ceci est l'interface graphique que je vois dans la page de conception. (Clic droit> Test/Aperçu)GUI dans la page de conception et l'interface graphique lorsque RUN n'est pas la même chose (Eclipse)

Design page

Je pense après avoir fini de réorganiser le composant dans la page de conception, il ressemblera quand je lance l'application. Mais, cette interface graphique apparaît. Les différents aspects rendent très difficile le réglage du composant, par exemple la largeur de JOUR 2, la hauteur de Médicament, DOB: et l'arrière-plan vert.
S'il vous plaît laissez-moi savoir s'il y a une solution à ce problème. Merci.

+1

Vous devez utiliser [GridBagLayout] (https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) (pas GridLayout). (Note: si Male et Female ne devraient pas être cochés tous les deux en même temps, ils devraient être des boutons radio dans un seul ButtonGroup, pas des cases à cocher.) – VGR

Répondre

1

Vous pouvez utiliser le GridLayout où chaque jour est une colonne et les sujets (diagnostic, traitement, etc.) sont les lignes. Et vous créez un composite dans chaque cellule de la grille (comme le diagnostic Day1 &) qui contient vos boutons pour ce jour et le sujet.

[EDIT] Ma a suggéré la mise en œuvre est la suivante: (SWT.BORDER marque toutes les cellules de la grille de premier niveau)

GridLayout topLevelLayout = new GridLayout(); 
    topLevelLayout.numColumns = 4; 
    parent.setLayout(topLevelLayout); 

    // head row 
    Label label = new Label(parent, SWT.BORDER); 
    label.setText("Activity"); 
    label = new Label(parent, SWT.BORDER); 
    label.setText("Day 1"); 
    label = new Label(parent, SWT.BORDER); 
    label.setText("Day 2"); 
    label = new Label(parent, SWT.BORDER); 
    label.setText("Day 3"); 

    // new row - first cell 
    label = new Label(parent, SWT.BORDER); 
    label.setText("Diagnosis"); 

    // Day1 & Diagnosis 
    GridLayout cellLayout = new GridLayout(); 
    cellLayout.numColumns = 2; 
    Composite composite = new Composite(parent, SWT.BORDER); 
    composite.setLayout(cellLayout); 
    Button button = new Button(composite, SWT.NONE); 
    button.setText("ECG"); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Blood Pressure"); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Vital signs"); 
    // other subjects of diagnosis at day 1... 

    // Day2 & Diagnosis 
    composite = new Composite(parent, SWT.BORDER); 
    // same layout like for day1 & diagnosis 
    composite.setLayout(cellLayout); 
    button = new Button(composite, SWT.NONE); 
    button.setText("ECG"); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Labs"); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Blood pressure"); 
    // other subjects of diagnosis at day 2... 

    // Day3 & Diagnosis 
    composite = new Composite(parent, SWT.BORDER); 
    // same layout like for day1 & diagnosis 
    composite.setLayout(cellLayout); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Stress Tests"); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Labs"); 
    button = new Button(composite, SWT.NONE); 
    button.setText("Cardiac rhythm"); 
    // other subjects of diagnosis at day 1... 

    label = new Label(parent, SWT.BORDER); 
    label.setText("Treatment"); 
+0

J'utilise déjà GridLayout mais ça ne marche pas. Puis-je savoir comment utiliser composite dans chaque cellule de la grille? – doraemon

+0

Je veux dire que vous avez un GridLayout toplevel pour la tête et une ligne pour chaque activité et ensuite vous utilisez une deuxième grille pour les cellules qui a deux colonnes. –

+0

Oh .. Oui, j'ai fait un autre nouveau panneau et mis à GridLayout pour chaque activité et le jour mais il montre encore différent lors de l'exécution .. – doraemon

0

choses comme cela arrive avec tout concepteur. Habituellement, ils sont un indicateur d'un changement de lieu se produisant à l'exécution en tant que résultat d'un paramètre dynamique quelconque. Assurez-vous que vous avez le bon remplissage sur chacun des boutons, et tout ce que vous utilisez pour contenir les boutons dans doivent utiliser un espacement cohérent pour chacun d'eux. Assurez-vous également que l'alignement dans les conteneurs est correct et que vos boutons et les conteneurs dans lesquels ils se trouvent sont correctement ancrés.

+0

On dirait qu'il serait plus facile de coder à la main l'interface graphique. –

+0

J'ai entendu cet argument plusieurs fois, et d'après mon expérience, il vient surtout de personnes qui ont une expérience minimale de la conception graphique. Accordé pour un design ce handcoding simple est probablement bien, mais vous avez toujours le même problème de tri et d'erreur d'essayer de voir où les choses finiront. Il finit pratiquement toujours par prendre plus de temps, et pas du tout plus facilement. Il est assez égal en niveau de difficulté, mais beaucoup plus rapide avec un constructeur GUI. Soumis à la qualité du constructeur GUI par exemple. Mais quelque chose d'aussi mature devrait être très bon. –