Download presentation
Presentation is loading. Please wait.
Published byBarnaby Henderson Modified over 9 years ago
2
Copyright © 2008-2015 Curt Hill First Window Builder Program Easy GUIs in Eclipse
3
Preliminaries Goal: Create a Windows program using Eclipse with the 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 © 2008-2015 Curt Hill
4
Disclaimer There is a lot to know So we have much to cover Fortunately, it is easier than it might seem We will follow with a demonstration We will have more presentations to further explain things Copyright © 2008-2015 Curt Hill
5
Needed Objects JFrame –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 © 2008-2015 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 © 2008-2015 Curt Hill
7
Add an Application Window Copyright © 2008-2015 Curt Hill
8
Fill in Package and Name Copyright © 2008-2015 Curt Hill
9
After Finish Clicked Copyright © 2008-2015 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 © 2008-2015 Curt Hill
11
Looking at Source Copyright © 2008-2015 Curt Hill
12
Now Click on Design Copyright © 2008-2015 Curt Hill
13
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 © 2008-2015 Curt Hill
14
Add a title Copyright © 2008-2015 Curt Hill
15
If we run we get Copyright © 2008-2015 Curt Hill
16
Click Flow and Drag Copyright © 2008-2015 Curt Hill
17
Adding Components We click on items and then drag over to window First start with a Jlabel Click it Click in the Window Copyright © 2008-2015 Curt Hill
18
Jlabel Added Copyright © 2008-2015 Curt Hill
19
Change Contents After we drop it, it should be selected in the property inspector Change the Text property to Years Copyright © 2008-2015 Curt Hill
20
Text Property Changed Copyright © 2008-2015 Curt Hill
21
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 © 2008-2015 Curt Hill
22
JTextField Dragging Copyright © 2008-2015 Curt Hill
23
Setting Text Copyright © 2008-2015 Curt Hill
24
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 © 2008-2015 Curt Hill
25
Button Placed Copyright © 2008-2015 Curt Hill
26
Show Events Clicked Copyright © 2008-2015 Curt Hill
27
Scroll Down and Opened Copyright © 2008-2015 Curt Hill
28
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 annotation @override Copyright © 2008-2015 Curt Hill
29
Code Copyright © 2008-2015 Curt Hill
30
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 © 2008-2015 Curt Hill
31
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 © 2008-2015 Curt Hill
32
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 © 2008-2015 Curt Hill
33
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 © 2008-2015 Curt Hill
34
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 © 2008-2015 Curt Hill
35
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 © 2008-2015 Curt Hill
36
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 © 2008-2015 Curt Hill
37
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 © 2008-2015 Curt Hill
38
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 © 2008-2015 Curt Hill
39
Do Computations The computation is merely a bunch of multiplications to convert years into seconds 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 © 2008-2015 Curt Hill
40
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 © 2008-2015 Curt Hill
41
Event Handler Copyright © 2008-2015 Curt Hill
42
Are we done? This program is now 80 lines –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 © 2008-2015 Curt Hill
43
New Button Exit button is simple, add a new: –Button –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 © 2008-2015 Curt Hill
44
With Exit Button Copyright © 2008-2015 Curt Hill
45
Errors In generating this presentation I received an error in Windows Builder The program would compile and run So I exited Eclipse and started it and it was fine Copyright © 2008-2015 Curt Hill
46
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 We will next do the demo Copyright © 2008-2015 Curt Hill
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.