Source code: ledestin/swing/example/EditableTableExample.java
1 /*
2 * Copyright (C) 2000-2001 Dmitry Macsema. All Rights Reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted under the terms of the following
6 * Open Source license:
7 *
8 * The GNU General Public License, version 2, or any later version, as
9 * published by the Free Software Foundation
10 * (http://www.fsf.org/copyleft/gpl.html);
11 */
12
13 package ledestin.swing.example;
14
15 import java.util.*;
16 import java.awt.Frame;
17 import java.awt.BorderLayout;
18 import javax.swing.*;
19 import ledestin.swing.*;
20
21 public class EditableTableExample {
22 public static void main(String[] args) {
23 JFrame frame = new JFrame("Mutable Table Test");
24 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
25
26 //create objects to show in the table
27 User[] names = new User[] {new User("Biv"), new User("Blackwell"), new User("Weirdy")};
28 List list = new ArrayList();
29 for(int i=0; i<names.length; i++) {
30 list.add(names[i]);
31 }
32 //create model
33 CollectionTableModel model = new CollectionTableModel(list, String.class);
34 //instantiate dialog
35 UserEditDialog dialog = new UserEditDialog(frame, "User edit dialog", true);
36 //create table
37 JEditableTable table = new JEditableTable(model, dialog);
38 frame.getContentPane().add(new JScrollPane(table));
39 frame.pack();
40 frame.show();
41 }
42
43 static class User {
44 private String name;
45 User(String name) {
46 this.name = name;
47 }
48 public void setName(String newName) {
49 name = newName;
50 }
51 public String getName() {
52 return name;
53 }
54 public String toString() {
55 return name;
56 }
57 };
58
59 static class UserEditDialog extends JEditableDialog {
60 JLabel l1 = new JLabel("Name:");
61 JTextField nameField = new JTextField(15);
62 User user;
63 UserEditDialog(Frame owner, String title, boolean modal) {
64 super(owner, title, modal);
65 JPanel panel = new JPanel();
66 panel.add(l1);
67 panel.add(nameField);
68 getContentPane().setLayout(new BorderLayout());
69 getContentPane().add(panel, BorderLayout.CENTER);
70 JEditableDialog.addOkCancelPanel(this);
71 }
72 public Object getData() {
73 user.setName(nameField.getText());
74 return user;
75 }
76 public void setData(Object data) {
77 user = (User)data;
78 nameField.setText(user.getName());
79 }
80 };
81 };