I am learning SWT with the goal to create a wizard. I am modifying an existing tutorial. At this point, I am trying to display an image in one page of the wizard:
class FrontPage extends WizardPage {
FrontPage() {
super("FrontPage");
setTitle("Listes des joueurs");
setDescription("Veuillez déplacer toutes les listes dans le même fichier (ex: C:\\Badminton\\)");
}
public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
GridLayout gridLayout = new GridLayout(2, false);
composite.setLayout(gridLayout);
Canvas canvas = new Canvas(composite, SWT.NONE);
canvas.setBounds(10, 10, 693, 253);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
Image image = new Image(null, "C:\\Benoit\\Work\\Java\\Badminton\\Folder_List_Players.png");
e.gc.drawImage(image, 10, 10);
image.dispose();
}
});
setControl(composite);
}
}
When running this code, my image, which is roughly 600 by 200, is displayed as a thumbnail (10x10). I would like to display it full size.
I understand that I might have a Display object in the Image constructor, but I am unsure how to make it work with the Composite parent object. It is interesting however that I am still able to display the image with a null Display object.
The canvas.setBounds(10, 10, 693, 253); does not seem to have any impact.
Thanks in advance for any hints or help!!!
If an Image is created with a null Display, the current Display is used. For clarity, you should always provide a Display when creating images.
And there is no shortage of references to the current display either, for example:
Display display = event.display;
or
Display display = parent.getDisplay();
In order to display an image, prefer using a Label
like this:
Label imageLabel = new Label( parent, SWT.NONE );
imageLabel.setImage( ... );
To layout controls, stay away from using setBounds() and absolute coordinates. Use layout managers instead: https://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.