3

「elements」プロパティがオブジェクトのリストにバインドされているJTableがあります。これはマスターテーブルです。マスターテーブルのselectedElementにバインドされた「elements」プロパティである詳細テーブルもあります。私はNetBeansGUIビルダーの助けを借りてそれを行いました。今、私はこのようなものを手に入れようとしています:

SomeEntityType selectedObject= (SomeEntityType) masterTable.getSelectedElement ()

ソースコードにはありますが、JTableにはそのようなプロパティはなく、「getSelectedRow」のみです。では、ソース(オブジェクトのリスト)にバインドされたJTableから選択したオブジェクトを取得するにはどうすればよいですか?同様の質問を読みましたが、getValueAt(rowId、columnId)メソッドのリンクしか見つかりませんが、私のタスクでは、行全体が選択されているため、どの列が選択されているかは関係ありません。

4

1 に答える 1

3

Netbeansについては知らない、Beansbindingのバージョンを使用していることを知っているだけなので、以下は確かに何らかの形で適用できます

バインディングフレームワークを使用するという全体的な考え方は、ビューに直接話しかけることはなく、モデル(またはBean)に完全に集中することです。このようなモデルの一部のプロパティはビューのプロパティにバインドされ、コードは変更のみをリッスンします。あなたの豆の特性で。「SelectedElement」はバインディングの人工的なプロパティです(実際には、JTableAdapterProviderのプロパティですが、知っておく必要はありません:-)。したがって、モデルプロパティをそれにバインドします。手動で行うスニペットを次に示します。

    // model/bean 
    public class AlbumManagerModel .. {
         // properties
         ObservableList<Album> albums;
         Album selectedAlbum;

         // vents the list of elements
         ObservableList<Album> getManagedAlbums() {
              return albums;
         }

         // getter/setter
         public Album getSelectedAlbum() {
              return selectedAlbum; 
         }

         public void setSelectedAlbum(Album album) {
            Album old = getSelectedAlbum();
            this.selectedAlbum = album;
            firePropertyChange("selectedAlbum", old, getSelectedAlbum());
         }


    }

    // bind the manager to a JTable

    BindingGroup context = new BindingGroup();
    // bind list selected element and elements to albumManagerModel
    JTableBinding tableBinding = SwingBindings.createJTableBinding(
            UpdateStrategy.READ,
            albumManagerModel.getManagedAlbums(), albumTable);
    context.addBinding(tableBinding);
    // bind selection 
    context.addBinding(Bindings.createAutoBinding(UpdateStrategy.READ_WRITE,
            albumManagerModel, BeanProperty.create("selectedAlbum"), 
            albumTable, BeanProperty.create("selectedElement_IGNORE_ADJUSTING")
    ));
    // bind columns 
    tableBinding.addColumnBinding(BeanProperty.create("artist"));
    ...
    context.bind();
于 2011-09-05T15:12:57.550 に答える