150 likes | 284 Views
Things to mention. public static void main(String [] args ) imports comments block comments /* … */ single-line comments // javadoc comments and tags (?) /** … */. Using the Java graphics classes. In this slide set we will explain the basics of how to create graphical programs.
E N D
Things to mention • public static void main(String [] args) • imports • comments • block comments /* … */ • single-line comments // • javadoc comments and tags (?) /** … */ CSE 115/503 Introduction to Computer Science for Majors I
Using the Java graphics classes • In this slide set we will explain the basics of how to create graphical programs. • Some advanced issues will be glossed over (e.g. thread safety, graphics library design). • In CSE116 we will revisit these and other more advanced topics. CSE 115/503 Introduction to Computer Science for Majors I
Graphical elements • There are two basic types of graphical elements: • Containers • able to hold graphical objects, such as containers and components • Components • must be put into containers • able to generate events when manipulated CSE 115/503 Introduction to Computer Science for Majors I
Containers • Top-level containers • some containers are called “top-level” because they do not need to be place inside any other containers • javax.swing.JFrame is an example (JDialog and JApplet are others) • Other containers (not top-level) • most containers must be placed inside some other container • javax.swing.JPanel is an example CSE 115/503 Introduction to Computer Science for Majors I
Adding elements to a JFrame • Top-level containers have multiple panes • Content pane is the one which holds components • With javax.swing.JFrame, two ways: • call getContentPane() on frame to get frame’s content pane, then call add(…) on content pane to add a component • call add(…) directly on the JFrame object • Second approach is just a convenience method, does the same thing the first approach CSE 115/503 Introduction to Computer Science for Majors I
Example • Creating just a frame • new javax.swing.JFrame() • Creating a frame with a title • new javax.swing.JFrame(“My title”) • Making the frame visible • call setVisible(true) on the frame • Making application close when window is closed: • call setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) on the frame • See code in: • the BasicExample class in the graphics package of the GraphicsExamples project in the repository, as well as, • the ex_1_JFrame_visible package in the FA09-CSE115-SwingExamplesproject in the repository. CSE 115/503 Introduction to Computer Science for Majors I
A simple component • A JLabel is a component that can display text or an image. • It can also have a “tooltip”, a note that appears when you hover the mouse pointer over it, without clicking. • Look at ex_2_JLabel_tooltip CSE 115/503 Introduction to Computer Science for Majors I
Layout managers • First, let’s consider what happens if we add another JLabelto the content pane of the JFrame. • Look at ex_3_JLabels_noLayout • This will show us the need to manage the layout of components added to a container. • See also code in GraphicsExamplesproject for this and the rest of the slides. CSE 115/503 Introduction to Computer Science for Majors I
Applying a layout management strategy • Look at ex_4_staticLayout • In this example we can apply one of four different layout management strategies to a set of seven JLabels that are added to the JFrame’s content pane. CSE 115/503 Introduction to Computer Science for Majors I
Another component: a JButton • A JButton is a component which is typically set up to react to clicks. • Look at ex_5_JButton_noEventHandler, this example just shows a JButton. CSE 115/503 Introduction to Computer Science for Majors I
Events • Clicks on buttons, mouse movements, etc. are all considered events. • A program can react to events by setting up event handlers. • An event handler defines what should happen when a particular event occurs. CSE 115/503 Introduction to Computer Science for Majors I
Event handling – 1 • The component which gives rise to an event is decoupled from the part of the code that handles the event. • This is called the observer pattern. • We have seen this over the past few lectures. A bit of review never hurt :-) • General form: • www.research.ibm.com/designpatterns/example.htm CSE 115/503 Introduction to Computer Science for Majors I
Event handling – 2 • Observer pattern in Java • An observer is called a listener in Java • Button clicks are “ActionEvents”. • Handlers for ActionEvents are ActionListeners. • An event-generator can have many listeners • Use “addActionListener” method to register a listener with a component CSE 115/503 Introduction to Computer Science for Majors I
Event handling for a JButton • Look at ex_6_JButton_eventHandler • In this example an event handler is defined and attached to the JButton. CSE 115/503 Introduction to Computer Science for Majors I
Putting it all together • Look at ex_7_dynamicLayoutEventHandling • In this example we put everything together: • different components are put into different containers • multiple components are put into each container • different layout managers can be applied dynamically • JButtons’ event handlers select and apply different layout managers to the container containing JLabels CSE 115/503 Introduction to Computer Science for Majors I