java swing gui programming 4 learning objectives
play

Java Swing GUI Programming 4 Learning Objectives New UI components - PowerPoint PPT Presentation

Java Swing GUI Programming 4 Learning Objectives New UI components File chooser, Text area, Color chooser, Slider, Combo box (menu) Tooltips and short-cuts Mouse events Dynamic drawing Key events Timer events and


  1. Java Swing GUI Programming 4

  2. Learning Objectives • New UI components − File chooser, Text area, Color chooser, Slider, Combo box (menu) • Tooltips and short-cuts • Mouse events − Dynamic drawing • Key events • Timer events and animation CS 6452: Prototyping Interactive Systems 2

  3. Useful Components • Let's examine some other UI components that come in handy CS 6452: Prototyping Interactive Systems 3

  4. Choosing Files Convenient way to select files – JFileChooser To use 1. Call constructor 2. Call showOpenDialog method that displays the chooser Returns int ( JFileChooser.APPROVE_OPTION ) CS 6452: Prototyping Interactive Systems 4

  5. Bigger Text Areas JTextArea – Multiple rows of text Constructor JTextArea(int rows, int cols) setText method puts text in there By default, editable – Change via .setEditable(false) DisplayFile program CS 6452: Prototyping Interactive Systems 5

  6. Program public class DisplayFile { public static void main (String[] args) throws IOException { JFrame frame = new JFrame ("Display File"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); JTextArea ta = new JTextArea (20, 30); JFileChooser chooser = new JFileChooser(); int status = chooser.showOpenDialog (null); if (status != JFileChooser.APPROVE_OPTION) ta.setText ("No File Chosen"); else { Uses both 
 File file = chooser.getSelectedFile(); Scanner scan = new Scanner (file); components String info = ""; while (scan.hasNext()) info += scan.nextLine() + "\n"; ta.setText (info); } frame.getContentPane().add (ta); frame.pack(); frame.setVisible(true); } } CS 6452: Prototyping Interactive Systems 6

  7. Choosing Colors JColorChooser – Special color choice dialog JColorChooser.showDialog(Component parent, String s, Color initCol) Different method, just invoke static method rather than create an object DisplayColor program CS 6452: Prototyping Interactive Systems 7

  8. Program public class DisplayColor { public static void main (String[] args) { JFrame frame = new JFrame ("Display Color"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); JPanel colorPanel = new JPanel(); colorPanel.setBackground (Color.white); colorPanel.setPreferredSize (new Dimension (300, 100)); frame.getContentPane().add (colorPanel); frame.pack(); frame.setVisible(true); Color shade = Color.white; int again; do { shade = JColorChooser.showDialog (frame, "Pick a Color!", shade); colorPanel.setBackground (shade); again = JOptionPane.showConfirmDialog (null, "Display another color?"); } while (again == JOptionPane.YES_OPTION); } } CS 6452: Prototyping Interactive Systems 8

  9. Choosing a Value JSlider – Java scrollbar JSlider(HorizOrVert, minval, maxval, startval) 0 100 200 Major 
 Minor 
 tickmark tickmark Uses ChangeListener interface and stateChanged() method Generates ChangeEvent object CS 6452: Prototyping Interactive Systems 9

  10. Code in t-square SlideColor program CS 6452: Prototyping Interactive Systems 10

  11. Pull-down Menus JComboBox takes an array of strings (menu choices) Menu choice triggers actionPerformed combo.getSelectedIndex() gets index of choice JukeBox program CS 6452: Prototyping Interactive Systems 11

  12. Key Code URL url1, url2; url1 = url2 = null; // Obtain and store the audio clips to play //continuing… try { private class ComboListener implements ActionListener url1 = new URL ("file", "localhost", "jeopardy.au"); { url2 = new URL ("file", "localhost", "classical.wav"); public void actionPerformed (ActionEvent event) } { catch (Exception exception) {} if (current != null) current.stop(); music = new AudioClip[7]; music[0] = null; // Corresponds to "Make a Selection..." current = music[musicCombo.getSelectedIndex()]; music[1] = JApplet.newAudioClip (url1); } music[2] = JApplet.newAudioClip (url2); } // Create the list of strings for the combo box options private class ButtonListener implements ActionListener String[] musicNames = {"Make A Selection...", "Jeopardy theme", { "Classical Melody"}; public void actionPerformed (ActionEvent event) { musicCombo = new JComboBox (musicNames); if (current != null) musicCombo.setAlignmentX (Component.CENTER_ALIGNMENT); current.stop(); // Set up the buttons if (event.getSource() == playButton) playButton = new JButton ("Play", new ImageIcon ("play.gif")); if (current != null) playButton.setBackground (Color.white); current.play(); playButton.setMnemonic ('p'); } } musicCombo.addActionListener (new ComboListener()); } playButton.addActionListener (new ButtonListener()); current = null; } // continued… JukeBox program CS 6452: Prototyping Interactive Systems 12

  13. Neat Stuff Add tooltips to buttons JButton button = new JButton("Compute"); button.setToolTipText("Calculates total cost"); Add a short-cut key method ALT-C activates it button.setMnemonic('C'); Disable a button button.setEnabled(false); CS 6452: Prototyping Interactive Systems 13

  14. Mouse Events Mouse events Pressed Get (order): Released press Clicked – no movement in between release Entered click (component) Exited Mouse motion events Moved (get lots of them) Dragged We have to decide what we want to listen for CS 6452: Prototyping Interactive Systems 14

  15. Example Program 1 Dots program CS 6452: Prototyping Interactive Systems 15

  16. Example Program 1 public class DotsPanel extends JPanel { //continuing… private final int SIZE = 6; // radius of each dot private ArrayList<Point> pointList; private class DotsListener implements MouseListener { public DotsPanel() public void mousePressed (MouseEvent event) { { pointList = new ArrayList<Point>(); pointList.add(event.getPoint()); repaint(); addMouseListener (new DotsListener()); } public void mouseClicked (MouseEvent event) {} setBackground (Color.black); public void mouseReleased (MouseEvent event) {} setPreferredSize (new Dimension(300, 200)); public void mouseEntered (MouseEvent event) {} } public void mouseExited (MouseEvent event) {} } public void paintComponent (Graphics page) } { super.paintComponent(page); page.setColor (Color.green); for (Point spot : pointList) page.fillOval (spot.x-SIZE, spot.y-SIZE, SIZE*2, SIZE*2); Mouse listening has the page.drawString ("Count: " + pointList.size(), 5, 15); five events } // continued… Dots program CS 6452: Prototyping Interactive Systems 16

  17. Example Program 2 (Color changes if in left or right) MouseFollow program CS 6452: Prototyping Interactive Systems 17

  18. Example Program 2 public class MouseFollowPanel extends JPanel { //continuing… private boolean left = true; private class LineListener implements public MouseFollowPanel() MouseMotionListener { { LineListener listener = new LineListener(); public void mouseDragged (MouseEvent event) addMouseMotionListener (listener); { Point p; setBackground (Color.black); setPreferredSize (new Dimension(400, 200)); p = event.getPoint(); } if (p.getX() < 200) left = true; public void paintComponent (Graphics page) else { left = false; super.paintComponent(page); repaint(); if (left == true) } setBackground(Color.blue); else public void mouseMoved (MouseEvent event) setBackground(Color.red); { } Point p; p = event.getPoint(); // continuing… if (p.getX() < 200) left = true; else left = false; repaint(); } } } Two motion events MouseFollow program CS 6452: Prototyping Interactive Systems 18

  19. Example Program 3 RubberLines program CS 6452: Prototyping Interactive Systems 19

  20. Example Program 3 public class RubberLinesPanel extends JPanel { //continuing… private Point point1 = null, point2 = null; private class LineListener implements MouseListener, public RubberLinesPanel() { MouseMotionListener LineListener listener = new LineListener(); { addMouseListener (listener); public void mousePressed (MouseEvent event) addMouseMotionListener (listener); { point1 = event.getPoint(); setBackground (Color.black); } setPreferredSize (new Dimension(400, 200)); } public void mouseDragged (MouseEvent event) { public void paintComponent (Graphics page) point2 = event.getPoint(); { repaint(); super.paintComponent (page); } page.setColor (Color.yellow); public void mouseClicked (MouseEvent event) {} if (point1 != null && point2 != null) public void mouseReleased (MouseEvent event) {} page.drawLine (point1.x, point1.y, point2.x, point2.y); public void mouseEntered (MouseEvent event) {} } public void mouseExited (MouseEvent event) {} // continues… public void mouseMoved (MouseEvent event) {} } } RubberLines program CS 6452: Prototyping Interactive Systems 20

  21. Things to Try • Comment out super.paintComponent() • Put point1 = point2 in dragged first − That doesn't work – Why? • Put point1 = point2 in repaint() CS 6452: Prototyping Interactive Systems 21

  22. Example Program 4 Draw program CS 6452: Prototyping Interactive Systems 22

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend