JTable:如何从绑定到数据源的表中获取选中的对象



我有JTable其中的"elements"属性绑定到对象列表,这是主表。还有一个细节表,它的"elements"属性绑定到主表中的selecteelement。我是在NetBeans GUI构建器的帮助下完成的。现在我试着得到这样的东西:

SomeEntityType selectedObject= (SomeEntityType) masterTable.getSelectedElement ()
源代码中的

,但是在JTable中没有这样的属性,只有"getSelectedRow"。那么,如何从JTable中获得绑定到源(对象列表)的选定对象呢?我读过类似的问题,但只在getValueAt(rowId,columnId)方法上找到链接,但在我的任务中,选择哪一列并不重要,因为选择了整行。

我不知道Netbeans,只知道它使用了一个版本的bean绑定,所以下面的当然可以应用

使用绑定框架的全部思想是,您永远不会直接与视图对话,而是完全专注于您的模型(或bean):这样的模型的某些属性绑定到视图的属性,并且您的代码只侦听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();

最新更新