Catch the tab keyevent??

import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainFrame{
     public MainFrame(){
     public MainFrame(String name){
          show(name);
     Component component=null;
     public void show(String name){
          JFrame jf=new JFrame("Name :" + name);
          JPanel panel = new JPanel();
          panel.setLayout(new GridLayout(3,3));
          for (int i = 0; i < 8; i++) {
               final JButton button = new JButton("" + i);
               button.setActionCommand(""+i);
               button.setName("" + i);
               button.addKeyListener(new java.awt.event.KeyAdapter() {
                    public void keyPressed(java.awt.event.KeyEvent e) {
                         tabpressed(e);
               panel.add(button);
     jf.add(panel);
     jf.setSize(300, 200);
     jf.setVisible(true);
private void tabpressed(java.awt.event.KeyEvent evt) {
          System.out.println(evt.getKeyCode());
//IF "TAB" KEY PRESSED THAN PRINT
// HOW I CAN CHECK THIS
     public static void main(String args[]) {
          new MainFrame().show("Main");
i want to check in the tabpressed() method for "tab" key press
how i can check it?
when i press tab in the button no output is shown.

You have to turn off the tab key as the focus manager's forward traversal key. Add this line to your code and see what happens. Note that of necessity, tab will lose it's "tab" functionality:
        JFrame jf = new JFrame("Name :" + name);
        JPanel panel = new JPanel();
        // add these lines below:
        panel.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
                Collections.EMPTY_SET);
        panel.setLayout(new GridLayout(3, 3));

Similar Messages

  • Why i am unable to catch the 'TAB' key press?

    hi
    i have an application where i have 2 text fields and one button in order say t1, t2 and b1.
    on tabbing t1 cursor moves to t2 and on tabbing t2 cursor moves to b1 and on tabbing b1 cursor moves to t1.
    now when i press tab button on any of the component i have written a keyListener for that to catch 'TAB' key using the comparision
    if( e.getKeyCode() == KeyEvent.VK_TAB )
    but its not catching the tab key pressed on any of these 3 components....
    why like this...
    i want to catch the press of 'TAB' key and write some action for it... but unable to catch the 'TAB' key press.
    anyone could help me in this....
    thanx in advance,
    -Soni

    I seem to remember this question being asked before. I think the answer was that the FocusManager intercepts the TAB key. I don't remember the solution but you can try searching the forum.

  • Catch the Tab Switch Event

    Hi All,
    I have a few tabs in my OAF page. I would like to capture the event when the user switches between tabs.
    Could anyone please tell me the code in processFormRequest ?
    Thanks
    Ponraj

    Hi Gaurav,
    I have a few tabs, each of them have a shuttle region. I shuttle some items in each of the shuttle regions available list to selected list.
    But when i submit in the end, the selected values are visible only for the tab from which i click on the submit button.
    But the values are retained in the selected lists of all the tabs if I walk through them and even after refresh. My plan is to keep them in a datastructure whenever user navigates between tabs and use that datastructure in the final submit to retrieve the selected values of all the shuttle regions.
    Hope you understood the problem
    Thanks
    Ponraj

  • How to catch IE7 tab change event in Java Applet?

    My applet have some modeless dialogs, When I start my applet with modeless dialog in tab1, if I swith to tab2, the modeless dialog of tab1 remains open.
    So I want to catch the tab change event, and set modeless dialog invisible when tab changes.
    Who knows the solutions.... Thanks

    To get to the IE7 browser, you'll have to go through JNI if you're using Java to get to a C level interface. You'll have to write the code to interface to it also. IE7 does not have a Java interface, inface, MS has a vested interest in not supporting a Java interface. You'll have to look up the IE7 developers docs to see the OLE interface you'll have to hit.

  • Catch the keydown event in matrix

    Dear all,
    In matrix I have 2 cols (Code, FullName). In Col with name 'Code' have formated search to search Employee Code. Now i want to catch the tab key when user leave the col 'Code' I will call a function to get Fullname to assign to col 'FullName'. I tried use formated search for this case but inactive so I must use this solution.
    Please help me for this problem.
    Thanks

    Hi,
    You can trap the Validate event on your form and then filter to check if the item UID is your matrix and the column is your code column. If the ItemChanged property is true then run your code to retrieve the name and populate the other column for the current row.
    Kind Regards,
    Owen

  • Catching a KeyEvent from the TAB key...

    Well it does not appear to send any KeyEvents to my KeyListener...
    any reason for this? and is there any fix to do?
    I need a special tab completion feature for my application and need to catch the KeyEvent for the tab key.

    It has to do with the focus-model. In this case both, ALT-events and TAB-events are send, but not if they are pressed together. The reason is that when they are pressed together the focus traverses to the next window (on win98 it does).
    public static void main(String[] args){
      JFrame f = new JFrame("Parent"); 
      KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(createKeyEventDispatcher());
      f.setBounds(100,100,400,300);
      f.setVisible(true);
    public static KeyEventDispatcher createKeyEventDispatcher(){
      return new KeyEventDispatcher(){
                 public boolean dispatchKeyEvent(KeyEvent e){
                System.out.println("Dispatching: " +e);
                if(e.getKeyCode() == KeyEvent.VK_TAB){
                       //do anything
                       return true;  //Don't continue dispatching
                      }else
                       return false; //continue dispatching
    }

  • Detecting the TAB key

    With a recent release of Java, a KeyListener no longer detects the TAB key, which is now apparently considered to be a focus event, not a keyboard event. It is critical to our application, a terminal emulator, that we be able to detect TAB and SHIFT-TAB. I read somewhere about a work-around involving a FocusListener, but a FocusListener does not report when the TAB key is pressed. Can somebody help me here?

    I seem to have solved the problem, and I'd like to present my solution in case anybody else runs across the problem.
    We use an AWTEventlistener. This is intended to watch AWT events but not handle them. However, there is no reason why we shouldn't process tab events within it. AWT will continue to process the tab key as a focus switch, but this solution enabled us to get our applet working again. I hope that future releases of Java will pay more attention to backward compatibility however, so that this kind of fix is not needed.
    In the canvas class:
    // Add the event listener provided we are on a version of the VM
    // that supports it.
    try {
    if (Class.forName("java.awt.event.AWTEventListener")!= null) {
         Toolkit.getDefaultToolkit().addAWTEventListener(new Myeventlistener(), AWTEvent.KEY_EVENT_MASK);
    } catch (Throwable e) {}
    import java.awt.*;
    import java.awt.event.*;
    public class Myeventlistener implements AWTEventListener
    public void eventDispatched(AWTEvent e)
    KeyEvent k = (KeyEvent) e;
    if (k.getID() == k.KEY_PRESSED) {
    if (k.getKeyCode() == 9) {
    if (k.isShiftDown())
    // Process as BackTab Key
    else
    // Process as tab Key

  • How do I catch the button click event from toolbar for my JSP?

    I am using JDev 3.2 and BC4J for my JSP. I am using data web bean methods to create my JSPs. I need to implement a
    master-detail relation in my JSP. Currently I put my master browser as the top frame of JSTabContainer bean and put my
    6 detailed tables into 6 tabs. I found that when I click the next or previous button of toolbar of master frame, the detail tab
    does not display the corresponding detail data properly. I think the reason is that I did not refresh the tab content when
    the user change the current record of master table. Now my question is that how do I catch those events so that I can
    refresh the content of my detail table? Or whatever suggestion can make this work.
    Thanks,
    Lisa

    You posted here with Firefox 17.0.1.
    Try running a Norton Live Update so Norton can update their Firefox add-on and get that Toolbar working again.
    That said, Norton doesn't do anything about Malware. You need a Malware application to locate and remove Malware.
    Install, update, and run these programs in this order. They are listed in order of efficacy.<br />'''''(Not all programs detect the same Malware, so you may need to run them all to solve your problem.)''''' <br />These programs are all free for personal use, but some have limited functionality in the "free mode" - but those are features you really don't need to find and remove the problem that you have.<br />
    ''Note: If your Malware infection is bad enough and you are mis-directed to URL's other than what is posted, you may have to use a different PC to download these programs and use a USB stick to transfer them to the afflicted PC.''
    Malwarebytes' Anti-Malware - [http://www.malwarebytes.org/mbam.php] <br />
    SuperAntispyware - [http://www.superantispyware.com/] <br />
    AdAware - [http://www.lavasoftusa.com/software/adaware/] <br />
    Spybot Search & Destroy - [http://www.safer-networking.org/en/index.html] <br />
    Windows Defender: Home Page - [http://windows.microsoft.com/en-US/windows7/products/features/windows-defender]<br />
    Also, if you have a search engine re-direct problem, see this:<br />
    http://deletemalware.blogspot.com/2010/02/remove-google-redirect-virus.html
    If these don't find it or can't clear it, post in one of these forums for specialized malware removal help: <br />
    [http://www.spywarewarrior.com/index.php] <br />
    [http://forum.aumha.org/] <br />
    [http://www.spywareinfoforum.com/] <br />
    [http://bleepingcomputer.com]

  • Pausing swfs and audio in a browser when the tab is out of focus

    I'm trying to code my flash file so that the html will pause all swfs AND audio when the tab is out of foucs.  I found this code on http://frontenddeveloper.net/wiki/index.php?title=JavaScript_and_VBScript_Injection_in_Act ionScript_3 and it works,but not completely. It only pauses the movie clips that are in the Flash file and not any that are exteranlly loaded with audio included.
    How can I adjust it to pause the externally loaded swfs that are loaded to a mc within my main movie clip and the audio OR what should I use in place of this code?  Someone mentioned on a different post that I needed to use a window.onblur funcition, but they didn't give details.
    import flash.display.MovieClip;
    import flash.utils.setTimeout;
    // This is a more "safe than sorry" setting, since multiple domains
    // have entry into my site. Can be removed or hardcoded if you feel
    // secure or insecure, as you see fit.
    flash.system.Security.allowDomain("*");
    // Throw any errors around to make sure somebody actually gets them.
    ExternalInterface.marshallExceptions = true;
    // This is not the most ideal way to toggle animations on and off, but
    // it's thorough, generic, and simple. Iterate all movieclips within
    // clip, shutting them down each in turn. A better, but much more tedious
    // method would be to target specific clips using dotpath notation, telling
    // each in turn to turn off or on depending on what we need.
    // BUT this is just a demo, and what we're really interested in is the
    // event-handling mechanism that actually calls this routine, and not the
    // routine itself.
    function toggleAllClips(doAnim, clip) {
    if ( clip is MovieClip) {
      if (doAnim) {
       clip.play();
      } else {
       clip.stop();
      for (var i = 0; i<clip.numChildren; i++) {
       toggleAllClips(doAnim, clip.getChildAt(i));
    function animOn(e:*=null) {
    toggleAllClips(true, this.mainMC);
    function animOff(e:*=null) {
    toggleAllClips(false, this.mainMC);
    function injectPrep(e:*=null) {
    try {
      ExternalInterface.addCallback("jsanimOn", animOn);
      ExternalInterface.addCallback("jsanimOff", animOff);
    } catch (e) {
      trace(e);
    function injectListeners(e:*=null) {
    try {
      // Object/Embed ID of this movie needs to be inserted into the
      // JavaScript before we actually wrap and send it to the browser:
      var jsfix=js.toString().replace(/xxx/g, ExternalInterface.objectID);
      ExternalInterface.call(jsfix);
    } catch (e) {
      trace(e);
    // Using timeouts ensures the movie is actually done loading before
    // these fire, helping compatibility for a few browser versions.
    setTimeout(injectPrep,0);
    setTimeout(injectListeners,100);
    JAVASCRIPTS
    JavaScript needs to be wrapped in a tag, a cdata, and a closure
    function in order to be wrapped up and sent to the browser.
    Note that an ActionScript function will replace all instances
    of "xxx" with the actual ID used for this SWF.
    We're battling some major bugs and crossbrowser idiosyncrasies
    here:
    1) In Internet Explorer the 'onblur' event is implemented
        incorrectly (as opposed to Firefox/Mozilla browsers). It is
        wrongly fired when focus is switched between HTML elements
        *inside* a window. As a result, we have to use onfocusout
        instead of onblur, and keep track of which element is active.
        If we focusout and the active element is not the previous
        active element, then we haven't actually "blurred" and dont
        want to trigger Flash.
    2) Firefox has problems interpreting both getElementById and
        document["swf"] when dealing with "twicebaked" object/embeds.
        Adobe's method of finding the swf fails to address the fact
        that document["swf"] sometimes returns an array in this
        situation rather than an object ref, and getElementById
        sometimes confuses name and id.
    3) When a window is created in Firefox, it doesn't actually have
        "focus" (event though it appears to) and therefore won't "blur"
        unless you actually click in it first, i.e if you open up a
        window, then immediately send it to the background, it never
        gets the command to halt the flash. So we have to explicitly
        focus the blasted thing to get it to work properly.
    4) Because of irregularities caused by Ajax, the way browsers shut
        down, and other factors, there's a good chance our swf won't
        be there when a blur (or focusout) event occurs. Therefore we
        need an explicit check within the event handler itself.
    5) Finally, we want to wrap everything inside a wrapper-closure
        function, to keep everything safe from being stepped on. Lucky
        us, we have to do this anyways to get everything to fit inside
        a single ExternalInterface.call event.
    var js:XML = <script><![CDATA[
    ( function() {
      var active_element; // tracker for ie fix;
      var bIsMSIE = false;
      // Modified version of Adobe's code resolves a bug in FF:
      function getSWF(movieName) {
        if (navigator.appName.indexOf("Microsoft") != -1) {
          return window[movieName];
        } else {
          // Resolves a bug in FF where an array is sometimes returned instead of a
          // single object when using a nested Object/Embed.
          if(document[movieName].length != undefined){
            return document[movieName][1];
          return document[movieName];
      // Need to check for swf each time we try this because the swf may actually be gone
      // because of ajax or a window closure event. Prevents error dialog from popping up.
      // Future release should check for this condition and then remove the calling event
      // so it doesn't keep triggering.
      function animOff(){
        if (bIsMSIE && (active_element != document.activeElement)) {
          active_element = document.activeElement;
        } else {
          var logoThang = getSWF("xxx");
          if(logoThang){logoThang.jsanimOff();}
      function animOn(){
        if (bIsMSIE && (active_element != document.activeElement)) {
          active_element = document.activeElement;
        } else {
          var logoThang = getSWF("xxx");
          if(logoThang){logoThang.jsanimOn();}
      // Add the listeners. Hear ye, here ye.
      if (typeof window.addEventListener !== "undefined") {
        // Firefox, Mozilla, et al.
        window.addEventListener("blur", animOff, false);
        window.addEventListener("focus", animOn, false);
      } else if (typeof window.attachEvent !== "undefined") {
        // Internet Explorer
        bIsMSIE = true;
        window.attachEvent("onfocus", animOn);
    // Another bug: window.onblur ALWAYS fires in IE, so
    // we have to keep track of what we're clicking using
    // another method:
    active_element = document.activeElement;
    document.attachEvent("onfocusout", animOff);
      // Necessary to trigger toggling in FF if the page hasn't actually been clicked in and the page
      // is sent to the background. Can be commented out if necessary, e.g. if you don't want the page
      // popping to the top or want focus to remain somewhere else like a form field.
      window.focus();
    ]]></script>;

    I added this code and it removes the externally loaded swfs.  I don't want that, I want them to pause and then resume when the tab is back in foucs.  Also, the main code restarts the main movie clip upon refocusing too.
    Added code:
    function toggleAllLoaders(doAnim, loader) {
    if ( loader is Loader) {
      if (doAnim) {
       loader.play();
      } else {
       loader.stop();
      for (var i = 0; i<loader.numChildren; i++) {
       toggleAllLoaders(doAnim, loader.getChildAt(i));
    I added the new function to all of the places that had the "toggleAllClips" function.

  • How can we prevent JTabbedPanes from transferring focus to components outside of the tabs during tab traversal?

    Hi,
    I noticed a strange focus traversal behavior of JTabbedPane.
    During tab traversal (when the user's intention is just to switch between tabs), the focus is transferred to a component outside of the tabs (if there is a component after/below the JTabbedPane component), if using Java 6. For example, if using the SSCCE below...
    import java.awt.BorderLayout;
    import java.awt.event.FocusAdapter;
    import java.awt.event.FocusEvent;
    import java.awt.event.KeyEvent;
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    public class TabbedPaneTest extends JPanel {
        public TabbedPaneTest() {
            super(new BorderLayout());
            JTabbedPane tabbedPane = new JTabbedPane();
            tabbedPane.addTab("Tab 1", buildPanelWithChildComponents());
            tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
            tabbedPane.addTab("Tab 2", buildPanelWithChildComponents());
            tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);
            tabbedPane.addTab("Tab 3", buildPanelWithChildComponents());
            tabbedPane.setMnemonicAt(2, KeyEvent.VK_3);
            tabbedPane.addTab("Tab 4", buildPanelWithChildComponents());
            tabbedPane.setMnemonicAt(3, KeyEvent.VK_4);
            JPanel panel = new JPanel(new BorderLayout());
            panel.add(tabbedPane);
            JButton button = new JButton("Dummy component that gains focus when switching tabs");
            panel.add(button, BorderLayout.SOUTH);
             * To replicate the focus traversal issue, please follow these steps -
             * 1) Run this program in Java 6; and then
             * 2) Click on a child component inside any tab; and then
             * 3) Click on any other tab (or use the mnemonic keys ALT + 1 to ALT 4).
            button.addFocusListener(new FocusAdapter() {
                @Override
                public void focusGained(FocusEvent e) {
                    System.err.println("Gained focus (not supposed to when just switching tabs).");
            add(new JScrollPane(panel));
        private JPanel buildPanelWithChildComponents() {
            JPanel panel = new JPanel();
            BoxLayout boxlayout = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
            panel.setLayout(boxlayout);
            panel.add(Box.createVerticalStrut(3));
            for (int i = 0; i < 4; i++) {
                panel.add(new JTextField(10));
                panel.add(Box.createVerticalStrut(3));
            return panel;
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    JFrame frame = new JFrame("Test for Java 6");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.add(new TabbedPaneTest());
                    frame.pack();
                    frame.setVisible(true);
    ... Then we can replicate this behavior by following these steps:
    1) Run the program in Java 6; and then
    2) Click on a child component in any of the tabs; and then
    3) Click on any other tab (or use the mnemonic keys 'ALT + 1' to 'ALT + 4').
    At step 3 (upon selecting any other tab), the focus would go to the component below the JTabbedPane first (hence the printed message in the console), before actually going to the selected tab.
    This does not occur in Java 7, so I'm assuming it is a bug that is fixed. And I know that Oracle suggests that we should use Java 7 nowadays.
    The problem is: We need to stick to Java 6 for a certain application. So I'm looking for a way to fix this issue for all our JTabbedPane components while using Java 6.
    So, is there a way to prevent JTabbedPanes from passing the focus to components outside of the tabs during tab traversal (e.g. when users are just switching between tabs), in Java 6?
    Note: I've read the release notes between Java 6u45 to Java 7u15, but I was unable to find any changes related to the JTabbedPane component. So any pointers on this would be deeply appreciated.
    Regards,
    James

    Hi Kleopatra,
    Thanks for the reply.
    Please allow me to clarify first: Actually the problem is not that the child components (inside tabs) get focused before the selected tab. The problem is: the component outside of the tabs gets focused before the selected tab. For example, the JButton in the SSCCE posted above gets focused when users switch between tabs, despite the fact that the JButton is not a child component of the JTabbedPane.
    It is important for me to prevent this behavior because it causes a usability issue for forms with 'auto-scrolling' features.
    What I mean by 'auto-scrolling' here is: a feature where the form automatically scrolls down to show the current focused component (if the component is not already visible). This is a usability improvement for long forms with scroll bars (which saves the users' effort of manually scrolling down just to see the focused component).
    To see this feature in action, please run the SSCCE below, and keep pressing the 'Tab' key (the scroll pane will follow the focused component automatically):
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.FocusAdapter;
    import java.awt.event.FocusEvent;
    import java.awt.event.KeyEvent;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
    import javax.swing.JViewport;
    import javax.swing.SwingUtilities;
    public class TabbedPaneAutoScrollTest extends JPanel {
        private AutoScrollFocusHandler autoScrollFocusHandler;
        public TabbedPaneAutoScrollTest() {
            super(new BorderLayout());
            autoScrollFocusHandler = new AutoScrollFocusHandler();
            JTabbedPane tabbedPane = new JTabbedPane();
            tabbedPane.addTab("Tab 1", buildPanelWithChildComponents(20));
            tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
            tabbedPane.addTab("Tab 2", buildPanelWithChildComponents(20));
            tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);
            tabbedPane.addTab("Tab 3", buildPanelWithChildComponents(20));
            tabbedPane.setMnemonicAt(2, KeyEvent.VK_3);
            tabbedPane.addTab("Tab 4", buildPanelWithChildComponents(20));
            tabbedPane.setMnemonicAt(3, KeyEvent.VK_4);
            JPanel panel = new JPanel(new BorderLayout());
            panel.add(tabbedPane);
            JButton button = new JButton("Dummy component that gains focus when switching tabs");
            panel.add(button, BorderLayout.SOUTH);
             * To replicate the focus traversal issue, please follow these steps -
             * 1) Run this program in Java 6; and then
             * 2) Click on a child component inside any tab; and then
             * 3) Click on any other tab (or use the mnemonic keys ALT + 1 to ALT 4).
            button.addFocusListener(new FocusAdapter() {
                @Override
                public void focusGained(FocusEvent e) {
                    System.err.println("Gained focus (not supposed to when just switching tabs).");
            button.addFocusListener(autoScrollFocusHandler);
            JScrollPane scrollPane = new JScrollPane(panel);
            add(scrollPane);
            autoScrollFocusHandler.setScrollPane(scrollPane);
        private JPanel buildPanelWithChildComponents(int numberOfChildComponents) {
            final JPanel panel = new JPanel(new GridBagLayout());
            final String labelPrefix = "Dummy Field ";
            final Insets labelInsets = new Insets(5, 5, 5, 5);
            final Insets textFieldInsets = new Insets(5, 0, 5, 0);
            final GridBagConstraints gridBagConstraints = new GridBagConstraints();
            JTextField textField;
            for (int i = 0; i < numberOfChildComponents; i++) {
                gridBagConstraints.insets = labelInsets;
                gridBagConstraints.gridx = 1;
                gridBagConstraints.gridy = i;
                panel.add(new JLabel(labelPrefix + (i + 1)), gridBagConstraints);
                gridBagConstraints.insets = textFieldInsets;
                gridBagConstraints.gridx = 2;
                textField = new JTextField(22);
                panel.add(textField, gridBagConstraints);
                textField.addFocusListener(autoScrollFocusHandler);
            return panel;
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    JFrame frame = new JFrame("Test for Java 6 with auto-scrolling");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.add(new TabbedPaneAutoScrollTest());
                    frame.setSize(400, 300);
                    frame.setVisible(true);
    * Crude but simple example for auto-scrolling to focused components.
    * Note: We don't actually use FocusListeners for this feature,
    *       but this is short enough to demonstrate how it behaves.
    class AutoScrollFocusHandler extends FocusAdapter {
        private JViewport viewport;
        private JComponent view;
        public void setScrollPane(JScrollPane scrollPane) {
            viewport = scrollPane.getViewport();
            view = (JComponent) viewport.getView();
        @Override
        public void focusGained(FocusEvent event) {
            Component component = (Component) event.getSource();
            view.scrollRectToVisible(SwingUtilities.convertRectangle(component.getParent(),
                    component.getBounds(), view));
    Now, while the focus is still within the tab contents, try to switch to any other tab (e.g. by clicking on the tab headers, or by using the mnemonic keys 'ALT + 1' to 'ALT + 4')...
    ... then you'll notice the following usability issue:
    1) JRE 1.6 causes the focus to transfer to the JButton (which is outside of the tabs entirely) first; then
    2) In response to the JButton gaining focus, the 'auto-scrolling' feature scrolls down to the bottom of the form, to show the JButton. At this point, the tab headers are hidden from view since there are many child components; then
    3) JRE 1.6 transfers the focus to the tab contents; then
    4) The 'auto-scrolling' feature scrolls up to the selected tab's contents, but the tab header itself is still hidden from view (as a side effect of the behavior above); then
    5) Users are forced to manually scroll up to see the tab headers whenever they are just switching between tabs.
    In short, the tab headers will be hidden when users switch tabs, due to the Java 6 behavior posted above.
    That is why it is important for me to prevent the behavior in my first post above (so that it won't cause usability issues when we apply the 'auto-scrolling' feature to our forms).
    Best Regards,
    James

  • KeyEvents with the TAB Key

    Hey All,
    I have a small progam with a small problem. My program is an applet with numerous textfields and I have implemented the KeyEvents event listener. What I want to have happened when I press the "Tab Key" is the cursor move from one tab to another, but when it goes to the next tab it clears out the text that is currently in the textfield. Take a look at my code segment that is giving me the problem.
    public void keyPressed(KeyEvent e)
    if(NameField == e.getSource())
              if(e.getKeyCode() == KeyEvent.VK_TAB)
                   SalaryField.setText(" ");
    I know that is works if I replace "VK_TAB" with something else like "VK_A". "NameField" and "SalaryField" are the names of mt textfields. I am currently using Java SDK 1.3.1 to program in java program, but my browser uses JVM/Runtime Enviornment 1.4.1. When I run it with my broswer nothing happens when I press tab and some for the program that I am using to progam in. I did a search in the forum and came up with I have above, but still cannot it to work. When I read APIs on 1.4.1 and 1.3.1 that both said that
    "Aside from those keys that are defined by the Java language (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_ constants. Sun reserves the right to change these values as needed to accomodate a wider range of keyboards in the future."
    What is going on? How can I solve this problem?
    Thanks,
    Iceman
    PS:
    My Interface is swing

    Hey All,
    Thanks for the help I got to work when I ran it with my programming program, but when I run it in a browser using the current JVM the tab key does not work. What is wrong now? Or how am I to use FocusListener now, I tried to use the getOppositeComponent(, my complier says that it is not a method of FocusListener. Even though java says in the docmentation that it is. Can I get some more help here. The questions again is How can I tab in a applet?
    Later,
    Iceman

  • How to recognize the tab key in a JTextField

    I have a drawing program with a main window and a tools palette, which is a JDialog. The tools palette has JToggleButtons and one JTextField. When you have the focus in the JTextField and you press tab repeatedly, it tabs through all the JToggleButtons and then back into the JTextField.
    However I would like to recognize the pressing of the tab key and ask for the focus to go back to the main window.
    I subclassed the JTextField, added a KeyAdapter, but it does not recognize the tab key. I also added the processKeyBinding method, but it doesn't recognize the tab key either.
    How can I recognize the tab key?
    Here is a self-contained test program that illustrates the problem:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class AnanyaCurves extends JFrame
      Tools tools;
      public AnanyaCurves(Dimension windowSize)
        Basics.ananyaCurves = this;
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        setTitle("Ananya Curves");
        tools = new Tools(this);
      public static void main(String[] args)
        int toolsWidth;
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        toolsWidth = 200;
        Dimension windowSize = new Dimension(screenSize.width - toolsWidth, screenSize.height - 58);
        AnanyaCurves ananyaCurves = new AnanyaCurves(windowSize);
        ananyaCurves.pack();
        ananyaCurves.setBounds(toolsWidth, 0, windowSize.width, windowSize.height);
        ananyaCurves.setVisible(true);
        ananyaCurves.requestFocus();
      public void setVisible(boolean b)
        tools.setVisible(b);
        super.setVisible(b);
    class Basics extends java.lang.Object
      public static AnanyaCurves ananyaCurves;
      public Basics()
    class Tools extends JDialog
      JToggleButton btnGrid;
      JTextField textGrid;
      JPanel panel;
      public Tools(JFrame frame)
        super(frame, "Tools", false);
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        btnGrid = makeBtn("Grid");
        textGrid = makeTextField();
        panel = makePanel();
        pack();
      public JToggleButton makeBtn(String name)
        JToggleButton btn = new JToggleButton();
        btn.setMaximumSize(new Dimension(108, 24));
        btn.setPreferredSize(new Dimension(108, 24));
        btn.setText(name);
        btn.setFont(new Font("Verdana", Font.PLAIN, 11));
        btn.setMargin(new Insets(5, 10, 5, 10));
        btn.setOpaque(true);
        return btn;
      public ACJTextField makeTextField()
        ACJTextField textField = new ACJTextField();
        textField.setFont(new Font("Verdana", Font.PLAIN, 12));
        textField.setMaximumSize(new Dimension(108, 20));
        textField.setPreferredSize(new Dimension(108, 20));
        textField.setText("0.25");
        textField.setEnabled(true);
        return textField;
      public JPanel makePanel()
        JPanel panel = new JPanel();
        panel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.add(btnGrid);
        panel.add(textGrid);
        getContentPane().add(panel);
        return panel;
    class ACJTextField extends JTextField
      KeyAdaption keyAdaption;
      public ACJTextField()
        super();
        keyAdaption = new KeyAdaption();
        this.addKeyListener(keyAdaption);
      class KeyAdaption extends KeyAdapter
        public void keyPressed(KeyEvent event)
          int keyCode = event.getKeyCode();
          if (keyCode == KeyEvent.VK_TAB)
            Basics.ananyaCurves.requestFocus();
      protected boolean processKeyBinding(KeyStroke keyStroke, KeyEvent keyEvent, int int2, boolean boolean3)
        int keyCode = keyEvent.getKeyCode();
        if (keyCode == KeyEvent.VK_TAB)
          Basics.ananyaCurves.requestFocus();
          return false;
        return super.processKeyBinding(keyStroke, keyEvent, int2, boolean3);
    }Thanks for looking at this.

    Wow, Michael, you work like magic! Thanks so much! I would be happy to give you a commercial key to my Ananya Curves program also once the second release is on my website. It's a program for drawing curves in an easier way without pulling on tangent lines, with all control points right on the curve. Just send me an email to [email protected] if you are interested!

  • Youtube, Netflix, and other sites continue playing audio after the tab is closed

    If you are watching a video on Youtube, Netflix, or another site and you close the tab, the audio continues to play in the background. Restarting the browser resolves the issue.

    I was directed here from my question: "[http://support.mozilla.org/en-US/questions/928868 Flash video stops and starts but audio continues]"
    Flash videos freeze momentarily then fast forward/catch up while the audio continues to play without a problem. Interestingly, I noticed on one video it freezes at the same spot (about 27-28 seconds in) each time I try it. Audio does continue for a split second after I close a tab (that's normal) but it ''does not'' keep going and I don't have to restart FF to stop the audio. Also, I am already using FF13 and it didn't resolved my issue.
    I'm using Win XP with FF 13 but the problem has been going on for about a month (ie under FF12 as well). The problem also occurs under IE which makes me believe that Adobe Flash is the culprit (I also tested Quicktime videos and they worked fine). Flash video seems to work fine under Win7 (rarely freezes) and Ubuntu.
    I looked through similar questions (see above link) and did find one thing that works but it is only a temporary fix for me. One person had HTML5 problems and had to opt out on Youtube. I did the opposite - I opted in and the videos worked fine. However, I like to stick on private browsing which would require me to 'opt in' each time I go to Youtube. Additionally, I encounter the same problem on other sites with flash video and they don't have an HTML5 option.
    I also noticed that I do not have the problem at work on an XP machine with same addons in FF. Flash is v11,1,102,62 (at home I think I have the most updated: 11.2.202.235). I updated the XP machine at work to the latest flash and it still seems to work fine.
    I have tried uninstalling/reinstalling flash, starting FF in safe mode, turning off my firewall and I my internet speed is fine (15Mbps down). I thought it could be my video card but videos on my computer play fine as did the quicktime video. I'm at a loss.

  • "Tab" KeyEvent ignored

    Hi!
    I have a simple scene with a BorderPane and an attached onKeyPressed-Action called "actionXYZ".
    <BorderPane onKeyPressed="#actionXYZ" xmlns:fx="http://javafx.com/fxml">
    </BorderPane> The method "actionXYZ" should do something, whenever I press the TAB-Key (KeyCode.TAB).
    public static void actionXYZ(KeyEvent event) {
       if (event.getCode() == KeyCode.TAB) {
              // done something
    } Problem now is, that the TAB-Key event is either not recognized or simply ignored. At least, nothing happens... But if i use another key Alt (KeyCode.TAB), everything works.
    Does the TAB-Key needs to be handled differently from other KeyEvents?
    Thanks,
    J. Ishikawa
    Edited by: J. Ishikawa on Jun 7, 2013 6:55 PM

    Usually the tab key is used to move the focus to the next tab stop. So add borderPane.requestFocus() statement to the handleAction method
    if you want to get the tab event code when the BorderPane layout container is focused.
    import java.net.URL;
    import java.util.ResourceBundle;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.control.Label;
    import javafx.scene.input.KeyEvent;
    import javafx.scene.layout.BorderPane;
    public class SampleController implements Initializable {
        @FXML
        BorderPane borderPane;
        @FXML
        private void handleAction(KeyEvent event) {
            borderPane.requestFocus();             
            System.out.println("You pressed me! " + event.getCode());
        @Override
        public void initialize(URL url, ResourceBundle rb) {
    }

  • Moowing focus with the tab key (swing)

    Hi. I have a JFrame with 4 text areas in. I want to be able to "hop" to the next text area by pressing the tab key. Most internet pages says this is default, but when I press tab, I get a tab space inside the text area I'm in.. Any ideas on how to do this? (i use Java 1.5)

    HashSet focusForward = new HashSet();
    HashSet focusBackward = new HashSet();
    focusForward.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB,0));
    focusBackward.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB,InputEvent.SHIFT_DOWN_MASK));
        myTextArea.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,focusForward);
    myTextArea.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,focusBackward);

Maybe you are looking for