1 / 30

Graphics and event-driven programs

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 ;

Télécharger la présentation

Graphics and event-driven programs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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?: 1 2 How many copies do you wish to print?: Print all pages (y/n)?: y [P]rint now or [C]ancel?: C

  3. Swing and AWT Swing AWT

  4. Swing Components

  5. The SmileyFace class public class RunSmileyFace { public static void main(String[] args) { new SmileyFace(); } }

  6. import java.awt.*; import javax.swing.*; public class SmileyFace extends JFrame { public SmileyFace() { // initialise the screen } public void paint(Graphics g) { // draw onto the screen } }

  7. public SmileyFace() { setTitle("Smiley Face"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(250,220); setLocation(300,300); getContentPane().setBackground(Color.yellow); setVisible(true); }

  8. public void paint(Graphics g) { super.paint(g); } g.setColor(Color.red); 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);

  9. Event-handling in Java :The ChangingFace class

  10. 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 boolean isHappy = true; private JButton happyButton = new JButton("Smile"); private JButton sadButton = new JButton("Frown");

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

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

  13. 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

  14. import javax.swing.*; import java.awt.*; public class ChangingFace extends JFrame { public ChangingFace() { // code goes here } public void paint(Graphics g) { // code goes here } } import java.awt.event.*; implements ActionListener private boolean isHappy = true; private JButton happyButton = new JButton("Smile"); private JButton sadButton = new JButton("Frown"); public void actionPerformed(ActionEvent e) { // code goes here }

  15. public void actionPerformed(ActionEvent e) { if(e.getSource() == happyButton) { isHappy = true; repaint(); } if(e.getSource() == sadButton) { isHappy = false; repaint(); } }

  16. Running the application public class RunChangingFace { public static void main(String[] args) { new ChangingFace(); } }

  17. An interactive graphics class

  18. 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 } }

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

  20. public void actionPerformed(ActionEvent e) { } String myText; myText = myTextField.getText(); myLabel.setText("You entered: " + myText); myTextField myLabel

  21. A GUI for the Oblong class JLabel JTextField JTextField JLabel JButton JTextArea

  22. 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 }

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

  24. 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()); } } }

  25. A metric converter JFrame inchCmPanel JPanel mileKmPanel JPanel poundKgPanel JPanel

  26. Layout policies - FlowLayout

  27. Layout policies - BorderLayout

  28. Compound containers inchCmPanel JPanel JPanel 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);

More Related