Tutorial :JFace ApplicationWindow: createContents isn't working



Question:

I'm attempting to create a window that is divided into three parts. A non-resizable header and footer and then a content area that expands to fill the remaining area in the window. To get started, I created the following class:

public class MyWindow extends ApplicationWindow {      Color white;      Font mainFont;      Font headerFont;        public MyWindow() {          super(null);          }        protected Control createContents(Composite parent) {          Display currentDisplay = Display.getCurrent();          white = new Color(currentDisplay, 255, 255, 255);          mainFont = new Font(currentDisplay, "Tahoma", 8, 0);          headerFont = new Font(currentDisplay, "Tahoma", 16, 0);            // Main layout Composites and overall FillLayout          Composite container = new Composite(parent, SWT.NO_RADIO_GROUP);          Composite header = new Composite(container, SWT.NO_RADIO_GROUP);          Composite mainContents = new Composite(container, SWT.NO_RADIO_GROUP);;          Composite footer = new Composite(container, SWT.NO_RADIO_GROUP);;          FillLayout containerLayout = new FillLayout(SWT.VERTICAL);          container.setLayout(containerLayout);            // Header          Label headerLabel = new Label(header, SWT.LEFT);          headerLabel.setText("Header");          headerLabel.setFont(headerFont);            // Main contents          Label contentsLabel = new Label(mainContents, SWT.CENTER);          contentsLabel.setText("Main Content Here");          contentsLabel.setFont(mainFont);            // Footer          Label footerLabel = new Label(footer, SWT.CENTER);          footerLabel.setText("Footer Here");          footerLabel.setFont(mainFont);            return container;      }        public void dispose() {          cleanUp();      }        @Override      protected void finalize() throws Throwable {          cleanUp();          super.finalize();      }        private void cleanUp() {          if (headerFont != null) {              headerFont.dispose();          }          if (mainFont != null) {              mainFont.dispose();          }          if (white != null) {              white.dispose();          }      }  }  

And this results in an empty window when I run it like this:

public static void main(String[] args) {      MyWindow myWindow = new MyWindow();      myWindow.setBlockOnOpen(true);      myWindow.open();      Display.getCurrent().dispose();  }  

What am I doing wrong that I don't see three labels the way I'm trying to display them? The createContents code is definitely being called, I can step through it in Eclipse in debug mode.


Solution:1

Apparently, I needed to set the size and location of the labels to get them to appear.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »