|
1. Introduction | |
2. Combining menues and text fields | |
3. Combining menues and text fields (Swing example) | |
4. Combining menues and text areas | |
5. Combining menues and text areass (Swing example) |
In this WWW page I intend to inlude further examples of GUIs involving menues as and when the need arrises.
The code presented in Table 1 causes text to appear in the text field each time a menu item is selected. Some example output is given in Figure 1.
// Menu Example 2 // Frans Coenen // Thursday 13 March 2003 // Dept. of Comp. Sci., University of Liverpool import java.awt.*; import java.awt.event.*; public class MenuExample2 extends Frame implements WindowListener, ActionListener { /* ------------------------------------------------- */ /* */ /* FIELDS */ /* */ /* ------------------------------------------------- */ private MenuBar bar = new MenuBar(); private Menu lang = new Menu("LANGUAGES"); private Menu para = new Menu("PARADIGM"); private TextField aTextField = new TextField(57); /* ------------------------------------------------- */ /* */ /* CONSTRUCTORS */ /* */ /* ------------------------------------------------- */ public MenuExample2(String text) { super(text); setBackground(Color.magenta); setLayout(new FlowLayout()); addWindowListener(this); // Create lang menu lang.add("Ada"); lang.add("C++"); lang.add("Java"); lang.add("Pascal"); lang.add("Prolog"); lang.add("Miranda"); // Create paradigm menu para.add("Imperative"); para.add("Object oriented"); para.add("Logic"); para.add("Functional"); // Add items to bar bar.add(lang); bar.add(para); this.setMenuBar(bar); // Non-editable text field aTextField.setEditable(false); add(aTextField); // Add event listeners lang.addActionListener(this); para.addActionListener(this); } /* ------------------------------------------------- */ /* */ /* METHODS */ /* */ /* ------------------------------------------------- */ /* ACTION PERFORMED */ /* Process textfield events */ public void actionPerformed(ActionEvent event) { // User selected from pradigm menu if (event.getSource() == lang) { String nameOfItem = event.getActionCommand(); outputParadigmForGivenLanguage(nameOfItem); System.out.println(nameOfItem); } // User selected from language menu else if (event.getSource() == para) { String nameOfItem = event.getActionCommand(); outputLanguageForGivenParadigm(nameOfItem); System.out.println(nameOfItem); } } /* OUTPUT PARADIGM FOR GIVEN LANGUAGE */ public void outputParadigmForGivenLanguage(String nameOfItem) { if (nameOfItem.equals("Ada")) aTextField.setText(nameOfItem + " is an Imperative programming langauge"); else if (nameOfItem.equals("C++")) aTextField.setText(nameOfItem + " is an Object Oriented programming langauge"); else if (nameOfItem.equals("Java")) aTextField.setText(nameOfItem + " is an Object Oriented programming langauge"); else if (nameOfItem.equals("Pascal")) aTextField.setText(nameOfItem + " is an Imperative programming langauge"); else if (nameOfItem.equals("Prolog")) aTextField.setText(nameOfItem + " is an Logic programming langauge"); else if (nameOfItem.equals("Miranda")) aTextField.setText(nameOfItem + " is an Functional programming langauge"); else aTextField.setText("UNEXPECTED ERROR!"); } /* OUTPUT LANGUAGE FOR GIVEN PARADIGM */ public void outputLanguageForGivenParadigm(String nameOfItem) { if (nameOfItem.equals("Imperative")) aTextField.setText("Examples of " + nameOfItem + " programming languages include Ada and pascal"); else if (nameOfItem.equals("Object oriented")) aTextField.setText("Examples of " + nameOfItem + "programming languages include C++ and Java"); else if (nameOfItem.equals("Logic")) aTextField.setText("Examples of " + nameOfItem + "programming languages include Prolog"); else if (nameOfItem.equals("Functional")) aTextField.setText("Examples of " + nameOfItem + "programming languages include Miranda"); else aTextField.setText("UNEXPECTED ERROR!"); } /* WINDOW EVENT HANDLERS */ /* Window Closing */ public void windowClosing(WindowEvent event) { System.exit(0); } /* Window Closed */ public void windowClosed(WindowEvent event) {} /* Window Deiconified */ public void windowDeiconified(WindowEvent event) {} /* Window Iconified */ public void windowIconified(WindowEvent event) {} /* Window Activated */ public void windowActivated(WindowEvent event) {} /* Window Deactivated */ public void windowDeactivated(WindowEvent event) {} /* Window Opened */ public void windowOpened(WindowEvent event) {} } /* -------------------------------------------------- */ /* */ /* APPLICATION CLASS */ /* */ /* -------------------------------------------------- */ class MenuExample2App { /* Main method */ public static void main(String[] args) { MenuExample2 screen = new MenuExample2("Menu example1 2"); screen.setSize(500,100); screen.setVisible(true); } } |
Table 1:Linking menu selections and text fields
Figure 1: Some output produced by code presemted in Table 1
The Java code presented in Table 2 has the same functionality to that presented in table 1 but is encoded using Java Swing. It will be noted that the code is organised in a significantly different manner to that presented in Table 1. Some sample output is presented in Figure 2.
// Menu Example 3 // Frans Coenen // Thursday 13 March 2003 // Dept. of Comp. Sci., University of Liverpool import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MenuExample3 extends JFrame implements ActionListener { /* ------------------------------------------------- */ /* */ /* FIELDS */ /* */ /* ------------------------------------------------- */ private JMenuBar bar = new JMenuBar(); private JMenu lang = new JMenu("LANGUAGES"); private JMenu para = new JMenu("PARADIGM"); JMenuItem adaItem, cppItem, javItem, pasItem, proItem, mirItem; JMenuItem impItem, objItem, logItem, funItem; private JTextField aTextField = new JTextField(42); /* ------------------------------------------------- */ /* */ /* CONSTRUCTORS */ /* */ /* ------------------------------------------------- */ public MenuExample3(String text) { super(text); Container container = getContentPane(); container.setLayout(new FlowLayout()); container.setBackground(Color.magenta); // Create lang menu createLangMenuItem(lang,adaItem,"Ada",'A'); createLangMenuItem(lang,cppItem,"C++",'C'); createLangMenuItem(lang,javItem,"Java",'J'); createLangMenuItem(lang,mirItem,"Miranda",'M'); createLangMenuItem(lang,pasItem,"Pascal",'P'); createLangMenuItem(lang,proItem,"Prolog",'r'); // Create paradigm menu createLangMenuItem(para,impItem,"Imperative",'I'); createLangMenuItem(para,impItem,"Object oriented",'O'); createLangMenuItem(para,impItem,"Logic",'L'); createLangMenuItem(para,impItem,"Functional",'F'); // Add items to bar bar.add(lang); bar.add(para); setJMenuBar(bar); // Non-editable text field aTextField.setEditable(false); container.add(aTextField); } private void createLangMenuItem(JMenu menu, JMenuItem menuItem, String text, char c) { menuItem = new JMenuItem(text); menuItem.setMnemonic(c); menu.add(menuItem); menuItem.addActionListener(this); } /* ------------------------------------------------- */ /* */ /* METHODS */ /* */ /* ------------------------------------------------- */ /* ACTION PERFORMED */ /* Process textfield events */ public void actionPerformed(ActionEvent event) { String nameOfItem = event.getActionCommand(); outputInformation(nameOfItem); System.out.println(nameOfItem); } /* OUTPUT PARADIGM FOR GIVEN LANGUAGE */ public void outputInformation(String nameOfItem) { if (nameOfItem.equals("Ada")) aTextField.setText(nameOfItem + " is an Imperative programming langauge"); else if (nameOfItem.equals("C++")) aTextField.setText(nameOfItem + " is an Object Oriented programming langauge"); else if (nameOfItem.equals("Java")) aTextField.setText(nameOfItem + " is an Object Oriented programming langauge"); else if (nameOfItem.equals("Pascal")) aTextField.setText(nameOfItem + " is an Imperative programming langauge"); else if (nameOfItem.equals("Prolog")) aTextField.setText(nameOfItem + " is an Logic programming langauge"); else if (nameOfItem.equals("Miranda")) aTextField.setText(nameOfItem + " is an Functional programming langauge"); else if (nameOfItem.equals("Imperative")) aTextField.setText("Examples of " + nameOfItem + " programming languages include Ada and pascal"); else if (nameOfItem.equals("Object oriented")) aTextField.setText("Examples of " + nameOfItem + "programming languages include C++ and Java"); else if (nameOfItem.equals("Logic")) aTextField.setText("Examples of " + nameOfItem + "programming languages include Prolog"); else if (nameOfItem.equals("Functional")) aTextField.setText("Examples of " + nameOfItem + "programming languages include Miranda"); else aTextField.setText("UNEXPECTED ERROR!"); } } /* -------------------------------------------------- */ /* */ /* APPLICATION CLASS */ /* */ /* -------------------------------------------------- */ class MenuExample3App { /* Main method */ public static void main(String[] args) { MenuExample3 screen = new MenuExample3("Menu example1 3"); screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); screen.setSize(500,100); screen.setVisible(true); } } |
Table 2:Linking menu selections and text fields (Swing example)
Figure 2: Some output produced by code presemted in Table 2
The code presented in Table 3 causes text to appear in the text area each time a menu item is selected. Some example output is given in Figure 1.
// Menu Example 4 // Frans Coenen // Thursday 13 March 2003 // Dept. of Comp. Sci., University of Liverpool import java.awt.*; import java.awt.event.*; public class MenuExample2 extends Frame implements WindowListener, ActionListener { /* ------------------------------------------------- */ /* */ /* FIELDS */ /* */ /* ------------------------------------------------- */ private MenuBar bar = new MenuBar(); private Menu lang = new Menu("LANGUAGES"); private Menu para = new Menu("PARADIGM"); private TextArea aTextArea; /* ------------------------------------------------- */ /* */ /* CONSTRUCTORS */ /* */ /* ------------------------------------------------- */ public MenuExample2(String text) { super(text); setBackground(Color.magenta); setLayout(new FlowLayout()); addWindowListener(this); // Create lang menu lang.add("Ada"); lang.add("C++"); lang.add("Java"); lang.add("Pascal"); lang.add("Prolog"); lang.add("Miranda"); // Create paradigm menu para.add("Imperative"); para.add("Object oriented"); para.add("Logic"); para.add("Functional"); // Add items to bar bar.add(lang); bar.add(para); this.setMenuBar(bar); // Text area aTextArea = new TextArea("",5,45,TextArea.SCROLLBARS_BOTH); add(aTextArea); // Add event listeners lang.addActionListener(this); para.addActionListener(this); } /* ------------------------------------------------- */ /* */ /* METHODS */ /* */ /* ------------------------------------------------- */ /* ACTION PERFORMED */ /* Process textfield events */ public void actionPerformed(ActionEvent event) { // As in Table 1 } /* OUTPUT PARADIGM FOR GIVEN LANGUAGE */ public void outputParadigmForGivenLanguage(String nameOfItem) { // As in Table 1 } /* OUTPUT LANGUAGE FOR GIVEN PARADIGM */ public void outputLanguageForGivenParadigm(String nameOfItem) { if (nameOfItem.equals("Imperative")) aTextArea.setText("Examples of the " + nameOfItem + "\nprogramming languages include Ada and pascal"); else if (nameOfItem.equals("Object oriented")) aTextArea.setText("Examples of the " + nameOfItem + "\nprogramming languages include C++ and Java"); else if (nameOfItem.equals("Logic")) aTextArea.setText("Examples of the " + nameOfItem + "\nprogramming languages include Prolog"); else if (nameOfItem.equals("Functional")) aTextArea.setText("Examples of the " + nameOfItem + "\nprogramming languages include Miranda"); else aTextArea.setText("UNEXPECTED ERROR!"); } /* WINDOW EVENT HANDLERS */ // As in table 1 /* -------------------------------------------------- */ /* */ /* APPLICATION CLASS */ /* */ /* -------------------------------------------------- */ class MenuExample4App { /* Main method */ public static void main(String[] args) { MenuExample4 screen = new MenuExample4("Menu example1 2"); screen.setSize(500,200); screen.setVisible(true); } } |
Table 3:Linking menu selections and text areas
Figure 1: Some output produced by code presemted in Table 3
The Java code presented in Table 4 has the same functionality to that presented in table 3 but is encoded using Java Swing. Some sample output is presented in Figure 2.
// Menu Example 5 // Frans Coenen // Thursday 13 March 2003 // Dept. of Comp. Sci., University of Liverpool import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MenuExample5 extends JFrame implements ActionListener { /* ------------------------------------------------- */ /* */ /* FIELDS */ /* */ /* ------------------------------------------------- */ private JMenuBar bar = new JMenuBar(); private JMenu lang = new JMenu("LANGUAGES"); private JMenu para = new JMenu("PARADIGM"); private JMenuItem adaItem, cppItem, javItem, pasItem, proItem, mirItem; private JMenuItem impItem, objItem, logItem, funItem; private JTextArea aTextArea; /* ------------------------------------------------- */ /* */ /* CONSTRUCTORS */ /* */ /* ------------------------------------------------- */ public MenuExample3(String text) { super(text); Container container = getContentPane(); container.setLayout(new FlowLayout()); container.setBackground(Color.magenta); // Create lang menu createLangMenuItem(lang,adaItem,"Ada",'A'); createLangMenuItem(lang,cppItem,"C++",'C'); createLangMenuItem(lang,javItem,"Java",'J'); createLangMenuItem(lang,mirItem,"Miranda",'M'); createLangMenuItem(lang,pasItem,"Pascal",'P'); createLangMenuItem(lang,proItem,"Prolog",'r'); // Create paradigm menu createLangMenuItem(para,impItem,"Imperative",'I'); createLangMenuItem(para,impItem,"Object oriented",'F'); createLangMenuItem(para,impItem,"Logic",'L'); createLangMenuItem(para,impItem,"Functional",'O'); // Add items to bar bar.add(lang); bar.add(para); setJMenuBar(bar); // Text area aTextArea = new JTextArea(5,30); container.add(new JScrollPane(aTextArea)); } private void createLangMenuItem(JMenu menu, JMenuItem menuItem, // As in Table 2 } /* ------------------------------------------------- */ /* */ /* METHODS */ /* */ /* ------------------------------------------------- */ /* ACTION PERFORMED */ /* Process textfield events */ public void actionPerformed(ActionEvent event) { // As in table 2 } /* OUTPUT PARADIGM FOR GIVEN LANGUAGE */ public void outputInformation(String nameOfItem) { if (nameOfItem.equals("Ada")) aTextField.setText(nameOfItem + " is an Imperative programming langauge"); else if (nameOfItem.equals("C++")) aTextField.setText(nameOfItem + " is an Object Oriented programming langauge"); else if (nameOfItem.equals("Java")) aTextField.setText(nameOfItem + " is an Object Oriented programming langauge"); else if (nameOfItem.equals("Pascal")) aTextField.setText(nameOfItem + " is an Imperative programming langauge"); else if (nameOfItem.equals("Prolog")) aTextField.setText(nameOfItem + " is an Logic programming langauge"); else if (nameOfItem.equals("Miranda")) aTextField.setText(nameOfItem + " is an Functional programming langauge"); else if (nameOfItem.equals("Imperative")) aTextArea.setText("Examples of " + nameOfItem + "\nprogramming languages include Ada and pascal"); else if (nameOfItem.equals("Object oriented")) aTextArea.setText("Examples of " + nameOfItem + "\nprogramming languages include C++ and Java"); else if (nameOfItem.equals("Logic")) aTextArea.setText("Examples of " + nameOfItem + "\nprogramming languages include Prolog"); else if (nameOfItem.equals("Functional")) aTextArea.setText("Examples of " + nameOfItem + "\nprogramming languages include Miranda"); else aTextField.setText("UNEXPECTED ERROR!"); } } /* -------------------------------------------------- */ /* */ /* APPLICATION CLASS */ /* */ /* -------------------------------------------------- */ class MenuExample3App { /* Main method */ public static void main(String[] args) { MenuExample5 screen = new MenuExample5("Menu example1 3"); screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); screen.setSize(500,200); screen.setVisible(true); } } |
Table 2:Linking button presses and text areas (Swing example)
Figure 2: Some output produced by code presemted in Table 2
Created and maintained by Frans Coenen. Last updated 13 March 2003