The Java Program: Patterns.java

  1 // From Java tutorial
  2 
  3 import java.awt.Color;
  4 import java.awt.GridLayout;
  5 import java.awt.Dimension;
  6 import java.awt.Component;
  7 import java.awt.event.*;
  8 
  9 import javax.swing.JPanel;
 10 import javax.swing.JFrame;
 11 import javax.swing.JLabel;
 12 import javax.swing.JComboBox;
 13 import javax.swing.Box;
 14 import javax.swing.BoxLayout;
 15 import javax.swing.BorderFactory;
 16 import javax.swing.border.*;
 17 
 18 import java.text.SimpleDateFormat;
 19 import java.util.Date;
 20 
 21 public class Patterns extends JPanel {
 22 
 23    JLabel result;
 24 
 25    private final static String[] patternExamples = { 
 26       "dd MMMMM yyyy",
 27       "dd.MM.yy", 
 28       "MM/dd/yy",
 29       "yyyy.MM.dd G 'at' hh:mm:ss z",
 30       "EEE, MMM d, ''yy",
 31       "h:mm a",
 32       "H:mm:ss:SSS",
 33       "K:mm a,z",
 34       "yyyy.MMMMM.dd GGG hh:mm aaa"
 35    };
 36 
 37 
 38    public Patterns () {
 39       // Set up the UI for selecting a pattern.
 40       final JLabel patternLabel = new JLabel("Pattern string:");
 41       final JComboBox patternList = new JComboBox(patternExamples);
 42       patternList.setEditable (true);
 43       patternList.setAlignmentX (Component.LEFT_ALIGNMENT);
 44 
 45       patternList.addActionListener(new ActionListener() {
 46             public void actionPerformed(ActionEvent e) {
 47                final JComboBox cb = (JComboBox)e.getSource();
 48                reformat((String)cb.getSelectedItem());
 49             }
 50          });
 51     
 52       // Create the UI for displaying result
 53       final JLabel resultLabel = new JLabel("Current date and time", JLabel.LEFT);
 54       result = new JLabel(" ");
 55       result.setForeground(Color.black);
 56       result.setBorder(BorderFactory.createCompoundBorder(
 57          BorderFactory.createLineBorder(Color.black),
 58          BorderFactory.createEmptyBorder(5,5,5,5)));
 59     
 60       // Lay out everything
 61       final JPanel patternPanel = new JPanel();
 62       patternPanel.setLayout(new BoxLayout(patternPanel, BoxLayout.Y_AXIS));
 63       patternPanel.add(patternLabel);
 64       patternPanel.add(patternList);
 65     
 66       final JPanel resultPanel = new JPanel();
 67       resultPanel.setLayout(new GridLayout(0, 1));
 68       resultPanel.add(resultLabel);
 69       resultPanel.add(result);
 70     
 71       setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
 72       patternPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
 73       resultPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
 74     
 75       add(patternPanel);
 76       add(Box.createRigidArea(new Dimension(0, 10)));
 77       add(resultPanel);
 78     
 79       setBorder (BorderFactory.createEmptyBorder (10,10,10,10));
 80  
 81       reformat (patternExamples[0]);
 82    } // constructor
 83 
 84    /** Formats and displays today's date. */
 85    public void reformat (String pat) {
 86       final Date today = new Date();
 87       final SimpleDateFormat formatter = new SimpleDateFormat(pat);
 88       try {
 89          final String dateString = formatter.format(today);
 90          result.setForeground(Color.black);
 91          result.setText(dateString);
 92       } catch (IllegalArgumentException iae) {
 93          result.setForeground(Color.red);
 94          result.setText("Error: " + iae.getMessage());
 95       }
 96    }
 97 
 98    public static void main(String s[]) {
 99       final JFrame frame = new JFrame ("Swing JList Demo");
100       // Default content pane is JPanel using the JRootPane layout
101       // manager which acts like BorderLayout.
102       frame.getContentPane().add (new Patterns ());
103       frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Requires Java 1.3
104       frame.pack();
105       frame.setVisible (true);
106    }
107 }