Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

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

3

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); } }

14

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);


Download ppt "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."

Similar presentations


Ads by Google