Presentation is loading. Please wait.

Presentation is loading. Please wait.

First Window Builder Program

Similar presentations


Presentation on theme: "First Window Builder Program"— Presentation transcript:

1 First Window Builder Program
Easy GUIs in Eclipse Copyright © Curt Hill

2 Preliminaries Goal: Create a Windows program using Eclipse with the already installed Window Builder plugin The problem to solve is to take the number of years and convert it into the number of seconds of a persons life Simple GUI with: Two buttons One input One output Copyright © Curt Hill

3 Disclaimer There is a lot to know So we have much to cover
Fortunately, it is easier than it might seem We will follow this with a demonstration A code along with Curt exercise We will have more presentations to further explain things Copyright © Curt Hill

4 GUIs and Objects Most object oriented languages that support GUIs do so with objects This encapsulates the properties and methods nicely Java uses this approach Thus there are some objects we need to know something about Copyright © Curt Hill

5 Needed Objects JFrame JButton JTextField JLabel LayoutManager
A window and container JButton JTextField A field to type in data JLabel LayoutManager Organizes GUI objects in a container Handles the resizing Listeners Copyright © Curt Hill

6 Process First we do the normal things: Start Eclipse
The Window Builder plugin should have been previously installed Close all open projects Create a new project We do not create the new Java class This is where it starts to change We add a Windows application We do this with dropdown menu Copyright © Curt Hill

7 Add an Application Window
Copyright © Curt Hill

8 Fill in Package and Name
Copyright © Curt Hill

9 After Finish Clicked Copyright © Curt Hill

10 What do we have? A program with 44 lines 3 methods
Main initialize NewWindow We are not yet ready to modify the Java code Notice at the bottom of the code there are two tabs Source and design Copyright © Curt Hill

11 Looking at Source Copyright © Curt Hill

12 Next We will next click on the design tab
We will either get a design screen or an error We will consider the error first Copyright © Curt Hill

13 This is bad – but fixable
Copyright © Curt Hill

14 Explanation Both Eclipse and WindowBuilder may not have been updated to the most current version of the JDK If this error appears we revert to a previous JDK See the next screens Copyright © Curt Hill

15 Get Properties Open the project so that the JRE shows
Right click on JRE Choose properties Copyright © Curt Hill

16 Choose a Previous JRE Copyright © Curt Hill

17 One more time Once this is fixed we can click on Design tab again
This time we should get the following screen Copyright © Curt Hill

18 At Last Copyright © Curt Hill

19 Commentary On the right is a stylized preview of what the window will look like The middle pane describes components we can drag onto the window On lower left is property inspector First we will change the window characteristics We click on the window in the right pane Scroll down to title and type Copyright © Curt Hill

20 Add a title Copyright © Curt Hill

21 If we run we get Copyright © Curt Hill

22 Next Each window needs a Layout manager
A layout manager determines how the various components are arranged on the window This is usually chosen early We will choose a simple one Flow Layout Copyright © Curt Hill

23 Click Flow and Drag Copyright © Curt Hill

24 Adding Components We click on items and then drag over to window
First start with a Jlabel Click it Click in the Window Copyright © Curt Hill

25 Jlabel Added Copyright © Curt Hill

26 Change Contents After we drop it, it should be selected in the property inspector Change the Text property to Years Copyright © Curt Hill

27 Text Property Changed Copyright © Curt Hill

28 Next We are now up to 51 lines and have coded nothing
The next thing to do is add the input box This is the Java JTextField Similar to the JLabel as far as adding Also similar to JLabel for setting the original value It may precede or follow the label Copyright © Curt Hill

29 JTextField Dragging Copyright © Curt Hill

30 Setting Text Copyright © Curt Hill

31 Names When a component is dragged onto the form a new property is created The Windows Builder Plug-In does not know what you are intending It gives a uninformative name: textField, textField_1 etc. There is a Variable field in the object inspector that allows this to be changed Those components referenced in code should usually be named Copyright © Curt Hill

32 Buttons The slightly harder one is buttons
They have the same drag, set value as JLabels and JTextAreas They also need an event handler Even that is not hard We must show the events Copyright © Curt Hill

33 Button Placed Copyright © Curt Hill

