2011-08-14 21 views
0

私はJenaを使用しています。私は、rdfファイルのインスタンスを追加、変更、削除するためのインタフェースを作成しました。ボタンネクストに問題があります。それは完全には機能しません。私はそれが最後のインスタンスに達すると、最初のインスタンスに戻りたいと思います。しかし、これは実行されません。最後のインスタンスに達すると、「次へ」ボタンを押すたびにこの最後のインスタンスが繰り返されます。これをどうすれば解決できますか?ここでAPI Jena - ボタン「次へ」が正しく動作しません。

がボタンのための私のフラグメントのコードは次です:

//Button Next 
class ActionSuivant implements ActionListener 
{ 
    public void actionPerformed(ActionEvent evt) 
    { 

     ++indice; 

     ExtendedIterator instances=onto.personne.listInstances(); 

     Individual instance = null; 
       for(p = 0; p < indice && instances.hasNext(); p++) 
       { 
        instance = (Individual) instances.next(); 

        }  
       tabTF[0].setText(instance.getPropertyValue(onto.aPourPrenom).toString()); 
       tabTF[1].setText(instance.getPropertyValue(onto.aPourNom).toString()); 
       tabTF[2].setText(instance.getPropertyValue(onto.aDateNaiss).toString()); 
       tabTF[3].setText(instance.getPropertyValue(onto.aGenre).toString()); 

    } 
} 

答えて

3

あなたのforループの最後で、pはまだindice未満であれば、それはあなたがリストの最後に到達したことを意味します。インデックスを1にリセットし、イテレータの最初の要素を返します。

public void actionPerformed(ActionEvent evt) 
{ 
    ++indice; 
    ExtendedIterator instances = onto.personne.listInstances(); 
    Individual instance = null; 
    Individual firstInstance = null; 
    for (p = 0; p < indice && instances.hasNext(); p++) { 
     instance = (Individual) instances.next(); 
     if (firstInstance == null) { 
      firstInstance = instance; 
     } 
    }  
    if (p < indice) { 
     indice = 1; 
     instance = firstInstance; 
    } 
    tabTF[0].setText(instance.getPropertyValue(onto.aPourPrenom).toString()); 
    tabTF[1].setText(instance.getPropertyValue(onto.aPourNom).toString()); 
    tabTF[2].setText(instance.getPropertyValue(onto.aDateNaiss).toString()); 
    tabTF[3].setText(instance.getPropertyValue(onto.aGenre).toString()); 
} 

また、そのプロパティを取得する前に、インスタンスがnullでないことを確認する必要があります。

イテレータではなくリストを持っていれば簡単です。単純にインデックスで要素にアクセスできます。

+0

JB Nizetさん、ご協力いただきありがとうございます。ボタン "前"のアプローチは私が推測するのと似ていますか? – ARH

+0

はい。しかし、Previousボタンがリストの先頭にあるとき、最後の要素に行くとき、それはリストが合理的に短いことを意味し、すべての要素を反復してArrayListに格納すべきであることを意味します。この方法では、ボタンは毎回反復するのではなく、インデックスによってArrayListにアクセスできます。 –

関連する問題