Download presentation
Presentation is loading. Please wait.
Published byAlexandre Rooks Modified over 10 years ago
1
Graphics and event-driven programs Learning objectives By the end of this lecture you should be able to: identify and use some of the common components of the Java Swing package; program graphics components to handle mouse-click events; describe the role of layout managers; use the FlowLayout and BorderLayout managers; make use of compound containers.
2
Which printer [a] LPT1 or [b] LPT2?: How many copies do you wish to print?: [P]rint now or [C]ancel?: Print all pages (y/n)?: 1 2 y C
4
Swing and AWT AWT Swing
5
Swing Components
6
The SmileyFace class public class RunSmileyFace { public static void main(String[] args) { new SmileyFace(); } }
7
public class SmileyFace import java.awt.*; import javax.swing.*; { public SmileyFace() { // initialise the screen } public void paint(Graphics g) { // draw onto the screen } } extends JFrame
8
public SmileyFace() { setTitle("Smiley Face"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(250,220); setLocation(300,300); getContentPane().setBackground(Color.yellow); setVisible(true); }
9
public void paint(Graphics g) { super.paint(g); } g.drawOval(85,75,75,75); g.setColor(Color.blue); g.drawOval(100,95,10,10); g.drawOval(135,95,10,10); g.drawArc(102,115,40,25,0,-180); g.drawString("Smiley Face", 90,175); g.setColor(Color.red);
10
Event-handling in Java :The ChangingFace class
11
import javax.swing.*; import java.awt.*; public class ChangingFace extends JFrame { public ChangingFace() { // code goes here } public void paint(Graphics g) { // code goes here } } private JButton happyButton = new JButton("Smile"); private JButton sadButton = new JButton("Frown"); private boolean isHappy = true;
12
public ChangingFace() { setTitle("Changing Face"); getContentPane().setBackground(Color.yellow); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(250, 200); setLocation(300,300); setVisible(true); } setLayout(new FlowLayout()); add(happyButton); add(sadButton);
13
public void paint(Graphics g) { super.paint(g); g.setColor(Color.red); g.drawOval(85,45,75,75); g.setColor(Color.blue); g.drawOval(100,65,10,10); g.drawOval(135,65,10,10); g.drawString("Changing Face", 80,155); if(isHappy == true) { g.drawArc(102,85,40,25,0,-180); } else { g.drawArc(102,85,40,25,0,180); } }
15
public ChangingFace() { setTitle("Changing Face"); setLayout(new FlowLayout()); add(happyButton); add(sadButton); getContentPane().setBackground(Color.yellow); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(250, 200); setLocation(300,300); setVisible(true); } happyButton sadButton.addActionListener( ); this.addActionListener( ); this
16
import javax.swing.*; import java.awt.*; public class ChangingFace extends JFrame { public ChangingFace() { // code goes here } public void paint(Graphics g) { // code goes here } } private JButton happyButton = new JButton("Smile"); private JButton sadButton = new JButton("Frown"); private boolean isHappy = true; public void actionPerformed(ActionEvent e) { // code goes here } implements ActionListener import java.awt.event.*;
17
public void actionPerformed(ActionEvent e) { if(e.getSource() == happyButton) { isHappy = true; repaint(); } if(e.getSource() == sadButton) { isHappy = false; repaint(); } }
18
public class RunChangingFace { public static void main(String[] args) { new ChangingFace(); } } Running the application
19
An interactive graphics class
20
import javax.swing.*; import java.awt.event.*; import java.awt.*; class PushMe extends JFrame implements ActionListener { private JTextField myTextField = new JTextField(15); private JButton myButton = new JButton("please push me"); private JLabel myLabel = new JLabel("Enter some text and push the button", JLabel.CENTER); public PushMe() { // code goes here } public void actionPerformed(ActionEvent e) { // code goes here } }
21
public PushMe() { setTitle("Push Me"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(220,120); setLocation(400, 300); add(myTextField); add(myButton); add(myLabel); myButton.addActionListener(this); setVisible(true); }
22
public void actionPerformed(ActionEvent e) { } String myText; myText = myTextField.getText(); myLabel.setText("You entered: " + myText); myTextField myLabel
23
A GUI for the Oblong class JTextArea JButton JLabel JTextField JLabel JTextField
24
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class OblongGUI extends JFrame implements ActionListener { private Oblong myOblong = new Oblong(0,0); private JLabel lengthLabel = new JLabel("Length"); private JTextField lengthField = new JTextField(5); private JLabel heightLabel = new JLabel("Height"); private JTextField heightField = new JTextField(5); private JButton calcButton = new JButton("Calculate"); private JTextArea displayArea = new JTextArea(2,20); // methods go here }
25
public OblongGUI() { setTitle("Oblong GUI"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new FlowLayout()); add(lengthLabel); add(lengthField); add(heightLabel); add(heightField); add(calcButton); add(displayArea); setSize(240, 135); setLocation(300,300); calcButton.addActionListener(this); setVisible(true); }
26
public void actionPerformed(ActionEvent e) { String lengthEntered = lengthField.getText(); String heightEntered = heightField.getText(); if(lengthEntered.length() == 0 || heightEntered.length() == 0) { displayArea.setText("Length and height must be entered"); } else { myOblong.setLength(Double.parseDouble(lengthEntered)); myOblong.setHeight(Double.parseDouble(heightEntered)); displayArea.setText("The area of the oblong is " + myOblong.calculateArea() + "\n" + "The perimeter of the oblong is " + myOblong.calculatePerimeter()); } } }
27
A metric converter JPanel inchCmPanel mileKmPanel poundKgPanel JFrame
28
Layout policies - FlowLayout
29
Layout policies - BorderLayout
30
Compound containers JPanel inchCmPanel inchCmButtons inchCmButtons.setLayout(new BorderLayout()); inchCmButtons.add("North", cmToInchButton); inchCmButtons.add("South", inchToCmButton); inchCmPanel.add(cmText); inchCmPanel.add(cmLabel); inchCmPanel.add(inchCmButtons); inchCmPanel.add(inchText); inchCmPanel.add(inchLabel);
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.