Row selection listener

Does anybody know how can I listen the row selection in a JTable?
Thanks,
Maurizio

Cant I override the valueChanged(..) method?From JavaDoc of JTable
Invoked when the row selection changes -- repaints to show the new selection.
Application code will not use these methods explicitly, they are used internally by JTable. It is always best to leave the default implementations as they are and use listeners of your own, else you may get to the point where you might break the default functionality of the component.
ICE

Similar Messages

  • Is it possible to enable/disable table row selection?

    I have a situation where a user can add rows to a "selection" table with a value that is used to perform a query to get a collection of objects associated with that value. Once those objects are available, a second "results" table will be populated with the row(s) returned. When the value is entered in the selection table, a web service call is made to perform the query and return the results. This may take a few moments and I am displaying an indeterminate progress indicator for the selection table row involved to indicate that the data is not yet available - the progress indicator is included as a column in the row; each row has its own indicator. Once the results are received the indicator is hidden to indicate the query for that row has completed. The user may enter as many rows in the selection table as they wish so there is a distinct possibility of multiple queries being executed at a given time. I have also attached a row selection listener to the selection table such that when a given row is selected, the results table will display the corresponding associated row(s).
    What I'd like to be able to do is somehow temporarily disable the selection of any row that has a query in progress, while leaving other rows whose queries have completed be selectable. Once the query completes, the row can then become selectable, thus allowing for the results to be loaded and displayed in the results table. The way it works right now, if the row is selected while the query is still in progress, nothing is displayed (obviously), but then the row has to be re-selected after the query has completed to see the results. This is a viable (though undesirable) solution/workaround if there is at least one other row in the table. However, if the row is the only row in the table and has been selected, it cannot be re-selected (there's no other row to select to allow for re-selection). To boil it down, what I'd like to do is prevent the selection of the row until the query for that row is complete.
    After perusing the JavaFX 2.2 API, I'm not seeing any obvious way to achieve this effect. If anyone has any solutions, suggestions, etc. on how this could be done I'd appreciate it greatly.

    Here's an [url https://github.com/james-d/Conditionally-selectable-table]example. As predicted, keyboard navigation fails if the keyboard presses would result in an unselectable item being selected using the default selection model. The best workaround I can see for this is to register event filters for the appropriate keyboard strokes, as in the previously referenced thread.
    Update: That code won't run in the current (ea b90) release of JavaFX 8.0, and probably a few recent releases; it will however run in the final release (and it runs in JDK 7). See [url https://javafx-jira.kenai.com/browse/RT-30593]RT-30593
    Edited by: James_D on May 22, 2013 7:51 PM

  • A Listener For JTable Row Selection Changed?

    Never mind... Thought of a couple other things after I posted and found ListSelectionListener. This looks like it fulfills my requirement nicely. - cimmerian76
    >>>
    TableModelListener isn't what I am looking for here. Basically, I'm looking for something that behaves in a way that is analogous to
    TreeSelectionListener's valueChanged(...). Perhaps I'm looking in the wrong places, but the only things I've found were RowSet listener (not even close)
    and TableModelListener (not exactly what I'm looking for - I'm not concerned about data in the table changing).
    The tool I'm writing displays additional information about the object in the row selected in an adjacent panel.
    This display should change every time a user selects a different row.
    I can mimic the behavior I want using a mouse listener on the table, so this isn't an emergency.
    It's more about curiosity. If I can find something that produces this functionality directly, I would prefer to use that.
    <<<
    Message was edited by:
    cimmerian76

    Hi,
    you can use this to handle selection events for the table:
    yourTable.getSelectionModel().addListSelectionListener(... );
    Now e.g. the class containing your main can implement interface ListSelectionListener.

  • Issue with Selection Listener when the table has only one row

    Hi All ,
    I have developed a table in which I am using Selection Listener to perform some task when any row is selected.
    It is working fine when I have more than 1 row in the table, but when I have only one row in the table , the selection listener do not call the corresponding method in bean.
    I understand that selection event will be raised only when the row is changed, but in the use case when only one row is there, what should be done to make the selection listener work ?
    In the selection listener I have written code to make the selected row as current row , and perform the required task.
    Please suggest a way out for this situation.
    Thanks in advance.

    Hi,
    try removing this attr from table
    selectedRowKeys="#{bindings.xxx_VO1.collectionModel.selectedRow}"

  • Af:Table retains rows selected and selection listener doesnt work

    Hi
    I have a table with a list of objects passed to it to be rendered. When the user selects an object and clicks on the launch button above the table, it launches a new page and on the new page when the user clicks on cancel it brings back to the same page where the table is present. While coming back to this page, the row that was earlier selected by the user is highlighted and a click on the same row doesnt enable the selection listener. I have to click on some other row and then click the old row if I want to relaunch the old page
    <af:table var="row" rowBandingInterval="0" id="tblProcedures" emptyText="#{dbProcedureMsg.TABLE_EMPTY_TEXT}"
    summary="#{dbProcedureMsg.TABLE_SUMMARY_TEXT}"
    value="#{pageFlowScope.db_provisioning_DeploymentProcedurePageModel.collectionModel}" filterVisible="false"
    columnStretching="column:colDescription" rowSelection="single" width="99.7%"
    selectionListener="#{pageFlowScope.db_provisioning_DeploymentProcedurePageModel.processSelection}">
    There is one more table which behaves the same way. But other tables which are part of my application work correctly.
    Any idea on what I might be doing wrong ?
    Thanks in advance

    Hi,
    To be honest Million rows in excel its questionable for me
    I would try to find alternate solution rather than killing ADF on client and then your DBA will call you for a urgent meeting. Even if you make it work with ADF, people will not going use it due to huge amount of data load.
    What you can do is to call external report like Jasper, BIRT etc. etc. and provide option there to export to Excel based on your criteria (but million rows is again questionable)
    OR
    one idea is to give option at client side to request a report with button at af:TABLE toolbar ...then you can schedule a job at database server level using PL/SQL dbms_scheduler package with OS script to generate text file on server and FTP it to some machine.
    Hope it help,
    ZB

  • How to dynamically display the data from a table base on row selection of another table in ADF

    Hi ,
    I have a requirement in ADF. I need to change the data of a table  based on row selection of another Table . Both the table have a Parent Child relationship between them. They have a common attribute say department_id.
                                                                                         For this I created bind variable in view object of employees table and wrote a where clause in the sql query using that bind variable. Then I created method for selection listener of department Table in java bean.
    My method is following
        public void onrowselection(SelectionEvent selectionEvent) {
            RichTable richTable = (RichTable)selectionEvent.getSource();
                            CollectionModel tableModel = (CollectionModel)richTable.getValue();
                            JUCtrlHierBinding adfTableBinding = (JUCtrlHierBinding)tableModel.getWrappedData();
                            Object selectedRowData = richTable.getSelectedRowData();
                            JUCtrlHierNodeBinding nodeBinding = (JUCtrlHierNodeBinding)selectedRowData;
                    oracle.jbo.domain.Number newVal = (oracle.jbo.domain.Number) nodeBinding.getAttribute("DepartmentId");
                    Number pallet = newVal.bigDecimalValue();
                    System.out.println("Selected values " + pallet);
            BindingContext bindingctx = BindingContext.getCurrent();
                          BindingContainer bindings = bindingctx.getCurrentBindingsEntry();
                          DCBindingContainer bindingsImpl = (DCBindingContainer) bindings;
                  DCIteratorBinding dciter = bindingsImpl.findIteratorBinding("EmployeesView1Iterator");//access the iterator by its ID value in the PageDef file
                          ViewObject vo =dciter.getViewObject();
                          vo.setNamedWhereClauseParam("DepartmentId", pallet);//enter your value
                          vo.executeQuery();
    It is printing the selected value of department id from department table in the log. But it is not able to pass the value to employees view. It is showing the following error in the log
    "Definition DepartmentId of type Variable is not found in EmployeesView1."
    I will be very thankful if someone helps me to solve this errror or is there any other way to achieve the same requirement.
    Thanks
    Nilesh

    Note quite sure why you simply wont create a viewlink for the viewobject the tables are based on..
    The viewlink attribute will be based on the departmentId and it's a simple master detail relationship which automatically uses ppr.
    However, if both tables are on the same page; using your hack about;
    On the underlying viewobject, define a viewcriteria e.g. "listById" and set your bind variable here.
    I would bind table two to a RichTable component:
    RichTable t2;
    public void onrowselection(SelectionEvent selectionEvent) {
            RichTable richTable = (RichTable)selectionEvent.getSource();
                            CollectionModel tableModel = (CollectionModel)richTable.getValue();
                            JUCtrlHierBinding adfTableBinding = (JUCtrlHierBinding)tableModel.getWrappedData();
                            Object selectedRowData = richTable.getSelectedRowData();
                            JUCtrlHierNodeBinding nodeBinding = (JUCtrlHierNodeBinding)selectedRowData;
                    oracle.jbo.domain.Number newVal = (oracle.jbo.domain.Number) nodeBinding.getAttribute("DepartmentId");
                    Number pallet = newVal.bigDecimalValue();
                    System.out.println("Selected values " + pallet);
                   refreshTable2(pallet);
            BindingContext bindingctx = BindingContext.getCurrent();
                          BindingContainer bindings = bindingctx.getCurrentBindingsEntry();
                          DCBindingContainer bindingsImpl = (DCBindingContainer) bindings;
                  DCIteratorBinding dciter = bindingsImpl.findIteratorBinding("EmployeesView1Iterator");//access the iterator by its ID value in the PageDef file
                          ViewObject vo =dciter.getViewObject();
                          vo.setNamedWhereClauseParam("DepartmentId", pallet);//enter your value
                          vo.executeQuery();
    private void refreshTable2(Number pallet){
    RichTable x=getT2();
    CollectionModel cm=(CollectionModel)x.getValue();
    JUCtrlHierBinding jcb=(JUCtrlHierBinding)cm.getWrappedData();
    BindingContainer bindings = bindingctx.getCurrentBindingsEntry();
    DCBindingContainer bindingsImpl = (DCBindingContainer) bindings;
    DCIteratorBinding dciter = bindingsImpl.findIteratorBinding(jcb.getName()+"Iterator");
    ViewObject vo =dciter.getViewObject();
    ViewCriteriaManager vcm=vo.getViewCriteriaManager();
    ViewCriteria vc=vcm.getViewCriteria("listById");
    vo.applyViewCriteria(vc);
    vo.setNamedWhereClauseParam("DepartmentId",pallet);
    vo.executeQuery();
    AdfFacesContext.getCurrentInstance().addPartialTarget(getT2());

  • How to disable first row selection in a table

    Hi,
    I have three tables which have master child relationship. I need to enable a button for each table based on row selection of corresponding table.But first row is being selected automatically and the buttons are enabled.
    what should i do in order to avoid first row selection in a table.I tried by removing selected Row Keys.But still i am getting the same problem.can anyone suggest on this.
    Thank You,
    Sukumar

    I know a hack but I don't recommend it, anyway here it goes:
    Remove selected Row Keys
    Change selectionListener from the default and create a custom action listener (You can call the default one inside of it) (Tip: use makeCurrent function in this PDF
    This will make sure that there is no selected row highlighted for the first time, but it actually means that the first row is selected, it's just not shown.
    This method is tested with 11.1.1.7

  • Contextual Event on row selection in the table

    Hi,
    My taskflow has just a view activity which queries a view object and displays results as a table. This taskflow is inserted in the main page as a region. I have set up a selection listener on the table, to map to a method in a managed bean. I have made this method binding a producer of my contextual event. and another method binding on the main page as a consumer. I have mapped producer and the consumer on a event map on the main page.
    My problem is when a row is selected in the table, I see the method (in the selection listener) is called but the event is not fired and the consumer method is not called. I don't know, if it is because the producer method (selection listener) takes SelectionEvent as a parameter?.
    I added just to test, a button on my view activity and mapped the action listener to another method(with out parameters) on the same managed bean and made this a producer. In this situation the event got fired and the consumer method got called.
    Why is the selection listener method not firing the event?
    Thanks in advance.

    Hi,
    the two events that are supported for ADF Faces component events are ActionEvent and ValueChangeEvent. So if you have a selection event, you need to take this infromation and create an ActionEvent from it.
    http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/event/ActionEvent.html
    Frank

  • Custom Selection Listener not getting fired

    I am using JDeveloper 11.1.1.4 and have been trying to follow the advice given in the ADF Code Corner example 68. The only difference in my application/project, is that I am trying to develop the master table on a page fragment with a task flow attached for the JSFF containing the detail table. My master table on the primary JSFF has a custom selection listener on it. When testing the deployed package--putting the primary task flow on a JSPX page, the tables are showing, but when I select a different row on the master table, the new row is highlighted but nothing happens to execute the custom listener. I am sure of this because I've added a System.out.println as the very first line in it and it doesn't put the message out. I am getting no errors on the weblogic logs. I looked on the client side's html output and can't see anything that would trigger that a change occurred to send back to the server. Any ideas (outside of upgrading to another version of Jdeveloper) would be greatly appreciated. I am not sure if providing any of my code would be of any help in this issue.

    Thanks to all who responded. I have multiple rows showing in my master table and when I select a different row, I get no event that executes my method. I tried adding the "binding.itterator." to the EL for the SelectionListener and that didn't work either. Besides both the examples in the ADF Code Corner 23 and 68 show it just as "class.method" as I have it. A small snippet from my table is below:
              <af:table value="#{bindings.HOT_trans_sumVO1.collectionModel}"
                        var="row" rows="#{bindings.HOT_trans_sumVO1.rangeSize}"
                        emptyText="#{bindings.HOT_trans_sumVO1.viewable ? 'No data to display.' : 'Access Denied.'}"
                        fetchSize="#{bindings.HOT_trans_sumVO1.rangeSize}"
                        rowBandingInterval="0"
                        selectedRowKeys="#{bindings.HOT_trans_sumVO1.collectionModel.selectedRow}"
                        *selectionListener="#{HotTransSummBean.onTxnSummTblRowSelect}"*                   
                        rowSelection="single" id="txnsummtbl"
                        columnStretching="last" width="100%" autoHeightRows="5"
                        contentDelivery="whenAvailable" immediate="true"
                        clientComponent="true" first="0">Also note that I have this backing bean defined on the task flow as a requestScope as it is in the example 68--example 23 does not state a scope level. Again, my method starts out with an output statement that never gets executed:
        public void onTxnSummTblRowSelect(SelectionEvent selectionEvent) {
          System.out.println("Entered onTxnSummTblRowSelect method.");

  • Creating a generic selection listener for af:table

    Hi,
    I'm using JDeveloper 11.1.1.5.0, and I have a simple requirement to set up a custom selection listener for an af:table component.
    So far, I was doing this by using a custom function to invoke the EL to perform the makeCurrent operation. However, I came across Frank Nimphius' PDF on how to build a generic selection listener, and this seemed like a better way to go about it. The problem is, the CollectionModel class used in the sample code is now deprecated. Is anyone aware of the currently supported way to implement a generic selection listener?
    Thanks,
    Gill

    this snap shot of the code i write it to get the current employee id whcich is selected
        public void select(SelectionEvent selectionEvent) {
            // Add event code here...
             RichTable  _table = (RichTable)selectionEvent.getSource();
             CollectionModel _tableModel = (CollectionModel)((RichTable)selectionEvent.getSource()).getValue();
            JUCtrlHierBinding _adfTableBinding = (JUCtrlHierBinding)_tableModel.getWrappedData();
            DCIteratorBinding _tableIteratorBinding = _adfTableBinding.getDCIteratorBinding();
            //Acess the ADF iterator binding that is used with ADF table binding
            Object _selectedRowData = _table.getSelectedRowData();
            JUCtrlHierNodeBinding _nodeBinding =
                (JUCtrlHierNodeBinding)_selectedRowData; //get the row key from the node binding and set it //as the current row in the iterator
              Key _rwKey = _nodeBinding.getRowKey();
              _tableIteratorBinding.setCurrentRowWithKey( _rwKey.toStringFormat(true));
            DCIteratorBinding it = _adfTableBinding.getDCIteratorBinding();
           System.out.println( it.getCurrentRow().getAttribute("EmployeeId"));
        }this code i written 11.1.2

  • What happens when the row selection of a table is set as 'none'?

    I have a page, with a Search box, Departments and Employees tables. The user will enter a departmentId and click on Search button. Departments will be displayed. The departmentId column in Departments table is surrounded with a link. So when the user will click on the link, the desired employees will be displayed in the Employees table, if there is a view link between the VOs.
    Now suppose I have removed the view link. And the row selection of the Departments table is set as 'none'. So is it possible to get the desired employees of the chosen departmentId in this scenario, as because row selection has been disabled in the Departments table?
    I also dont want to use the Set Property Listener in this use case.

    Hi,
    If you have disabled rowselection and also are not implementing the selection listener? How will you find which row did the user select?
    Ramandeep

  • Row Selection

    Hi all,
    I have a data table and if a row is selected I want it to load a different JSF page. I want to use the row selection feature as the highlighting aspect is useful. However, row selection seem to me to only link to a listener, so I can load parts of the current page based on a row selection but not issue a command to take me to another page. Currently I have had to disable the row selection and just stick an icon at the start of the which is an commandImageLink.
    Is there a way to perform a action when a row is selected? I hope I'm missing something obvious as this would seem to me to be quite a common thing. Maybe its not there? is there a way to achieve this functionality? Maybe some sort of request dispatched in the selection listener method?
    Cheers,
    Dale

    Hi John, thanks for reply, don't understand how though? I have a rough idea of how to use the selectionlistener as I have used it in a few places but not to jump to another page, so I have tried just changing return type from void to String but that does link away...
        public String LoadTask(SelectionEvent selectionEvent) {
            RichTable table = (RichTable)selectionEvent.getComponent();
            Task selectedTask = (Task)table.getSelectedRowData();
            // to some stuff
            return "showTask"
        }So what I want to do is navigator to "showTask" when I select a row but I just can't see a mechanism to do that?
    Table looks like this...
                    <af:table value="#{Tasklist.taskList}" var="row"
                              rowBandingInterval="1" id="t1" rowSelection="single"
                              disableColumnReordering="true" emptyText="No tasks matching criteria"
                              fetchSize="#{Tasklist.pagingData.rowsPerPage}"
                              partialTriggers="::cb1 ::cb2 ::cb3 ::cb4"
                              immediate="true"
                              sortListener="#{Tasklist.SortTasklist}"
                              selectionListener="#{Tasklist.LoadTask}">
                        <af:column frozen="true" id="sel" headerText=" " width="30">
                            <af:commandLink id="loadLink" action="#{Tasklist.loadTask}" text="Load">
                              <f:param id="tskId" name="taskId" value="#{row.systemAttributes.taskId}"/>
                            </af:commandLink>
                        </af:column>
                        <af:forEach items="#{Tasklist.columnsMetaData}" var="colDef">
                            <af:column sortable="true" sortProperty="title" headerText="#{colDef.headerText}" align="start" id="dataCol">
                              <af:outputText value="#{ExprBean[colDef.valueBinding]}" id="ot4"/>
                            </af:column>
                        </af:forEach>
                    </af:table>I want to do away with that Load column but just can't seem to do it with row selection :o(
    Cheers,
    Dale

  • Problem getting the Table Data with the selection listener

    Hi All,
    I am working on a tree and table components. I wrote a logic in the backing bean in such a way that when I expand a node the child nodes for the tree are getting added dynamically and also getting the data in the table for the node expanded in the tree using the same Toplink Query . I added the selection listener for the table and when I am selecting a row in the table I am getting the Null Pointer Exception as the RowKeySet Value for the row selected is coming null.
    Can any one please help me out with this problem
    I will be very thankful
    Regards,
    Madhavi.

    Hi All,
    I am working on a tree and table components. I wrote a logic in the backing bean in such a way that when I expand a node the child nodes for the tree are getting added dynamically and also getting the data in the table for the node expanded in the tree using the same Toplink Query . I added the selection listener for the table and when I am selecting a row in the table I am getting the Null Pointer Exception as the RowKeySet Value for the row selected is coming null.
    Can any one please help me out with this problem
    I will be very thankful
    Regards,
    Madhavi.

  • Tree selection listener problem

    I have a JTree which uses a selection listener.
    I encounter a problem when I collapse a row while a leaf has focus.
    My program doesn't hang but so many error messages scroll up my prompt.
    How can I resolve this problem?
    Thanks!

    try to capture the error messages. If you are unable to get them from standard output, try redirecting to a file like:
    prompt>java samp > xwhere samp is your class file and x is the file your output is redirected to. After you collapse the leaf that has focus, close the application and open the file 'x'. Copy and paste the errors here.
    I'll see what I can do!

  • TreeTable Selection Listener Issue

    I have a treeTable and i have used custom selection Listener instead of using bindings.<viewObject>.treeModel.makeCurrent. since i had to do more than just makeCurrent on selection, i choose this approach. Everything is working except, when i refresh the treeTable after create, the activeRow will be first row but selection shows on where i have last selected.
    My custom selectionListener is working very fine but i have noticed that when i refresh treeTable selectionListener is never called. but only called when i make selection... Is there anyway i can get my custom selectionListener be called on refresh of treetable or is there any other way i can control selection on fresh of treeTable.
    It will be highly appreciated if you can suggest me way.
    Thanks

    Thanks Timo for the reply. I have a customization to select the second row of the tree table by default. I am customizing the 'selectedRowKeys' value to achieve this default selection. It works fine for the first time.
    In the below scenario it's is not working,
    1. Select a row other than default selected
    2. After some action i am refreshing the table, now the focus(highlight) is on the previous selected row but actually the selectedkey is second row(Scenario1)
    This my tree table structure,
    Revision 0
    - - - - Scenario1
    - - - - Scenario2
    - - - - Scenario3
    Revision 1
    - - - - Scenario 4
    - - - - Scenario 5
    - - - - Scenario 6
    Thanks,
    Nagesh

Maybe you are looking for

  • Http receiver adapter - url parameters

    I have a scenario where I'm calling a client proxy and passing a file name to xi.  I have a receiver http adapter configured to post to a servlet.  I want to pass the file name from payload to my query string variable.  i.e PATH = parser/servlet/pars

  • Playlist folders do not contain the correct number of songs

    I have many manually generated playlists and I categorize them in a hierarchal manner using folders so that I can click on the folder and see all the songs contained in each of the sub-playlists. What I've realized recently (although I suspect it's b

  • SAP BW Bookmarks - Metadata question

    Hi, Our users save query views as bookmarks on the portal. Now , If we change the query defination , we would like to know following: 1. Bookmarks created against  queries     ( I found tables RSWR_DATA_XREF and RSWR_DATA  . These tables give me list

  • Osx 10.4.7 intel processor broblems with quarkxpress

    heloow for every apple expert men...... really i love osx tiger 10.4... but now i have new machine osx tiger 10.4.7 intel xeon , 2 ghz,,, i installed my adobe cs2 , quark xpress 6.5 , and installed hp printer 2600n color . what happen to me : 1- i ca

  • Email attachment auto download

    Hi, i have recently connected my phone with my company email so that i can read it when im on the go. I realised after i open up the email the attachment download automatically which i do not want to download. I have ever downloaded attachment which