Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 A Quick Java Swing Tutorial. 2 Introduction Swing – A set of GUI classes –Part of the Java's standard library –Much better than the previous library:

Similar presentations


Presentation on theme: "1 A Quick Java Swing Tutorial. 2 Introduction Swing – A set of GUI classes –Part of the Java's standard library –Much better than the previous library:"— Presentation transcript:

1 1 A Quick Java Swing Tutorial

2 2 Introduction Swing – A set of GUI classes –Part of the Java's standard library –Much better than the previous library: AWT Abstract Window Toolkit Highlights –A rich set of widgets Widget: Any GUI element (also called: components) –Contents and shape are separated (MVC support)‏ –Fine-grained control over the behavior and look and feel –Platform independent Isolates the programmer from the operating system's GUI

3 3 Swing Components Containers –Contain and manage other components. –Top Level/Internal –Examples: JFrame (Top Level), JScrollPane, JPanel. Basic controls –Atomic components –Used for showing ouput and/or getting some input –Inherits JComponent –Examples: JButton, JLabel, JTextArea, JTable, Jlist Usually every Swing class extends the corresponding AWT class –For backward-compatibility reasons

4 4 My First Swing Program import javax.swing.*; import java.awt.BorderLayout; public class First { public static void main(String[] args) { JFrame frame = new JFrame("My First Frame"); // operation to do when the window is closed. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(new JLabel("I Love Swing"), BorderLayout.CENTER); frame.pack(); frame.setVisible(true); }

5 5 Top Level Containers: JFrame javax.swing.JFrame : –Top-level window with a title and a border. –Usually used as a program's main window

6 6 More on JFrame Made of several layers Widgets are added to the Content Pane layer. –Use getContentPane() to obtain it Other layers are used for customizing the window's appearence

7 7 Top Level Containers: JDialog javax.swing.JDialog : –More simple and limited than frames –Typically used for showing a short message on the screen –Also has a border and a title bar –May have an owner If the owner is invisible the dialog will also be invisible –Use the static method of JoptionPane to show standard dialog boxes: JOptionPane.showMessageDialog(null, "4+2=6");

8 8 Top Level Containers: JFileChooser javax.swing.JFileChooser : –Allows the the user to choose a file –Supports “open” and “save”: showOpenDialog(),showSaveDialog()‏ JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(null); if(returnVal == JFileChooser.APPROVE_OPTION) System.out.println("File: " + fc.getSelectedFile());

9 Example Program Using JFileChooser

10 import javax.swing.*; import java.awt.BorderLayout; public class Second { public static void main(String[] args) { JFrame frame = new JFrame("My First Frame"); // operation to do when the window is closed. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(new JLabel("I Love Swing"), BorderLayout.CENTER); frame.pack(); frame.setVisible(true);

11 JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(null); if(returnVal == JFileChooser.APPROVE_OPTION) System.out.println("File: " + fc.getSelectedFile()); }

12 Amending this to choose a file for input import javax.swing.*; import java.awt.BorderLayout; import java.io.*; public class Third { public static void main(String[] args) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(null); if(returnVal == JFileChooser.APPROVE_OPTION) System.out.println("File: " + fc.getSelectedFile());

13 Next try { // Open the file that is the first // command line parameter FileInputStream fstream = new FileInputStream(fc.getSelectedFile()); // Convert our input stream to a // DataInputStream DataInputStream in = new DataInputStream(fstream);

14 finally // Continue to read lines while // there are still some left to read while (in.available() !=0) { // Print file line to screen System.out.println (in.readLine()); } in.close(); } catch (Exception e) { System.err.println("File input error"); }

15 And Using this to save a file for Output

16 import javax.swing.*; import java.awt.BorderLayout; import java.io.*; public class Fourth { public static void main(String[] args) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showSaveDialog(null); if(returnVal == JFileChooser.APPROVE_OPTION) System.out.println("File: " + fc.getSelectedFile()); FileOutputStream out; // declare a file output object PrintStream p; // declare a print stream object

17 try { // Create a new file output stream // connected to "myfile.txt" out = new FileOutputStream(fc.getSelectedFile()); // Connect print stream to the output stream p = new PrintStream( out ); p.println ("This is written to a file"); p.close(); }

18 catch (Exception e) { System.err.println ("Error writing to file"); }

19 19 Internal Containers Not Top level containers Can contain other non-top level components Examples: –JScrollPane : Provides a scrollable view of its components –JSplitPane : Separates two components –JTabbedPane : User chooses which component to see

20 20 Containers - Layout Each container has a layout manager –Determines the size, location of contained widgets. Setting the current layout of a container: void setLayout(LayoutManager lm) LayoutManager implementing classes: –BorderLayout –BoxLayout –FlowLayout –GridLayout

21 21 Containers - Layout

22 22 Swing Components

23 23 Swing Components

24 24 First Swing Program Revisited import javax.swing.*; import java.awt.BorderLayout; public class First { public static void main(String[] args) { JFrame frame = new JFrame("My First Frame"); // operation to do when the window is closed. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(new JLabel("I Love Swing"), BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } Create a frame Create a text label Add the label to the content pane Choose the border layout Specify CENTER as the layout position

25 25 Input So we now know how to present widgets on the screen A program also needs to react to the user's actions Examples: –When the user presses a button we want to save a file –When the user closes the program we want to ask “are you sure?” –... Swing mechanism: Events and Listeners

26 26 Events, Listeners Swing defines all sorts of Listener interfaces –E.g.: ActionListener, MouseMotionListener, WindowListener,... public interface ActionListener extends EventListener { public void actionPerformed(ActionEvent e); } public interface MouseMotionListener extends EventListener { public void mouseDragged(MouseEvent e); public void mouseMoved(MouseEvent e); } There are default (empty) implementations for many of the listeners –E.g.: MouseMotionAdapter, WindowAdapter

27 27 Events, Listeners (cont.)‏ A listener is an object that implements a listener interface If we need to react to an event (on a certain widget) we register a listener object with that widget E.g.: addActionListener() registers an action listener with its receiver: JButton button = new JButton(); ActionListener listener =...; button.addActionListener(listener); When an event occurs, all registered listeners are notified –The appropriate listener method (e.g: actionPerformed() ) is invoked –An object describing the event is passed as a parameter

28 28 Event Handling Demo: GUI

29 29 Event Handling Demo: Code import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Events implements ActionListener { public Events() { JFrame frame = new JFrame("Events"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new FlowLayout()); JButton b = new JButton("Click me!"); b.addActionListener(this); frame.getContentPane().add(b); frame.pack(); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Thank you"); } public static void main(String[] args) { new Events(); } }

30 30 Inner Classes Nested within another classes Instance specific: –Has access to methods & fields of the object that created it –=> An inner class has TWO this variables Can be static –Can access only static members and methods only –A static method cannot create a non-static inner class

31 31 Local Classes Same as inner classes but defined inside a method Has access to local variables of the enclosing method –Only if the variable is defined as final Can be anonymous –Doesn’t have a name.

32 32 Event Handling Demo: Local Class import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Events { public Events() { JFrame frame = new JFrame("Events"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new FlowLayout()); JButton b = new JButton("Click me!"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Thank you"); } }); frame.getContentPane().add(b); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new Events(); } }

33 Example of using RadioButtons

34 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class SelectRadioButton{ JLabel label; public SelectRadioButton(){ JFrame frame = new JFrame("Radio button selection"); JRadioButton first = new JRadioButton("First"); JRadioButton second = new JRadioButton("Second"); JRadioButton third = new JRadioButton("Third"); JRadioButton fourth = new JRadioButton("Fourth"); JRadioButton fifth = new JRadioButton("Fifth");

35 JPanel panel = new JPanel(); panel.add(first); panel.add(second); panel.add(third); panel.add(fourth); panel.add(fifth); ButtonGroup bg = new ButtonGroup(); bg.add(first); bg.add(second); bg.add(third); bg.add(fourth); bg.add(fifth);

36 first.addActionListener(new MyAction()); second.addActionListener(new MyAction()); third.addActionListener(new MyAction()); fourth.addActionListener(new MyAction()); fifth.addActionListener(new MyAction()); label = new JLabel("Roseindia.net"); frame.add(panel, BorderLayout.NORTH); frame.add(label, BorderLayout.CENTER); frame.setSize(400, 400); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

37 public class MyAction implements ActionListener{ public void actionPerformed(ActionEvent e){ label.setText(e.getActionCommand()); JOptionPane.showMessageDialog(null,"This is the " + e.getActionCommand() + " radio button."); } public static void main(String[] args){ SelectRadioButton sr = new SelectRadioButton(); }

38 CheckBox example Compliments of Java Docs

39 Structure of Exams 4 questions Do 1 and any 2 others

40 Declare Checkboxes import java.awt.*; import java.awt.event.*; import javax.swing.*; //Note: Help for getting the below source code is taken from Java Sun Website public class JCheckBoxDemo extends JPanel { //Four accessory choices provide for 16 different combinations JCheckBox jcbChin; JCheckBox jcbGlasses; JCheckBox jcbHair; JCheckBox jcbTeeth;

41 Add an Item listener for each of the checkboxes /* The image for each combination is contained in a separate image file whose name indicates the accessories. The filenames are "geek-XXXX.gif" where XXXX can be one * of the following 16 choices. */ StringBuffer choices; JLabel jlbPicture; CheckBoxListener myListener = null; public JCheckBoxDemo() { // Add an item listener for each of the check boxes. // This is the listener class which contains business logic myListener = new CheckBoxListener();

42 Add item listeners and Key Stroke access // Create check boxes with default selection true jcbChin = new JCheckBox("Chin"); jcbChin.setMnemonic(KeyEvent.VK_C);//Alt+C Checks/Unchecks the check Box jcbChin.setSelected(true); jcbChin.addItemListener(myListener); jcbGlasses = new JCheckBox("Glasses"); jcbGlasses.setMnemonic(KeyEvent.VK_G); //Alt+G Checks/Unchecks the check Box jcbGlasses.setSelected(true); jcbGlasses.addItemListener(myListener);

43 And Again jcbHair = new JCheckBox("Hair"); jcbHair.setMnemonic(KeyEvent.VK_H); //Alt+H Checks/Unchecks the check Box jcbHair.setSelected(true); jcbHair.addItemListener(myListener); jcbTeeth = new JCheckBox("Teeth"); jcbTeeth.setMnemonic(KeyEvent.VK_T); //Alt+T Checks/Unchecks the check Box jcbTeeth.setSelected(true); jcbTeeth.addItemListener(myListener);

44 Default Image // Indicates what's on the geek. choices = new StringBuffer("cght");//Default Image has all the parts. // Set up the picture label jlbPicture = new JLabel(new ImageIcon("geek-" + choices.toString().trim() + ".gif")); jlbPicture.setToolTipText(choices.toString().trim());

45 Add Checkboxes // Put the check boxes in a column in a panel JPanel jplCheckBox = new JPanel(); jplCheckBox.setLayout(new GridLayout(0, 1));//0 rows, 1 Column jplCheckBox.add(jcbChin); jplCheckBox.add(jcbGlasses); jplCheckBox.add(jcbHair); jplCheckBox.add(jcbTeeth);

46 Impose Layout setLayout(new BorderLayout()); add(jplCheckBox, BorderLayout.WEST); add(jlbPicture, BorderLayout.CENTER); setBorder(BorderFactory.createEmptyBorder(20, 20,20,20)); }

47 Listen for Checkbox event and get source //Listens to the check boxes events class CheckBoxListener implements ItemListener { public void itemStateChanged(ItemEvent e) { int index = 0; char c = '-'; Object source = e.getSource(); if (source == jcbChin) { index = 0; c = 'c'; }

48 else if (source == jcbGlasses) { index = 1; c = 'g'; } else if (source == jcbHair) { index = 2; c = 'h'; } else if (source == jcbTeeth) { index = 3; c = 't'; }

49 Depending on whats clicked display appropriate GIF if (e.getStateChange() == ItemEvent.DESELECTED) c = '-'; choices.setCharAt(index, c); jlbPicture.setIcon(new ImageIcon("geek-" + choices.toString().trim() + ".gif")); jlbPicture.setToolTipText(choices.toString()); }

50 Display Title and Border public static void main(String s[]) { JFrame frame = new JFrame("JCheckBox Usage Demo"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setContentPane(new JCheckBoxDemo()); frame.pack(); frame.setVisible(true); }


Download ppt "1 A Quick Java Swing Tutorial. 2 Introduction Swing – A set of GUI classes –Part of the Java's standard library –Much better than the previous library:"

Similar presentations


Ads by Google