public class OrderDialog extends JDialog
class ButtonHandler implements ActionListener
class DialogPanel extends JPanel
1: import javax.swing.*;
2: import java.awt.event.*;
3: import java.awt.*;
4: import java.io.*;
5:
6: public class OrderDialog extends JDialog {
7: JPanel bottom;
8: JButton okButton, cancelButton;
9: DialogPanel dialogPanel;
10:
11: public OrderDialog(JFrame owner) {
12: super(owner, true);
13: setTitle("Order");
14: okButton = new JButton("Ok");
15: cancelButton = new JButton("Cancel");
16: ButtonHandler bhandler = new ButtonHandler();
17: okButton.addActionListener(makeButtonHandler());
18: cancelButton.addActionListener(bhandler);
19: bottom = new JPanel();
20: bottom.add(okButton);
21: bottom.add(cancelButton);
22: bottom.setBorder(BorderFactory.createEtchedBorder());
23: dialogPanel = new DialogPanel();
24: getContentPane().setLayout(new BorderLayout());
25: getContentPane().add(bottom, BorderLayout.SOUTH);
26: getContentPane().add(dialogPanel, BorderLayout.CENTER);
27: pack();
28: }
29:
30: protected ActionListener makeButtonHandler() {
31: return new ButtonHandler();
32: }
33:
34: class ButtonHandler implements ActionListener {
35: public void actionPerformed(ActionEvent evt) {
36: JButton button = (JButton) evt.getSource();
37: String label = button.getText();
38: if ("Ok".equals(label)) {
39: System.out.println("An order is received:");
40: System.out.println("\tName: " + dialogPanel.nameField.getText());
41: System.out.println("\tAddress: " + dialogPanel.addressField.getText());
42: System.out.println("\tCity: " + dialogPanel.cityField.getText());
43: System.out.println("\tState: " + dialogPanel.stateField.getText());
44: System.out.println("\tZIP: " + dialogPanel.zipField.getText());
45: System.out.println("\tE-Mail: " + dialogPanel.emailField.getText());
46: System.out.print("\tCredit card: ");
47: if (dialogPanel.visaBox.isSelected()) {
48: System.out.println("Visa");
49: } else if (dialogPanel.mcBox.isSelected()) {
50: System.out.println("MasterCard");
51: } else if (dialogPanel.discoverBox.isSelected()) {
52: System.out.println("Discover");
53: }
54: }
55: dialogPanel.reset();
56: setVisible(false);
57: }
58: }
59: }
60:
61:
62: class DialogPanel extends JPanel {
63: JLabel nameLabel;
64: JTextField nameField;
65: JLabel addressLabel;
66: JTextField addressField;
67: JLabel cityLabel;
68: JTextField cityField;
69: JLabel stateLabel;
70: JTextField stateField;
71: JLabel zipLabel;
72: JTextField zipField;
73: JLabel emailLabel;
74: JTextField emailField;
75: JCheckBox visaBox, mcBox, discoverBox;
76: JPanel creditCard;
77: ButtonGroup group;
78:
79: DialogPanel() {
80: nameLabel = new JLabel("Name");
81: nameField = new JTextField();
82: addressLabel = new JLabel("Address");
83: addressField = new JTextField();
84: cityLabel = new JLabel("City");
85: cityField = new JTextField();
86: stateLabel = new JLabel("State");
87: stateField = new JTextField();
88: zipLabel = new JLabel("ZIP");
89: zipField = new JTextField();
90: emailLabel = new JLabel("E-Mail");
91: emailField = new JTextField();
92:
93: creditCard = new JPanel();
94: visaBox = new JCheckBox("Visa", true);
95: mcBox = new JCheckBox("MasterCard");
96: discoverBox = new JCheckBox("Discover");
97: creditCard.add(visaBox);
98: creditCard.add(mcBox);
99: creditCard.add(discoverBox);
100: creditCard.setBorder(BorderFactory.createTitledBorder("Credit Card"));
101: group = new ButtonGroup();
102: group.add(visaBox);
103: group.add(mcBox);
104: group.add(discoverBox);
105:
106: add(nameLabel);
107: add(nameField);
108: add(addressLabel);
109: add(addressField);
110: add(cityLabel);
111: add(cityField);
112: add(stateLabel);
113: add(stateField);
114: add(zipLabel);
115: add(zipField);
116: add(emailLabel);
117: add(emailField);
118: add(creditCard);
119: }
120:
121: public Dimension getPreferredSize() {
122: return new Dimension(350, 200);
123: }
124:
125: public Dimension getMinimumSize() {
126: return new Dimension(350, 200);
127: }
128:
129: public void doLayout() {
130: nameLabel.setBounds(10, 10, 60, 30);
131: nameField.setBounds(70, 15, 270, 20);
132: addressLabel.setBounds(10, 40, 60, 30);
133: addressField.setBounds(70, 45, 270, 20);
134: cityLabel.setBounds(10, 70, 60, 30);
135: cityField.setBounds(70, 75, 100, 20);
136: stateLabel.setBounds(180, 70, 40, 30);
137: stateField.setBounds(220, 75, 30, 20);
138: zipLabel.setBounds(260, 70, 30, 30);
139: zipField.setBounds(290, 75, 50, 20);
140: emailLabel.setBounds(10, 100, 60, 30);
141: emailField.setBounds(70, 105, 270, 20);
142: creditCard.setBounds(10, 140, 330, 50);
143: }
144:
145: public void reset() {
146: nameField.setText("");
147: addressField.setText("");
148: cityField.setText("");
149: stateField.setText("");
150: zipField.setText("");
151: emailField.setText("");
152: visaBox.setSelected(true);
153: }
154: }