JTable - loosing focus without tabbing out

Hi all,
I have a JTable and when the user goes to enter some text in a field I would like the value entered to persist to the underlying object as soon as the text is changed. This is without the user tabbing out of the JTable.
Currently when a value is changed and the user hits a save button the value is not saved as the focus is still in the table, it all works fine as soon as the user enters the new value and tabs out of the table and then selects save,
Does anyone have any suggestions?
THanks,

This can be done via your own TableCellEditor class. Create a TableCellEditor class. Implement KeyListener in this editor to save whenever the data is modified.
You can set the default editor via setDefaultEditor() on JTable.

Similar Messages

  • Lose focus when tabbing out of autoSubmit text box in IE

    Hey,
    Using JDEV 11.1.1.4 I have a problem with tabbing from one textbox to another textbox in IE. Both text boxes have autoSubmit=true and to reproduce the problem it's like so:
    I type a value or edit the existing one into text box 1 and press Tab. The submit is done and focus is given to the second text box but only momentarily before it loses focus. The focus then is given to the window it would appear, because if I press Tab again it begins from the top of the page. This is only happening in IE (v8 is all I have tried so far). This ONLY happens when the value of the second box is null. If it has a value all works fine.
    I tried implementing various solutions including using the ExtendedRenderKitService to write javascript to the client from the bean to set focus on the text box after the partial render. The javascript is called and focus is set but then something else calls blur on it afterwards. I have verified this by putting a blur event listener on it and it gets called after I set focus on it from my own javascript!
    Has anyone experienced something similar? Just to note: It only happens in IE, and it only happens when the second text box is empty.
    Thanks,
    Ross

    Hey John,
    In reply to your message
    1). Tried on 11.1.1.6 to see if the issue is still there?Not really an option to try and upgrade and test if it works there.
    2). Made a simple test case removing as many variables as possible (e.g. do a simple screen with no DB interaction and only two fields) to see if it reproduces or it's something with your screen?Tried this an it works fine which means it is something unique to my code.
    3). Filed an SR at https://support.oracle.com with your test case
    As above it looks like it's not a problem with ADF so I will keep looking at it.

  • I loose focus on tab pages with horizontal scroll bar

    Hello
    I am using a form with two tab pages. On the second tab page there is a multirecord block from which the first 5 columns are context (always visible)), the other columns are working with a horizontal scrollbar. When I navigate to another window and come back to the first one, then the context columns are still there, but all the other columns are gone, there is only a big grey space. Any suggestions ? Webforms 10gR1.

    Not sure why that is happening. Are you running the newest JInitiator? What browser are you using?
    Maybe as a workaround, you may have to save the current record before leaving the first form, then when you return to the first form, requery the block and go to the current record. That's assuming, that a requery fixes the problem...

  • Tab and back-tab out of a JTable

    Hi There,
    I have been working for some time on improving the default behaviour of the tab key within editable JTables. It largely works as required now, but I'm stuck on getting back-tab to leave the table if on row 0, col 0. I register tab and back-tab action in the table's ActionMap that looks like this:     
         class TabAction extends AbstractAction {
              public void actionPerformed(ActionEvent e) {
                   if (getRowCount() > 0) {
                        int row = getSelectedRow();
                        int column = getSelectedColumn();
                        if (row < 0 || column < 0) {
                             row = 0;
                             column = 0;
                        do {
                             if (++column >= getColumnCount()) {
                                  row++;
                                  column = 0;
                        } while (row < getRowCount() && ! isCellTabbable(row, column));
                        if (row < getRowCount()) {
                             changeSelection(row, column, false, false);
                        } else {
                             clearSelection();
                             transferFocus();
                   } else {
                        transferFocus();
         class BackTabAction extends AbstractAction {
              public void actionPerformed(ActionEvent e) {
                   if (getRowCount() > 0) {
                        int row = getSelectedRow();
                        int column = getSelectedColumn();
                        if (row < 0 || column < 0) {
                             row = getRowCount() - 1;
                             column = getColumnCount() - 1;
                        do {
                             if (--column < 0) {
                                  row--;
                                  column = getColumnCount() - 1;
                        } while (row >= 0 && ! isCellTabbable(row, column));
                        if (row >= 0) {
                             changeSelection(row, column, false, false);
                        } else {
                             clearSelection();
                             transferFocusBackward();
                             KeyboardFocusManager fm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
                                // fm.upFocusCycle(BTTTable_Editable.this);                         
                             // fm.focusPreviousComponent(BTTTable_Editable.this);
                   } else {     
                        // transferFocusBackward();
                        // KeyboardFocusManager fm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
                           // fm.upFocusCycle(BTTTable_Editable.this);                         
                        // fm.focusPreviousComponent(BTTTable_Editable.this);
         }transferFocus() to go to the next screen component works fine - as long as I callsetFocusTraversalPolicyProvider(true); when I create the JTable.
    But the backward traversal just doesn't work - instead it does nothing the first time you press back-tab on row 0 col 0, then if you press it again, focus goes onto the last row/col of the table.
    As an alternative, I thought maybe I could call the Ctrl-back-tab action, but I can't find that registered in the action map - can anyone tell me how ctrl-back-tab is called and whether I can call that code directly?
    Any ideas?
    Thanks,
    Tim

    Where's the rest of your code? What good does posting
    the Actions do if we can't execute your code and see
    how you've installed the Actions on the table? Who
    knows where the mistake is. It may be in the posted
    code or it may be in some other code.Well I assume the Action is registered okay because back-tab within the table works fine, and in fact using a debugger I can see that the focus request code (transferFocusBackward) is being called at the right time. I followed it into that code and it appears that it is picking up the tableCellEditor as the "previous" component which is "why" it isn't working right - not that that helps me to fix it.
    Anyway, just to confirm, here is a complete standalone testcase:import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.KeyboardFocusManager;
    import java.awt.event.ActionEvent;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import javax.swing.AbstractAction;
    import javax.swing.ActionMap;
    import javax.swing.InputMap;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.KeyStroke;
    * <br>
    * <br>
    * Created on 14/11/2005 by Tim Ryan
    public class TabTable extends JTable implements FocusListener {
         protected KeyStroke TAB = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
         protected KeyStroke BACK_TAB = KeyStroke.getKeyStroke(KeyEvent.VK_TAB,
                   InputEvent.SHIFT_DOWN_MASK);
         protected KeyStroke LEFT_ARROW = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0);
         protected KeyStroke RIGHT_ARROW = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0);
         public TabTable(Object[][] rowData, Object[] columnNames) {
              super(rowData, columnNames);
              initialise();
         public TabTable() {
              super();
              initialise();
         private void initialise() {
              addFocusListener(this);
              InputMap inMap = getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
              ActionMap actionMap = getActionMap();
              inMap.put(LEFT_ARROW, "None");
              inMap.put(RIGHT_ARROW, "None");
              actionMap.put(inMap.get(TAB), new TabAction());
              actionMap.put(inMap.get(BACK_TAB), new BackTabAction());
              setCellSelectionEnabled(true);
              putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
              setFocusTraversalPolicyProvider(true);
         public void focusGained(FocusEvent e) {
              if (getRowCount() > 0 && getSelectedRow() < 0) {
                   editCellAt(0, 0);
                   getEditorComponent().requestFocusInWindow();
         public void focusLost(FocusEvent e) {
         public void changeSelection(int row, int column, boolean toggle, boolean extend) {
              super.changeSelection(row, column, toggle, false);
              if (editCellAt(row, column)) {
                   getEditorComponent().requestFocusInWindow();
          * This class handles the back-tab operation on the table.
          * It repeatedly steps the selection backwards until the focus
          * ends up on a cell that is allowable (see <code>isCellTabbable()</code>).
          * If already at the end of the table then focus is transferred out
          * to the previous component on the screen.
         class BackTabAction extends AbstractAction {
              public void actionPerformed(ActionEvent e) {
                   if (getRowCount() > 0) {
                        int row = getSelectedRow();
                        int column = getSelectedColumn();
                        if (row < 0 || column < 0) {
                             row = getRowCount() - 1;
                             column = getColumnCount() - 1;
                        do {
                             if (--column < 0) {
                                  row--;
                                  column = getColumnCount() - 1;
                        } while (row >= 0 && ! isCellTabbable(row, column));
                        if (row >= 0) {
                             changeSelection(row, column, false, false);
                        } else {
                             clearSelection();
                             // transferFocusBackward();
                             KeyboardFocusManager.getCurrentKeyboardFocusManager().focusPreviousComponent();
                   } else {
                        // transferFocusBackward();
                        KeyboardFocusManager.getCurrentKeyboardFocusManager().focusPreviousComponent();
          * This class handles the tab operation on the table.
          * It repeatedly steps the selection forwards until the focus ends
          * up on a cell that is allowable (see <code>isCellTabbable()</code>).
          * If already at the end of the table then focus is transferred out
          * to the next component on the screen.
         class TabAction extends AbstractAction {
              public void actionPerformed(ActionEvent e) {
                   if (getRowCount() > 0) {
                        int row = getSelectedRow();
                        int column = getSelectedColumn();
                        if (row < 0 || column < 0) {
                             row = 0;
                             column = 0;
                        do {
                             if (++column >= getColumnCount()) {
                                  row++;
                                  column = 0;
                        } while (row < getRowCount() && ! isCellTabbable(row, column));
                        if (row < getRowCount()) {
                             changeSelection(row, column, false, false);
                        } else {
                             clearSelection();
                             transferFocus();
                   } else {
                        transferFocus();
          * Some cells can be tabbed to, but are not actually editable.
          * @param row
          * @param column
          * @return
         private boolean isCellTabbable(int row, int column) {
              return (column % 2 == 0);
         public boolean isCellEditable(int row, int column) {
              return (column == 1 || column == 3);
          * @param args
         public static void main(String[] args) {
              JFrame frame = new JFrame("Tables test");
              frame.setName("TablesTest");
              frame.setSize(600, 400);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              JPanel panelMain = new JPanel(new GridBagLayout());
              frame.add(panelMain);
              Object[][] tableData = new Object[2][6];
              Object[] columnHeadings = new Object[] {"H0", "H1", "H2", "H3", "H4", "H5"};
              GridBagConstraints gbc = new GridBagConstraints();
              gbc.anchor = GridBagConstraints.NORTH;
              gbc.insets = new Insets(10, 10, 10, 10);
              JTextField field1 = new JTextField("left", 8);
              field1.setName("left");
              panelMain.add(field1, gbc);
              Dimension tableSize = new Dimension(300, 300);
              BTTTable table3 = new BTTTable_Editable(tableData, columnHeadings);
              table3.setName("Editable");
              JScrollPane scroll3 = new JScrollPane(table3);
              scroll3.setPreferredSize(tableSize);
              panelMain.add(scroll3, gbc);
              JTextField field2 = new JTextField("right", 8);
              field2.setName("right");
              gbc.gridwidth = GridBagConstraints.REMAINDER;
              panelMain.add(field2, gbc);
              frame.setVisible(true);
    }I thought it might be the focusGained() code, but commenting that out makes no difference.
    And here is the code I would use to go to the
    previous component:
    KeyboardFocusManager.getCurrentKeyboardFocusManager().
    focusPreviousComponent();I tried that too, as you can see from my original post. It gives the same answer.
    So the big question is why does the FocusManager think that the "previous" field to the table is an editor component within the table?
    Regards,
    Tim

  • Is there any easier way to edit imovie files that have been exported as mov file then added to FCE 4?? As every move I make has to be rendered and takes forever??? Also my recording is going out of focus without me touching the camera, why has this happen

    Is there any easier way to edit imovie files that have been exported as mov file then added to FCE 4?? As every move I make has to be rendered and takes forever??? Also my recording is going out of focus without me touching the camera, why has this happened any idea what causes this??
    iMovie '08, Mac OS X (10.5.8), FCE 4

    My daughter has had her Razr for about 9 months now.  About two weeks ago she picked up her phone in the morning on her way to school when she noticed two cracks, both starting at the camera lens. One goes completely to the bottom and the other goes sharply to the side. She has never dropped it and me and my husband went over it with a fine tooth comb. We looked under a magnifying glass and could no find any reason for the glass to crack. Not one ding, scratch or bang. Our daughter really takes good care of her stuff, but we still wanted to make sure before we sent it in for repairs. Well we did and we got a reply from Motorola with a picture of the cracks saying this was customer abuse and that it is not covered under warranty. Even though they did not find any physical damage to back it up. Well I e-mailed them back and told them I did a little research and found pages of people having the same problems. Well I did not hear from them until I received a notice from Fed Ex that they were sending the phone back. NOT FIXED!!! I went to look up why and guess what there is no case open any more for the phone. It has been wiped clean. I put in the RMA # it comes back not found, I put in the ID #, the SN# and all comes back not found. Yet a day earlier all the info was there. I know there is a lot more people like me and all of you, but they just don't want to be bothered so they pay to have it fix, just to have it do it again. Unless they have found the problem and only fixing it on a customer pay only set up. I am furious and will not be recommending this phone to anyone. And to think I was considering this phone for my next up grade! NOT!!!!

  • Issue: LOV tabbing out loses focus

    Hi all,
    I've realised that typing some characters in a LOV field and tabbing out results in the following:
    1. The LOV popup window opens, then you select a value and the value is returned to the lov field.
    2. At this moment, the focus is LOST. I would expect the focus to be again at the lov field.
    This doesn't reproduce if you open the LOV with the LOV icon. In this case, the focus returns to the lov field, as expected.
    Is this a bug?
    Does anybody know how to solve it?
    Thanks in advance
    Version
    ADF Business Components 11.1.1.56.60
    Java(TM) Platform 1.6.0_18
    Oracle IDE 11.1.1.3.37.56.60

    Hi a.gruev,
    Thanks for your reply. I did some investigation and found that this has to do with IE8 only:
    Firefox 3.6: you enter some chars, the LOV opens, you select the value and finally, the mouse cursor stays at the end of the lov field value. OK.
    Chrome 7.0: exactly the same, but now the lov field value gets selected and then, the focus remains at the lov field. OK.
    Internet Explorer 8.0: works if I enter part of the value (which launches the LOV); if I enter the exact match, the focus is LOST. KO.
    Unfortunately we can't get rid of IE, so any suggestions for fixing this for IE will be appreciated.
    Barbara
    Edited: Anybody knows whether this is a bug?
    Edited by: Barbara Gelabert on 19-nov-2010 9:09
    Edited by: Barbara Gelabert on 22-nov-2010 6:39

  • When tab out of an autoSubmit field I lose focus.

    Hello all!
    I'm using jDev 11.1.2.1.0
    I'm facing the following situation. In the employees VO there is a transient attribute which is actually the salary * commissionPct.
    In the jspx, in order to make things interactive, salary and commisionPct have autoSubmit=true. When I change either of the fields the transient column refreshes accordingly. Up to here everything is fine.
    The problem is that when I make a change to either of these fields and tab out the focus is lost. This is very annoying. It happens only in salary and commissionPct fields.
    Is there any way to avoid this??
    Thanks a lot!
    -apostolos

    Sudipto thanks for the link. Very useful.
    I actually use PPR in the employee Iterator, and this is because there is a master-detail functionality in the page. Suppose I have a case similar to department-employees case.
    If I remove the PPR then the master and detail are not synchronized.
    At the bottom you see the sums filed which is actually the product of salary and commissionPct.
    <af:table value="#{bindings.EmployeesVO1.collectionModel}"
                              var="row" rows="#{bindings.EmployeesVO1.rangeSize}"
                              emptyText="#{bindings.EmployeesVO1.viewable ? 'No data to display.' : 'Access Denied.'}"
                              fetchSize="#{bindings.EmployeesVO1.rangeSize}"
                              rowBandingInterval="0"
                              selectedRowKeys="#{bindings.EmployeesVO1.collectionModel.selectedRow}"
                              selectionListener="#{bindings.EmployeesVO1.collectionModel.makeCurrent}"
                              rowSelection="single" id="t1">
                        <af:column sortProperty="#{bindings.EmployeesVO1.hints.EmployeeId.name}"
                                   sortable="true"
                                   headerText="#{bindings.EmployeesVO1.hints.EmployeeId.label}"
                                   id="c1">
                            <af:inputText value="#{row.bindings.EmployeeId.inputValue}"
                                          label="#{bindings.EmployeesVO1.hints.EmployeeId.label}"
                                          required="#{bindings.EmployeesVO1.hints.EmployeeId.mandatory}"
                                          columns="#{bindings.EmployeesVO1.hints.EmployeeId.displayWidth}"
                                          maximumLength="#{bindings.EmployeesVO1.hints.EmployeeId.precision}"
                                          shortDesc="#{bindings.EmployeesVO1.hints.EmployeeId.tooltip}"
                                          id="it1">
                                <f:validator binding="#{row.bindings.EmployeeId.validator}"/>
                                <af:convertNumber groupingUsed="false"
                                                  pattern="#{bindings.EmployeesVO1.hints.EmployeeId.format}"/>
                            </af:inputText>
                        </af:column>
                        <af:column sortProperty="#{bindings.EmployeesVO1.hints.FirstName.name}"
                                   sortable="true"
                                   headerText="#{bindings.EmployeesVO1.hints.FirstName.label}"
                                   id="c2">
                            <af:inputText value="#{row.bindings.FirstName.inputValue}"
                                          label="#{bindings.EmployeesVO1.hints.FirstName.label}"
                                          required="#{bindings.EmployeesVO1.hints.FirstName.mandatory}"
                                          columns="#{bindings.EmployeesVO1.hints.FirstName.displayWidth}"
                                          maximumLength="#{bindings.EmployeesVO1.hints.FirstName.precision}"
                                          shortDesc="#{bindings.EmployeesVO1.hints.FirstName.tooltip}"
                                          id="it2">
                                <f:validator binding="#{row.bindings.FirstName.validator}"/>
                            </af:inputText>
                        </af:column>
                        <af:column sortProperty="#{bindings.EmployeesVO1.hints.LastName.name}"
                                   sortable="true"
                                   headerText="#{bindings.EmployeesVO1.hints.LastName.label}"
                                   id="c3">
                            <af:inputText value="#{row.bindings.LastName.inputValue}"
                                          label="#{bindings.EmployeesVO1.hints.LastName.label}"
                                          required="#{bindings.EmployeesVO1.hints.LastName.mandatory}"
                                          columns="#{bindings.EmployeesVO1.hints.LastName.displayWidth}"
                                          maximumLength="#{bindings.EmployeesVO1.hints.LastName.precision}"
                                          shortDesc="#{bindings.EmployeesVO1.hints.LastName.tooltip}"
                                          id="it3">
                                <f:validator binding="#{row.bindings.LastName.validator}"/>
                            </af:inputText>
                        </af:column>
                        <af:column sortProperty="#{bindings.EmployeesVO1.hints.Salary.name}"
                                   sortable="true"
                                   headerText="#{bindings.EmployeesVO1.hints.Salary.label}"
                                   id="sal">
                            *<af:inputText value="#{row.bindings.Salary.inputValue}"*
                                          label="#{bindings.EmployeesVO1.hints.Salary.label}"
                                          required="#{bindings.EmployeesVO1.hints.Salary.mandatory}"
                                          columns="#{bindings.EmployeesVO1.hints.Salary.displayWidth}"
                                          maximumLength="#{bindings.EmployeesVO1.hints.Salary.precision}"
                                          shortDesc="#{bindings.EmployeesVO1.hints.Salary.tooltip}"
                                          id="it6" autoSubmit="true">
                                <f:validator binding="#{row.bindings.Salary.validator}"/>
                            </af:inputText>
                        </af:column>
                        <af:column sortProperty="#{bindings.EmployeesVO1.hints.CommissionPct.name}"
                                   sortable="true"
                                   headerText="#{bindings.EmployeesVO1.hints.CommissionPct.label}"
                                   id="comm">
                            *<af:inputText value="#{row.bindings.CommissionPct.inputValue}"*
                                          label="#{bindings.EmployeesVO1.hints.CommissionPct.label}"
                                          required="#{bindings.EmployeesVO1.hints.CommissionPct.mandatory}"
                                          columns="#{bindings.EmployeesVO1.hints.CommissionPct.displayWidth}"
                                          maximumLength="#{bindings.EmployeesVO1.hints.CommissionPct.precision}"
                                          shortDesc="#{bindings.EmployeesVO1.hints.CommissionPct.tooltip}"
                                          id="it7" autoSubmit="true">
                                <f:validator binding="#{row.bindings.CommissionPct.validator}"/>
                            </af:inputText>
                        </af:column>
                        <af:column sortProperty="#{bindings.EmployeesVO1.hints.Sums.name}"
                                   sortable="true"
                                   headerText="#{bindings.EmployeesVO1.hints.Sums.label}"
                                   id="c9">
                            *<af:inputText value="#{row.bindings.Sums.inputValue}"*
                                          *label="#{bindings.EmployeesVO1.hints.Sums.label}"*
                                          *required="#{bindings.EmployeesVO1.hints.Sums.mandatory}"*
                                          *columns="#{bindings.EmployeesVO1.hints.Sums.displayWidth}"*
                                          *maximumLength="#{bindings.EmployeesVO1.hints.Sums.precision}"*
                                          *shortDesc="#{bindings.EmployeesVO1.hints.Sums.tooltip}"*
                                          *id="it8">*
                                *<f:validator binding="#{row.bindings.Sums.validator}"/>*
                            *</af:inputText>*
                        </af:column>
                    </af:table>Edited by: apostolosk on May 2, 2012 3:19 PM

  • How to force a jtable to loose focus

    hi all
    i've got a jTextArea and a Jtable, and i want my jTable to loose focus when my JTextArea gains it
    i've the metod jTextAreaFocusGained(); what shall i write inside it to make the table loose focus?
    thanx
    sandro

    Hi,
    I guess, there is a missunderstanding in that, what you want to do and that, what you say, you want.
    The focus is a unique thing - only one component can have the focus at one time - so, when your textfield has gained focus, the component that formerly has had the focus, lost it already - so, there is nothing else to do.
    I guess, you want another thing, perhaps to clear the selection of the JTable or something like this.
    greetings Marsian

  • ADF AutoSubmit True column Loosing Focus after hitting Tab

    Hi,
    I am on 11.1.2.2.0. I have implemented af:table component and inside table on few columns I have autoSubmit="true" immediate="true" . After entering values into those columns when I hit Tab (To go to next field in table) , it goes to next field and looses focus. Is there any work around or fix to overcome this issue ?
    Thanks and Regards,
    Jit

    Hi,
    Thanks for the links. My requirement is to set focus inside af:table. Inside table I have say 5 fields.
    3rd Field is LOV and 4th fields is Text. After entering LOV info in Field3 focus should go to field4(which is inputText).
    I tried
    Frank's Blog
    https://blogs.oracle.com/jdevotnharvest/entry/how_to_programmatically_set_focus
    AMIS Blog
    http://technology.amis.nl/2008/01/04/adf-11g-rich-faces-focus-on-field-after-button-press-or-ppr-including-javascript-in-ppr-response-and-clientlisteners-client-side-programming-in-adf-faces-rich-client-components-part-2/
    This works for ADF Form entry. When I tried implement this in table the field id(eg it4) is not picked.
    I found other blog for where it is mentioned field id dwill be different in case of Table.
    http://www.bartkummel.net/2009/11/oracle-adf-set-focus-to-input-field-in-data-table/#respond
    Do you have any idea how to get Table id or help in building this field id in Table ?
    Thanks and Regards,
    Jit

  • Window looses focus seemingly at random

    This is very frustrating.  Whenever I am working in any application, the active window auto-magically looses focus.  I don't have a lot running by way of background processes and the computer is fairly new and running all latest software.  I can't figure out why.  Hoping someone from the Apple community can help out...
    Here is detailed information about my MacBook Pro:
    EtreCheck version: 1.9.11 (43) - report generated May 30, 2014 at 9:24:49 AM CDT
    Hardware Information:
              MacBook Pro (15-inch, Mid 2012)
              MacBook Pro - model: MacBookPro9,1
              1 2.3 GHz Intel Core i7 CPU: 4 cores
              8 GB RAM
    Video Information:
              Intel HD Graphics 4000 - VRAM: (null)
              NVIDIA GeForce GT 650M - VRAM: 512 MB
    System Software:
              OS X 10.9.3 (13D65) - Uptime: 0 days 17:58:47
    Disk Information:
              Crucial_CT240M500SSD1 disk0 : (240.06 GB)
                        EFI (disk0s1) <not mounted>: 209.7 MB
                        disk0s2 (disk0s2) <not mounted>: 239.2 GB
                        Recovery HD (disk0s3) <not mounted>: 650 MB
              MATSHITADVD-R   UJ-8A8 
    USB Information:
              Logitech USB Receiver
              Apple Inc. FaceTime HD Camera (Built-in)
              Apple Inc. BRCM20702 Hub
                        Apple Inc. Bluetooth USB Host Controller
              Apple Inc. Apple Internal Keyboard / Trackpad
              Apple Computer, Inc. IR Receiver
    Thunderbolt Information:
              Apple Inc. thunderbolt_bus
    Configuration files:
              /etc/sysctl.conf - Exists
    Gatekeeper:
              Anywhere
    Kernel Extensions:
              [kext loaded] com.Logitech.Control Center.HID Driver (3.9.1 - SDK 10.8) Support
              [kext loaded] com.Logitech.Unifying.HID Driver (1.3.0 - SDK 10.6) Support
              [kext loaded] com.epson.driver.EPSONProjectorAudio (1.30 - SDK 10.4) Support
              [kext loaded] com.pgp.iokit.PGPdiskDriver (10 - SDK 10.8) Support
              [kext loaded] com.pgp.kext.PGPnke (1.1.3 - SDK 10.8) Support
              [kext loaded] com.plantronics.driver.PlantronicsDriverShield (4.3 - SDK 10.8) Support
              [not loaded] com.symantec.kext.SymAPComm (12.2f1 - SDK 10.6) Support
              [kext loaded] com.symantec.kext.internetSecurity (5.2f1 - SDK 10.6) Support
              [kext loaded] com.symantec.kext.ips (3.5f1 - SDK 10.6) Support
              [kext loaded] com.symantec.kext.ndcengine (1.0f1 - SDK 10.6) Support
    Startup Items:
              ciscod: Path: /System/Library/StartupItems/ciscod
    Launch Daemons:
              [loaded] com.adobe.fpsaud.plist Support
              [loaded] com.barebones.authd.plist Support
              [running] com.cisco.anyconnect.vpnagentd.plist Support
              [loaded] com.google.keystone.daemon.plist Support
              [running] com.manageengine.desktopcentral.dcagentservice.plist Support
              [loaded] com.manageengine.desktopcentral.dcagentupgrader.plist Support
              [loaded] com.microsoft.office.licensing.helper.plist Support
              [loaded] com.oracle.java.Helper-Tool.plist Support
              [loaded] com.oracle.java.JavaUpdateHelper.plist Support
              [loaded] com.pgp.framework.PGPwde.plist Support
              [running] com.pgp.wde.pgpwded.plist Support
              [loaded] com.symantec.liveupdate.daemon.ondemand.plist Support
              [loaded] com.symantec.liveupdate.daemon.plist Support
              [not loaded] com.symantec.sep.migratesettings.plist Support
              [running] com.symantec.sharedsettings.plist Support
              [running] com.symantec.symdaemon.plist Support
              [not loaded] com.teamviewer.teamviewer_service.plist Support
              [loaded] com.tunnelbear.mac.tbeard.plist Support
              [loaded] com.wuala.WualaFS.KextLoaderHelper.plist Support
              [loaded] org.macosforge.xquartz.privileged_startx.plist Support
    Launch Agents:
              [loaded] com.cisco.anyconnect.gui.plist Support
              [loaded] com.google.keystone.agent.plist Support
              [running] com.Logitech.Control Center.Daemon.plist Support
              [not loaded] com.maintain.PurgeInactiveMemory.plist Support
              [not loaded] com.maintain.Restart.plist Support
              [not loaded] com.maintain.ShutDown.plist Support
              [running] com.maintain.SystemEvents.plist Support
              [loaded] com.oracle.java.Java-Updater.plist Support
              [running] com.pgp.pgpengine.plist Support
              [running] com.symantec.uiagent.application.plist Support
              [not loaded] com.teamviewer.teamviewer.plist Support
              [not loaded] com.teamviewer.teamviewer_desktop.plist Support
              [running] jp.co.canon.SELPHYCP.BG.plist Support
              [failed] org.gpgtools.gpgmail.enable-bundles.plist Support
              [loaded] org.macosforge.xquartz.startx.plist Support
    User Launch Agents:
              [loaded] com.adobe.ARM.[...].plist Support
              [loaded] com.citrixonline.GoToMeeting.G2MUpdate.plist Support
              [loaded] com.valvesoftware.steamclean.plist Support
    User Login Items:
              UNKNOWN
              Plantronics
              iTunesHelper
              Quicksilver
              Dropbox
              aText
              Box Sync
    Internet Plug-ins:
              JavaAppletPlugin: Version: Java 7 Update 55 Check version
              nplastpass: Version: 2.5.5 Support
              Default Browser: Version: 537 - SDK 10.9
              F5 SSL VPN Plugin: Version: 7080.2013.0319.1 Support
              AdobePDFViewerNPAPI: Version: 11.0.07 - SDK 10.6 Support
              FlashPlayer-10.6: Version: 13.0.0.214 - SDK 10.6 Support
              Silverlight: Version: 5.1.30317.0 - SDK 10.6 Support
              Flash Player: Version: 13.0.0.214 - SDK 10.6 Support
              QuickTime Plugin: Version: 7.7.3
              SharePointBrowserPlugin: Version: 14.4.2 - SDK 10.6 Support
              AdobePDFViewer: Version: 11.0.07 - SDK 10.6 Support
              MeetingJoinPlugin: Version: (null) - SDK 10.6 Support
    Safari Extensions:
              LastPass: Version: 3.1.21
    Audio Plug-ins:
              BluetoothAudioPlugIn: Version: 1.0 - SDK 10.9
              AirPlay: Version: 2.0 - SDK 10.9
              AppleAVBAudio: Version: 203.2 - SDK 10.9
              iSightAudio: Version: 7.7.3 - SDK 10.9
    iTunes Plug-ins:
              Quartz Composer Visualizer: Version: 1.4 - SDK 10.9
    User Internet Plug-ins:
              WebEx64: Version: 1.0 - SDK 10.6 Support
              CitrixOnlineWebDeploymentPlugin: Version: 1.0.105 Support
              f5 sam inspection host plugin: Version: 7060.2013.0312.1 Support
              Google Earth Web Plug-in: Version: 7.1 Support
    3rd Party Preference Panes:
              Flash Player  Support
              Java  Support
              Logitech Control Center  Support
              Plantronics  Support
              Symantec QuickMenu  Support
    Time Machine:
              Mobile backups: OFF
              Auto backup: YES
              Volumes being backed up:
              Destinations:
                        Time Machine [Local] (Last used)
                        Total size: 1 
                        Total number of backups: 16
                        Oldest backup: 2013-10-23 15:56:24 +0000
                        Last backup: 2014-05-27 20:27:27 +0000
                        Size of backup disk: Excellent
                                  Backup size 1  > (Disk size 0 B X 3)
              Time Machine details may not be accurate.
              All volumes being backed up may not be listed.
    Top Processes by CPU:
                   3%          WindowServer
                   1%          Box Sync Monitor
                   1%          Box Sync
                   1%          fontd
                   0%          SystemUIServer
    Top Processes by Memory:
              246 MB          WindowServer
              197 MB          mds_stores
              169 MB          Airmail
              115 MB          Microsoft Outlook
              98 MB          Safari
    Virtual Memory Information:
              3.56 GB          Free RAM
              2.49 GB          Active RAM
              515 MB          Inactive RAM
              982 MB          Wired RAM
              1.74 GB          Page-ins
              40 KB          Page-outs

    ... I don't have a lot running by way of background processes
    There are many background processes running on that Mac. The following will determine its peformance without several that are likely to be causing the problem.
    Please determine if the problems also occur in "Safe Mode":
    Safe Mode or "Safe Boot" is a troubleshooting mode that bypasses all third party system extensions and loads only required system components. Read about it: Starting up in Safe Mode
    You must disable FileVault before you can start your Mac in Safe Mode.
    Starting your Mac in Safe Mode will take longer than usual, graphics will not render smoothly, audio is disabled on some Macs, and some programs (iTunes for example) may not work at all.
    Merely starting your Mac in Safe Mode is not intended to resolve the problem, it's to observe its performance without certain additional components.
    To end Safe Mode restart your Mac normally. Shutdown will take longer as well.

  • How a custom control is advised it gains or looses focus?

    Hey, at least I have a question to ask, instead of answering them... :-)
    Actually, I already asked it in another thread, in one of my answers: [onMouseClicked Event Is Failing To Fire|http://forums.sun.com/thread.jspa?threadID=5391008] but I fear it is lost in a rather lengthly message, so I ask it in its own thread, because I was to bring the attention of knowledgeable people (hello Sun people! :-D).
    The question is simple: In a custom control in JavaFX 1.2, with skin and behavior, how a control is advised when it gains or looses focus?
    The purpose is to let the skin to change the look of the component upon these events, like it is done for standard controls (eg. putting a border around the focused control).
    If the control is clicked, you know (unless it is disabled) that it will have the focus. But I see no way to see the lost of focus, nor when we gain (or loose) it with Tab/Shift+Tab (if it has focusTraversable to true).
    I looked for onFocus() and onBlur() events (or similar), but found nothing. No mixin, nothing related in javafx.scene.input.TextInput and friends, etc.
    I explored the Web but since 1.2 is still new, I found not much information. Only a fragment of source code in [Re: Further location optimizations|http://markmail.org/message/gsevtlkeq45rrdun] where I see scene.getFocusOwner() but this one isn't easily usable because it is package protected (and it is not an event, anyway).
    A possible solution would be to have a timer to inspect the state focused of the nodes, but it is so kludgy I didn't even tried to implement it!
    I hope I just missed the information... If there is no easy/official/working way in 1.2, I hope this will be corrected for next version!

    That's a very good remark, handling of focus highlight shouldn't be done at control (model)'s level. I hesitated to put it in behavior, but it feels more natural in the skin, so I did as you suggested.
    you'll need an interface, and JavaFX does not do thatYou have mixins. But I didn't used them here.
    focused variable never is set to trueHave you included the
    public override var focusTraversable = true;
    line?
    To support multiple skins, my control becomes:
    public class StyledControl extends Control
      // Data related to the control (the model)
      public var count: Integer;
      public override var focusTraversable = true;
      init
        if (skin == null)  // Not defined in instance
          // Define a default styler
          skin = ControlStyler {}
      package function Incr(): Void
        if (count < 9)
          count++;
    }quite bare bones (I intendedly keep the model simple).
    Note I still define a default skin in case user doesn't provide it: they shouldn't care about this detail unless they want to change it.
    I defined an abstract default skin, implementing most variables (particularly the public ones that can be styled) and the focus change:
    public abstract class DefaultControlStyler extends Skin
      //-- Skinable properties
      public var size: Number = 20;
      public var fill: Color = Color.GRAY;
      public var textFill: Color = Color.BLACK;
      public var focusFill: Color = Color.BLUE;
      package var mainPart: Node; // Decorations (id, focus) are kept out of layout
      package var focusHighlight: Node;
      package var idDisplay: Text;
      package var valueDisplay: Text;
      init
        behavior = ControlBehavior { info: bind control.id }
        node = Group
          //-- Behavior: call controller for actions
          onMouseReleased: function (evt: MouseEvent): Void
            (behavior as ControlBehavior).HandleClick(evt);
      postinit
        // Once defined by the sub-class, insert into the node
        insert [ mainPart, idDisplay, valueDisplay ] into (node as Group).content;
      public abstract function ShowIncrement(): Void;
      var hasFocus = bind control.focused on replace
        if (hasFocus)
          ShowFocus();
        else
          HideFocus();
      // Default handling of  focus display, can be overriden if needed
      public function ShowFocus(): Void
        insert focusHighlight into (node as Group).content;
      public function HideFocus(): Void
        delete focusHighlight from (node as Group).content;
      public override function contains(localX: Number, localY: Number): Boolean
        return mainPart.contains(localX, localY);
      public override function intersects(localX: Number, localY: Number,
          localWidth: Number, localHeight: Number): Boolean
        return mainPart.intersects(localX, localY, localWidth, localHeight);
    }and the concrete skins implement the mainPart, idDisplay, valueDisplay, focusHighlight nodes, override ShowIncrement with an animation, override getPrefWidth and getPrefHeight to set to mainPart size and might override ShowFocus or HideFocus (if we want it behind mainPart for example).
    The behavior is:
    public class ControlBehavior extends Behavior
      public var info: String; // Only for debug information...
      // Convenience vars, to avoid casting each time
      var control = bind skin.control as StyledControl;
      var csSkin = bind skin as DefaultControlStyler;
      public override function callActionForEvent(evt: KeyEvent)
        println("{info}{control.count}: KeyEvent: {evt}");
        if (evt.char == '+')
          Incr();
      package function HandleClick(evt: MouseEvent): Void
        control.requestFocus();
        Incr();
      function Incr(): Void
        control.Incr();
        println("{info}: Ouch! -> {control.count}");
        csSkin.ShowIncrement();
    }and knows only the abstract default skin (to apply feedback of user input to skin).
    I use it as follow:
    Stage
      title: "Test Styling Controls"
      scene: Scene
        width:  500
        height: 500
        content:
          HBox
            translateX: 50
            translateY: 100
            spacing: 50
            content:
              StyledControl { id: "Bar" },
              StyledControl { /* No id */ layoutInfo: LayoutInfo { vpos: VPos.BOTTOM } },
              StyledControl { id: "Foo" },
              StyledControl { id: "Gah" },
              StyledControl { id: "Bu", skin: AltCtrlStyler {} },
        stylesheets: "{__DIR__}../controlStyle.css"
    }BTW, I tried layoutY: 50 in place of the layoutInfo definition, but the control remained at default place. Am I reading incorrectly the ref. or is this a bug?

  • Firefox looses focus - titlebar at top goes grey - if a new website is visited.

    If, say, the URL of a web site is put in the address bar and Firefox opens it in a new tab in the normal way then the firefox window looses focus, the window's bar at the top greys out. I have to click the page to restore focus.
    This has a much greater irritation value than it may sound.
    Same thing with clicking a website from, say, google.

    Start Firefox in <u>[[Safe Mode]]</u> to check if one of the extensions is causing the problem (switch to the DEFAULT theme: Firefox (Tools) > Add-ons > Appearance/Themes).
    *Don't make any changes on the Safe mode start window.
    *https://support.mozilla.com/kb/Safe+Mode
    *https://support.mozilla.com/kb/Troubleshooting+extensions+and+themes
    If it does work in Safe-mode then disable all extensions and then try to find which is causing it by enabling one at a time until the problem reappears.
    *Use "Disable all add-ons" on the [[Safe mode]] start window to disable all extensions.
    * Close and restart Firefox after each change via "File > Exit" (Mac: "Firefox > Quit"; Linux: "File > Quit")

  • Problem while tabbing out of a cell

    I have a JTable in which if I enter an invalid data in a particular cell and tab out, after showing the error message the cursor should be brought back to the error cell. I was able to do this with the following code.
    isCellEditable(int row, int col){
    tblDamageDetials.changeSelection(errorRow,errorCol,false,false);
    tblDamageDetials.setEditingColumn(errorCol);
    errorRow and errorCol will have the row and col where the invalid data is present.
    This will act like a lock and will never let u out of the error cell if u tab again. But I want the error message to appear everytime I tab out of the error cell.
    The code to display the error message is invoked from the method setValueAt().
    But the problem is when I try to tab out of the cell again, I'll not be getting the error message again.This is because the setValueAt method will be called only if the cursor is on the celleditor. But the above code will not put the cursor on the editor, instead it will be on the renderer only. So while tabbing the setValueAt will not be invoked.
    I tried bringing the focus to the editor by using tblDamageDetials.editCellAt(erroRow,errorCol);
    Then I am getting StackOverFlow error.
    Could somebody please help me out.

    Thanks for the help.I tried implementing what u told, but still I'm getting StackOverflow exception.I'm getting the exception at editCellAt() method.
    I'll paste my code here.If possible please look into it.
    import javax.swing.*;
    import javax.swing.event.ListSelectionListener;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.JTableHeader;
    import javax.swing.DefaultCellEditor;
    import java.awt.*;
    public class TestTable extends JFrame {
    public static final int firstCol = 0;
    public static final int secondCol = 1;
    public Object[][] tableData = {{"", ""}, {"", ""}};
    public String[] colName = {"First Col", "Second Col"};
    public TableModel tableModel = new TableModel();
    public JTable tblDamageDetials = new JTable(tableModel);
    public int rowSelected = 0;
    private JScrollPane slpDemageDetails = null;
    private JTextField txfDamageComponent = new JTextField();
    private JTextField txfRepair = new JTextField();
    private boolean checkFlag = true;
    private int errorCol = -1;
    private int errorRow = -1;
    MyCellEditor myCellEditor = null;
    TestTable() {
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(getslpDemageDetails(), BorderLayout.CENTER);
    private JScrollPane getslpDemageDetails() {
    if (slpDemageDetails == null) {
    createTable();
    return slpDemageDetails;
    public static void main(String args[]) {
    TestTable test = new TestTable();
    test.show();
              test.setVisible(true);
    test.setSize(800, 500);
    class TableModel extends AbstractTableModel {
    public int getColumnCount() {
    return colName.length;
    public int getRowCount() {
    return colName.length;
    public String getColumnName(int col) {
    return colName[col];
    public Object getValueAt(int row, int col) {
    return tableData[row][col];
    public Class getColumnClass(int c) {
    return getValueAt(0, c).getClass();
    public boolean isCellEditable(int row, int col) {
    if ((errorCol != -1) && (errorRow != -1)) {
    tblDamageDetials.editCellAt(errorRow, errorCol);
    checkFlag = true;
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    myCellEditor = null;
    myCellEditor = (MyCellEditor) tblDamageDetials.getCellEditor(errorRow, errorCol);
    myCellEditor.getTextField().requestFocus();
    return true;
    public void setValueAt(Object value, int row, int col) {
    if (value == null) {
    return;
    tableData[row][col] = value.toString();
    if (col == firstCol) {
    if (checkFlag) {
    checkFlag = validateData();
    if (checkFlag) {
    errorCol = -1;
    errorRow = -1;
    fireTableCellUpdated(row, col);
    public void createTable() {
    tblDamageDetials.getTableHeader().setReorderingAllowed(false);
    tblDamageDetials.setBackground(Color.white);
    tblDamageDetials.setSelectionBackground(new Color(254, 254, 254));
    tblDamageDetials.setRowHeight(20);
    JTableHeader header = tblDamageDetials.getTableHeader();
    Dimension dim = header.getPreferredSize();
    dim.height = 40;
    header.setPreferredSize(dim);
    tblDamageDetials.getColumnModel().getColumn(firstCol).setCellEditor(new MyCellEditor(txfDamageComponent));
    tblDamageDetials.getColumnModel().getColumn(secondCol).setCellEditor(new MyCellEditor(txfRepair));
    ListSelectionModel rowSM = tblDamageDetials.getSelectionModel();
    rowSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
    if (e.getValueIsAdjusting()) return;
    ListSelectionModel lsm = (ListSelectionModel) e.getSource();
    if (lsm.isSelectionEmpty()) {
    rowSelected = -1;
    return;
    } else
    rowSelected = lsm.getMinSelectionIndex();
    slpDemageDetails = new JScrollPane(tblDamageDetials);
    slpDemageDetails.setName("slpDemageDetails");
    dim = new Dimension(454, 500);
    slpDemageDetails.setPreferredSize(dim);
    slpDemageDetails.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    slpDemageDetails.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    } /* End of createTable method */
    private boolean validateData() {
    boolean checkFlag = true;
    int size = tblDamageDetials.getRowCount();
    for (int i = 0; i < size; i++) {
    if ((checkFlag) && (getParseFloat(tableData[i][firstCol].toString().trim()) == 0)) {
    JOptionPane.showMessageDialog(null, "invalid data");
    checkFlag = false;
    errorCol = firstCol;
    errorRow = i;
    return checkFlag;
    public float getParseFloat(String value) {
    float retValue = 0.0f;
    try {
    retValue = Float.parseFloat(value);
    } catch (NumberFormatException e) {
    retValue = 0.0f;
    return retValue;
    } /* End of getParseFloat method */
    class MyCellEditor extends DefaultCellEditor {
    private JTextField tf;
    public MyCellEditor(JTextField text) {
    super(text);
    tf = (JTextField) editorComponent;
    public JTextField getTextField() {
    return tf;
    Hope somebody will be able to help me.
    Thanks,
    Ashey

  • How do I create a new row on tab out of the last column, last row?

    JDev 11.1.2.1.0.
    I've seen a few topics on this but none that I think were really very good solutions.
    Use Case:
    On tab out of the last column in the last row, a new row should be added to the end of the table. Bonus points for setting the focus to the first <af:inputText> of the newly created row.
    Complications:
    1. I'm having a heck of a time trying to find a function that returns the column's displayed index. Sadly, <column binding>.getDisplayIndex() returns -1 unless the user has manually re-ordered the column.
    2. Value Change Listeners only fire if there is a value change. Guess that means I need to do client/server listeners to check each and every <af:inputText> for a tab press?
    3. I'm not even going to get into setting the focus. With all the templates, regions, etc. going on, it's dang near impossible.
    Any ideas on how to attack this one?
    Will

    Hi,
    You will need to use the Run Engine Installation Wizard found on the Tools menu. In addition you need to create a installation set for the operator interface.
    Look at Chapter 16 Distrubuting TestStand ( chapter 17 for version 2).
    Once you have created your installation, install is on your new system.
    The serial number etc is part of the process model. When you run the entry point 'Test UUTs' the PreUUT callback is executed which asks the user for the serial number.
    Hope this helps
    Ray Farmer
    Regards
    Ray Farmer

  • Why can I not tab out of table cell after running command from keyboard

    In my Jtable I have context menu with actions that can be performed on the selected cells either using mouse, or the action can be initiated directly from the keyboard using the defined acceleratorkey.
    After the action has completed you can tab out of the selected cells using the Tab key or cursor keys if the action was initiated with the mouse, but not if initiated with the keyboard but Im at a loss as to what causes the difference.
    thanks Paul

    I found this one someWhere, maybe check your code if Cell returns true = isCellEditable(row, column)
    import java.awt.event.*;
    import javax.swing.*;
    public class TableActions extends JFrame {
        private static final long serialVersionUID = 1L;
        public TableActions() {
            JTable table = new JTable(15, 5) {
                private static final long serialVersionUID = 1L;
                @Override
                public boolean isCellEditable(int row, int column) {
                    return column % 2 == 0;
    //              return false;
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            JScrollPane scrollPane = new JScrollPane(table);
            getContentPane().add(scrollPane);
            InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
            //  Have the enter key work the same as the tab key
            KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
            KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
            im.put(enter, im.get(tab));
            //  Disable the right arrow key
            KeyStroke right = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0);
            im.put(right, "none");
            //  Override the default tab behaviour
            //  Tab to the next editable cell. When no editable cells goto next cell.
            final Action oldTabAction = table.getActionMap().get(im.get(tab));
            Action tabAction = new AbstractAction() {
                private static final long serialVersionUID = 1L;
                @Override
                public void actionPerformed(ActionEvent e) {
                    oldTabAction.actionPerformed(e);
                    JTable table = (JTable) e.getSource();
                    int rowCount = table.getRowCount();
                    int columnCount = table.getColumnCount();
                    int row = table.getSelectedRow();
                    int column = table.getSelectedColumn();
                    while (!table.isCellEditable(row, column)) {
                        column += 1;
                        if (column == columnCount) {
                            column = 0;
                            row += 1;
                        if (row == rowCount) {
                            row = 0;
                        if (row == table.getSelectedRow()//  Back to where we started, get out.
                                && column == table.getSelectedColumn()) {
                            break;
                    table.changeSelection(row, column, false, false);
            table.getActionMap().put(im.get(tab), tabAction);
        public static void main(String[] args) {
            TableActions frame = new TableActions();
            frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
    }

Maybe you are looking for