Опубликован: 18.03.2010 | Доступ: свободный | Студентов: 840 / 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);
}
Антон Зубеков
Антон Зубеков

Здравствуйте, подскажите пожалуйста где можно достать материалы по курсу Кросс-платформенные и многозвенные технологии, о которых говориться, к примеру, в Лекции 2. Пример "Служба мгновенных сообщений"