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 }