34 Show Events Clicked Copyright © Curt Hill

35 Scroll Down and Opened Copyright © Curt Hill

36 Action When you double click on the Mouse Clicked slot it generates an event handler The event handler is method that is called when the event occurs It then takes you to the code page The event handler is called mouseClicked It is preceded by an Copyright © Curt Hill

37 Code Copyright © Curt Hill

38 Event Handler The event handler is now an empty method in the initialized method Now we have to make that method do something Many programs and event handlers have this basic form: // Get data // Do computations // Display results Copyright © Curt Hill

39 Getting Data The main problem is that a textfield always has type String text in it If we are interested in numerics then we must convert the String to a number This is done with static methods of a wrapper class Usually Integer.parseInteger or Double.parseDouble We cannot use Scanner That is console/file based Copyright © Curt Hill

40 TextField to Numerics To convert an edit box value to a usable numeric value, we use the wrapper classes Integer Double A wrapper class makes a class out of a primitive Then it gives static methods that are useful for that primitive Today we want parseInt from Integer or parseDouble from Double Copyright © Curt Hill

41 Conversion We can use this: String val = textField.getText(); int v = Integer.parseInt(val); Or combine into one: int i = Integer.parseInt(edit1.getText()); double d = Double.parseDouble(edit1.getText()); This causes the value to be obtained from the edit box named edit1 and converted into an int or double Copyright © Curt Hill

42 Back to a String To display a result in either a JTextField or JLabel requires the setText method This may only take a String There is no String constructor that takes a numeric There is however the valueOf method Thus: lab1.setText( String.valueOf(d)); Copyright © Curt Hill

43 Another Conversion You may also concatenate a number to a string painlessly: int a = b*c/2; String s = “Answer: “+a; However, you may not assign a number to a string directly without valueOf s = a; // Illegal s = String.valueOf(a); // OK Copyright © Curt Hill

44 Static Methods parseInt, parseDouble, and valueOf are all static methods A static method does not need an instance of the type We usually use the class name as if it were an instance: Integer.parseInt(x); Double.parseDouble(y); String.valueOf(u); Copyright © Curt Hill

45 Casts Why do we not cast these conversions?
Casts only work on primitive types A String is not a primitive so it must use a static method to convert values into it Similarly the wrapper methods also use static methods to make a double out of a string Copyright © Curt Hill

46 Get Data The data is in the text field named text
The method call: text.getText() will get it Then we convert into an integer with: Integer.parseInt(…) We use: int years = Integer.parseInt( text.getText()); Copyright © Curt Hill

47 Do Computations The computation is merely a bunch of multiplications to convert years into seconds You have seen this before Multiply by Days in year Hours in day Minutes in an hour Seconds in a minute double sec = years*365.25*24*60*60; Copyright © Curt Hill

48 Display Results System.out.println is used for console programs
In a GUI we put the result in a Label or TextField In this example the label is named label We use the setText method: label.setText(“”+sec); Copyright © Curt Hill

49 Event Handler Copyright © Curt Hill

50 Are we done? This program is now 80 lines It still needs some work:
Three of which we have coded It still needs some work: An exit button An about button However, most of that can wait until we get this part under control Copyright © Curt Hill

51 New Button Exit button is simple, add a new:
Event handler The event handler method should execute: System.exit(0); This enlarges the program to 82 lines The About needs a dialog which will wait for a future presentation Copyright © Curt Hill

52 With Exit Button Copyright © Curt Hill

53 Errors In generating this presentation I received an error in Windows Builder It is not too hard to get WB confused The program would compile and run So I exited Eclipse and started it and it was fine Copyright © Curt Hill

54 Problems Each event handler is local to the listener that is being created The order of adding is important An early event handler cannot reference things that are declared later Thus sometimes the Java code needs to be fixed to move the declaration away from the initialization and/or registering the event handler Copyright © Curt Hill

55 Lastly We are up to about 89 lines Seven of these we coded directly
Four Java lines Three comment lines The rest Windows Builder generated Our last two programs will be using Windows Builder Still picture manipulators We will next do the demo Copyright © Curt Hill


Download ppt "First Window Builder Program"

Similar presentations


Ads by Google