[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] JDK1.1.2ではなぜかHJTableのコンストラクターでvalueChanged()が呼ばれる




えんどうです。

>>>HJTableを使った場合はどうなりますか。
>>
>>import com.sun.java.swing を import javax.swing に書き換えて
>>higa.zip のすべてのソースを再コンパイルしてみました。
>>
>>  D:\My Documents\javastart\jdbc>java HJApplet
>>  Exception in thread "main" java.lang.NullPointerException
>
>Sun JDK 1.1.8 + Swing 1.1.1 でも NullPonitreException が出ます。
>
>  D:\My Documents\javastart\jdbc>\jdk1.1.8\bin\java -classpath .;\jdk1.1.8\lib\cla
>  sses.zip;\swing-1.1.1\swingall.jar HJApplet
>  java.lang.NullPointerException:
>          at higa.dbswing.HJTable.valueChanged(HJTable.java:179)

HJTabel のコンストラクターから、valueChanged() が呼ばれ、dataSet が null なので
NullPointerException が出るようです。

  public void valueChanged(ListSelectionEvent e) {
    if (navigating) {
      navigating = false;
      return;
    }

    int rowIndex = getSelectedRow();
    if (dataSet == null) return; // この行を追加した。1999.8.5 y.e
    int dsRowIndex = dataSet.getRowIndex();
    if (rowIndex >= 0 && dsRowIndex != rowIndex) {
      try {
        dataSet.goToRow(rowIndex);
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
  }

とりあえず上記のような if 文を書いたら、
JDK 1.2.2 + Swing 1.1.x で正常に動作しています。
-- 
ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Japanese Only)