Rambler's Top100IT • archiv

rus / eng | Логин | Комментарий к колонке | Печать | Почта | Клуб




Колонки


Библиотека dbSwing: проблема с JdbTable

 
( Вадим Криц )

Не все, кто работает с JBuilder 4 Enterprise, наверное, заметили странное поведение JdbTable. А именно, если у DataSet на который она ссылается одно из пропертей (readOnly = true, editable = false, enableInsert = false), или у самой JdbTable editable = false, то навигация по стрелке вниз не работает. Ошибка находится в классе AppendRowAction.

Два варианта решения этой проблемы: 1.Можно создать расширение класса от JdbTable:

import java.awt.event.*;
import javax.swing.*;
import com.borland.dbswing.*;
import com.borland.dx.dataset.*;
public class JdbTableEx extends JdbTable {
  private DataSet dataSet;
  public JdbTableEx() {
    super();
  }
  private class AppendRowAction extends AbstractAction {
    private AppendRowAction() {
      super("append-row");
    }
    public void actionPerformed(ActionEvent e) {
    if (dataSet != null) {
      boolean readOnly = false;
      if (dataSet instanceof StorageDataSet) {
        readOnly = ((StorageDataSet) dataSet).isReadOnly();
      }
      try {
        if (!dataSet.atLast()) {
          dataSet.next();
        }
        else {
        if (!readOnly && JdbTableEx.this.isEditable() &&
         dataSet.isEnableInsert() && !dataSet.isEditingNewRow() &&
         dataSet.isEditable()) {
          dataSet.insertRow(false);
        }
        }
      }
      catch (DataSetException ex) {
      DBExceptionHandler.handleException(dataSet, JdbTableEx.this, ex);
      }
    }
  }
 }
  public void updateUI() {
   super.updateUI();
   unregisterKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
   registerKeyboardAction(new AppendRowAction(),
        KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0),
        JComponent.WHEN_FOCUSED);
 }
  public void setDataSet(DataSet dataSet) {
    super.setDataSet(dataSet);
    this.dataSet = dataSet;
  }
  public DataSet getDataSet() {
    return dataSet;
  }
}

2.Можно переписать метод actionPerformed() в оригинальном классе AppendRowAction (JdbTable.java), перекомпилировать и заменить его в dbswing.jar

Ресурсы




Справка | Условия Copyright © 1999 — 2008, IT • archiv.
В начало | Логин | Комментарий к колонке | Поиск | Почта