Здравствуйте, подскажите пожалуйста где можно достать материалы по курсу Кросс-платформенные и многозвенные технологии, о которых говориться, к примеру, в Лекции 2. Пример "Служба мгновенных сообщений" |
Опубликован: 18.03.2010 | Доступ: свободный | Студентов: 841 / 85 | Оценка: 4.48 / 4.33 | Длительность: 12:01:00
Тема: Программирование
Специальности: Администратор коммуникационных систем
Теги:
Лекция 4:
Технология Enterprise Java Beans. Часть 2
При выделении ячейки столбца "Description" или "Price" появляется кнопка "Edit". Нажав ее можно редактировать описание или цену корабля (Рис. 4.8). Поиск экземпляра компонента по его первичному ключу и изменение поля в этом компоненте выделено жирным шрифтом.
int result = JOptionPane.showOptionDialog(table, new JScrollPane(textField), (String)table.getColumnName(column), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); if (result == JOptionPane.OK_OPTION) { Integer id = (Integer) table.getModel().getValueAt(row, 0); if (id.intValue() > 0) { try { WidgetRemote remote = (WidgetRemote) home.findByPrimaryKey(id); remote.setDescription(textField.getText()); table.setValueAt(textField.getText(), row, column); table.invalidate(); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } } }
Код клиентского приложения состоит из двух файлов - ButtonTableCellEditor.java и WidgetEditClient.java. Класс ButtonTableCellEditor из одноименного файла предоставляет возможность для создания редактируемых при помощи кнопки ячеек таблицы. С его помощью можно редактировать поля и удалять экземпляры компонентов из базы данных.
public abstract class ButtonTableCellEditor implements TableCellEditor, ActionListener { private TableCellEditor editor; private JButton customEditorButton; protected JTable table; protected int row, column; public ButtonTableCellEditor(TableCellEditor editor, String buttonName) { this.editor = editor; customEditorButton = new JButton(buttonName); customEditorButton.addActionListener(this); customEditorButton.setFocusable(false); customEditorButton.setFocusPainted(false); customEditorButton.setMargin(new Insets(0, 0, 0, 0)); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { JPanel panel = new JPanel(new BorderLayout()); panel.add(editor.getTableCellEditorComponent(table, value, isSelected, row, column)); panel.add(customEditorButton, BorderLayout.EAST); this.table = table; this.row = row; this.column = column; return panel; } public Object getCellEditorValue() { return editor.getCellEditorValue(); } public boolean isCellEditable(EventObject anEvent) { return editor.isCellEditable(anEvent); } public boolean shouldSelectCell(EventObject anEvent) { return editor.shouldSelectCell(anEvent); } public boolean stopCellEditing() { return editor.stopCellEditing(); } public void cancelCellEditing() { editor.cancelCellEditing(); } public void addCellEditorListener(CellEditorListener l) { editor.addCellEditorListener(l); } public void removeCellEditorListener(CellEditorListener l) { editor.removeCellEditorListener(l); } public final void actionPerformed(ActionEvent e) { editor.cancelCellEditing(); editCell(table, row, column); } protected abstract void editCell(JTable table, int row, int column); }