これは、Java アプリ用の適切な GUI に対する私の最初の試みであり、特定の構造を表すためにカスタムListModelでJListを使用する必要がありました。
//The 2 below structures implement the ListModel interface, using an internal
//ArrayList, in order to be used as
//a model for 2 different JLists in my GUI.
private PropertyList propertiesList = new PropertyList();
private SelectedProperties selProperties = new SelectedProperties();
//and these are the two JLists they are the models for
private javax.swing.JList Properties_JList;
private javax.swing.JList SelectedProperties_JList;
ここでは、ストリームを介して最初の JList を設定します。
private void OpenFile_MenuItemActionPerformed(java.awt.event.ActionEvent evt) {
final JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(null);
int returnVal = fc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
this.Properties_JList.setModel(propertiesList);
this.propertiesList.AddFromFile(file);
} else {
//...
}
}
これはたまたま完全に正常に機能しています。ファイルを読み取っていくつかのエントリをインポートすると、それらはすべて .toString() 表現で期待どおりに表示されます。
問題は 2 番目の JList です。
private void AddToSelected_JButtonActionPerformed(java.awt.event.ActionEvent evt) {
Property p = (Property) this.Properties_JList.getSelectedValue();
this.SelectedProperties_JList.setModel(selProperties);
this.selProperties.InsertProperty(p);
this.SelectedProperties_JList.revalidate();
}
上記のボタンイベントを介して追加しようとした最初のアイテムのみを表示しているように見えますが、その理由はわかりません。フォームの initComponents() 呼び出しの直後に両方の .setModel(...) 呼び出しを移動することを検討しましたが、そうすると、リストのどれも読み込まれません。
メッセージをログに記録すると、内部構造が取り込まれていることが明らかになりましたが、それらは両方とも JList のそれぞれの ListModel ですが、そのうちの 1 つが期待どおりに機能していません。
コードの十分な部分は Netbeans によって生成され、API を調べるのに何時間も費やしましたが、何が間違っているのかを見つけるのにまだ苦労しています。何か案は?