|
Здравствуйте, подскажите пожалуйста где можно достать материалы по курсу Кросс-платформенные и многозвенные технологии, о которых говориться, к примеру, в Лекции 2. Пример "Служба мгновенных сообщений" |
Опубликован: 18.03.2010 | Уровень: специалист | Доступ: платный
Лекция 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);
}