* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Java GUI Programming
Survey
Document related concepts
Transcript
Java GUI Programming 1 Ellen Walker Hiram College What is a GUI? • Graphical User Interface – Easier (for most people) to use – More complex to program Why Java? • Java compiles for a virtual machine • “Write once run anywhere” – One program looks nice on: • Linux • Windows • Macintosh • Can also generate “applets” to run from Web pages (not today) GUI Programs are Event Driven • Event – Signal that something “interesting” has happened – Example: user presses a button, user moves the mouse • Main program reacts to events while(true){ Wait for an event React to it } Sequential vs Event-Driven • Sequential – Programmer is in complete control – Program causes a sequence of actions • Event driven – User is in complete control – User causes events, events cause program actions Major Libraries Used • Abstract Window Toolkit (java.awt.*) - for generating graphics – Rectangle, Polygon, etc. • AWT events (java.awt.event.*) – ActionEvent, MouseEvent, etc. • SWING (javax.swing.*) - for generating units to interact with (some units generate events) – Frames (windows) – Buttons – Labels & Text information Some Swing Classes • JFrame – Represents window with title & border • JLabel – Displays text or an image (cannot be changed) • JTextField – Area for the user to enter one line of text • JTextArea – Area for the user to enter multiline text • JButton – A push button (to connect to an action) Structure of a GUI Program • Main method – Creates an instance of a GUI class • GUI class (implements ActionListener) – Constructor configures components – Action Performer processes events • Event dispatcher – The while loop that waits for events and calls the action performer – You don’t have to write this. WindChill Calculator • Puts up a window with – 1 JTextArea (not to be edited) – 3 Jlabels (F temp., wind, windchill) – 3 JTextFields (one for each label) – 1 Jbutton (“Run) • When “Run” is clicked, windchill temp. is computed & displayed in its field, using text from F temp & wind fields WindChill Calculator Pseudocode public class Windchill implements ActionListener { static final variables for setup info instance variables for components window, labels, textfields, etc. public Windchill() //constructor public void actionPerformed(ActionEvent e) //event processor } Constructor • Configure GUI – Set window size & default close operation – Specify properties of objects, e.g. legendArea is not editable – Register event listener (associate it with the button that sends the event) – Arrange components in the GUI • window.setVisible(true); //after all that! Registering Event Listeners • Every object that can send an event needs to be associated with a Listener object that processes that event (using its ActionPerformed method) • Usually, the code to set this up is in the Listener’s constructor • Example (“this” is the ActionListener class): – runButton.addActionListener(this); Arranging Interface Objects • Every JFrame has a LayoutManager that determines locations of new components – FlowLayout - each added object goes to the right of previous object (or below if there isn’t room to the right) – GridLayout - objects are arrayed in a specified number of columns and/or rows • JFrame’s add method places each interface component according to the layout – E.g. window.add(legendArea); ActionPerformed • Takes one parameter, an ActionEvent – One ActionPerformed method can handle several different actions (using a case statement) • In this case: – Event is when runButton is pressed – Action is to compute the windchill and display it in the appropriate text area