JTextArea not gaining focus

I have a tabbed pane consisting of 2 JPanels. Each panel has a text area (within a scrollpane) on both.
All I want is for the text area to gain focus when its tab has been clicked.
I've tried adding a changelistener to the tabbedpane:
        tabbedPane.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                if (tabbedPane.getSelectedIndex() == 0) {
                    textArea1.requestFocus();
                else {
                    textArea2.requestFocus();
        });but the textareas don't get focus. They do when I press <TAB> but this isn't much use.
Does anyone have any ideas how I can get the textareas to gain focus?

import javax.swing.*;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.*;
public class TestFocusTabbedPane extends JTabbedPane {
     private JTextArea theFirstTextArea;
     private JTextArea theSecondTextArea;
     public TestFocusTabbedPane() {
          super();
          JPanel tabPanel = new JPanel(new BorderLayout());
          tabPanel.add(new JButton("just for test"), BorderLayout.NORTH);
          theFirstTextArea = new JTextArea();
          theFirstTextArea.setFocusable(true);
          tabPanel.add(new JScrollPane(theFirstTextArea), BorderLayout.CENTER);
          addTab("first", tabPanel);
          tabPanel = new JPanel(new BorderLayout());
          tabPanel.add(new JButton("just for test"), BorderLayout.NORTH);
          theSecondTextArea = new JTextArea();
          theSecondTextArea.setFocusable(true);
          tabPanel.add(new JScrollPane(theSecondTextArea), BorderLayout.CENTER);
          addTab("second", tabPanel);
          addChangeListener(new ChangeListener() {
               public void stateChanged(ChangeEvent e) {
                    int index = getSelectedIndex();
                    if (index == 0) {
                         theFirstTextArea.requestFocus();
                    } else {
                         theSecondTextArea.requestFocus();
     public static void main(String[] args) {
          final JFrame frame = new JFrame(TestPressedButton.class.getName());
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.getContentPane().add(new TestFocusTabbedPane());
          SwingUtilities.invokeLater(new Runnable() {
               public void run() {
                    frame.pack();
                    frame.show();
}This seems to work. I added the JButton just to show that it doesn't get the focus

Similar Messages

  • Focusable JTextArea not gaining focus.

    I am creating a JTextArea and want to give it the focus when it's created. THis happens twice in the program, and the first time it works, the second time the JTextArea is created but doesn't get the focus until I click on it.
    In both cases the code is called from the Swing event queue (see the output below). In both cases the class which creates the jTextArea is the same (an extension of JPanel), and is added to a new tab in a tabbed pane.
    Because I know that you need to make sure that the component's been created before it gets focus, the code to create it and give it focus is:
    private javax.swing.JTextArea jtaInfo;
    // Class constructor for outer class
      public PanelInfo(String s, boolean editable ) {
        initComponents();  // this is the NetBeans call which creates jtaInfo and a few buttons
        jtaInfo.setText(s);
        jtaInfo.setEditable(editable);
        setVisible(true);
        selectTextBox();
      public void selectTextBox() {
        UtilFunctions.tcaProgramInfoMessage("selectTextBox thread="+Thread.currentThread().getName());
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            UtilFunctions.tcaProgramInfoMessage("Runnable thread="+Thread.currentThread().getName());
            UtilFunctions.tcaProgramInfoMessage("Info frame focusable: "+jtaInfo.isFocusable());
            if (!jtaInfo.requestFocusInWindow()) {
              UtilFunctions.tcaProgramInfoMessage("Failed to give info pane focus");
      }The UtilFunctions.tcaProgramInfoMessage call produces output with a timestamp.
    The output is:
    Sat Nov 11 11:25:38 GMT 2006: selectTextBox thread=AWT-EventQueue-0
    Sat Nov 11 11:25:38 GMT 2006: Runnable thread=AWT-EventQueue-0
    Sat Nov 11 11:25:38 GMT 2006: Info frame focusable: true
    Sat Nov 11 11:25:44 GMT 2006: selectTextBox thread=AWT-EventQueue-0
    Sat Nov 11 11:25:44 GMT 2006: Runnable thread=AWT-EventQueue-0
    Sat Nov 11 11:25:44 GMT 2006: Info frame focusable: true
    Sat Nov 11 11:25:44 GMT 2006: Failed to give info pane focus
    So it seems that the threads are OK, and the area is focusable, but I can't work out why one succeeds and the other fails. The program's too huge to post here - I may be able to cut it down to size. But is there anything obvious that I might be doing wrong?

    Because I know that you need to make sure that the component's been created before it gets focus,Actually the parent frame or dialog must be "realized" (maybe thats what you mean by "created") before a component can receive focus. This basically means that you've done a pack() or setVisible(true) on the frame. Using setVisible(true) on the actual component does nothing since by default all JComponents are visible.
    The program's too huge to post here - I may be able to cut it down to sizeI fail to see why its so difficult to create a short demo program showing the problem. The code you posted doesn't help because we don't know the context of how the code is executed.
    Below is a simple demo that shows an incorrect version and a correct version in 10 lines of code. So if this code doesn't help solve the problem you will now need to wait hours again until you post a version of your code that does demonstrate the problem. Whereas if you had spent 5-10 minutes to create a demo that doesn't work I may have been able to help you out right now.
    Simplify your problems and the answer will also be simpler.
    import java.awt.*;
    import javax.swing.*;
    public class FocusTest
         public static void main(String[] args)
              JTextField textField1 = new JTextField("One");
              JTextField textField2 = new JTextField("Two");
              JTextField textField3 = new JTextField("Three");
              JFrame frame = new JFrame();
              frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
              frame.getContentPane().add(textField1, BorderLayout.NORTH);
              frame.getContentPane().add(textField2, BorderLayout.CENTER);
              frame.getContentPane().add(textField3, BorderLayout.SOUTH);
              // This doesn't work
              textField3.requestFocusInWindow();
              frame.pack();
              // This does work
    //          textField3.requestFocusInWindow();
              frame.setLocationRelativeTo(null);
              frame.setVisible(true);
    }

  • Windows not gaining focus...

    Hello!
    After recent update (I can't recall having this issue before) windows that previously had focus, but lost it after I opened a new window, do not gain focus after I close the new window. This is very irritating, because now I have to click on the old window all the time, even though it is the top window, to give commands to it.
    The same thing happens also when switching spaces - if I have a window with focus in one space, quickly switch to another to check something (without clicking anywhere) and then go back to the first one, I have to click in the window otherwise I can't write or send commands to it. Even though the cursor is in the window and blinking as if it had focus (if it is an input field).
    A concrete example:
    I am writing this text in Firefox in a textbox on a webpage. I switch spaces forth and back. The cursor is still in the textbox and blinking, but whatever I press nothing happens. Firefox is still the active application (it has the menubar).
    I've tried searching, but wasn't lucky to find anything, is it just me?
    BR,
    stormmind

    It work well in my system. Either on appletview and browser.
    Firefox 3 on Debian Lenny, java 1.6.0_07-b06

  • Save As dialog box does not gain focus (bring to foreground) with Windows 7?

    Hello,
    I've got several users with Microsoft Windows 7 (64bit) and Adobe Acrobat 9 Standard (OEM) with the same problem.  When you go to Print to your PDF Printer, the Save As... dialog box does not come to the foreground and gain focus.  Most often it just sits in the taskbar blinking to get their attention.
    However the users get frustrated and often don't realize the Save As box popped up at all.  They did not have this problem with Windows XP.
    I actually can replicate the problem on my own PC.
    Any workarounds for this behaviour?
    Thanks,
    -Tim

    This appears to be a Windows 7 focus issue.
    You can back up your registry and try the fix below, it worked for me.
    Fix number 1
    1. Open Start >> Run and type “regedit” (without quotes)
    2. Navigate to the following path:
    [HKEY_CURRENT_USER\Control Panel\Desktop]
    3. Right Click on the empty space and create a new DWORD value, or modify the existing value named ‘ForegroundLockTimeout’, set or modify the value to 0. (this value will cause the application to take the focus instantly.)
    4. That’s it Done, exit registry and restart windows for changes to come into effect.

  • Excel 2010 not gaining focus correctly

    I am seeing this on my own workstation, but I'm being asked about it by more and more clients lately - Excel 2010 seems to have odd focus issues. For example:
    a) When opening an Excel spreadsheet from Windows Explorer, Excel opens, appears to have focus and does correctly open on top of other open windows, displays the file and I can edit cells, but I cannot click anything in the Ribbon bar or menus. In order
    to gain access to menu items I first have to lose focus (by clicking to another open application, the Task Bar or Desktop - anything that takes focus away from Excel) and then click back into Excel, whereupon the menu items now work correctly.
    b) If Excel is already open and I open another Excel file from Windows Explorer, the new window isn't brought forward - it remains behind the previously open spreadsheet. In addition, Excel isn't given focus at all in this situation - it is retained by Windows
    Explorer (which may or may not be open on the same screen as Excel, although it's more obvious if they overlap as Excel clearly remains behind the Explorer window). Additionally, if all existing spreadsheets are closed but Excel remains open and I open a spreadsheet
    from Explorer, the same behaviour occurs (ie Excel fails to gain focus and it is retained by Explorer).
    My personal workstation is running Windows 7 Pro x64 SP1 (this behaviour was evident before SP1's release) and Excel 2010 version 14.0.4760.1000 (32-bit). I have seen it occuring on other PCs using both 32- and 64-bit versions of Windows 7 Pro and Excel
    2010 (all 32-bit). While the workaround is relatively simple, it's still frustrating (and more than a little confusing for many non-technical people - one of my clients has been frustrated by this for weeks before I discovered she was experiencing the issue).
    I find it a little strange that I have been unable to find references to this problem anywhere (and I've been looking on-and-off for several months now). Maybe I'm just looking for the wrong things... Any help that can be provided will be greatly appreciated.
    Trevor Hardy

    I'm really not sure about the ethics of people being able to mark their own replies as accepted answers on here...
    Jennifer, thank you for attempting to assist with this problem. Unfortunately your suggestion doesn't alleviate the issue.
    As I thought I made clear in my first post, this issue is being seen when opening Excel spreadsheets directly from Explorer (or a desktop shortcut or similar, which is just an Explorer instance anyway) - it doesn't occur if you open files from within Excel.
    Therefore, opening Excel in Safe Mode has no effect - you can open one instance of Excel in safe mode, but when you open another Excel file from outside Excel, of course it opens another instance of Excel in normal mode and the same symptoms are evident.
    However, your suggestion regarding add-ins was a sensible one, so I manually removed the two Adobe Acrobat add-ins that were active on my workstation (the only add-ins installed) but unfortunately that hasn't made any difference. I should also point out
    that these add-ins aren't installed on the other PCs that are experiencing this issue, either, as they are used in wholly different environments.
    I'll be setting up Office 2010 on some new PCs in a couple of days, so I'll do some testing of those to see if I can replicate it on virgin systems.

  • JTextField not gaining focus on initialization of Applet

    I originally tried posting this in the Applets forum but was unable to get a response, so I am re-posting here in hopes of finding an answer.
    I have a simple JApplet with a JFrame, a JTextField added to the JFrame, and a WindowListener added to the JFrame that requests focus to the JTextField whenever the JFrame is activated. Upon opening the applet the WindowListener's windowActivated() method is called and requestFocusInWindow() for the JTextField returns true however the focus is never actually given to the JTextField. According to the API for Component,
    "This method returns a boolean value. If false is returned, the request is guaranteed to fail. If true is returned, the request will succeed unless it is vetoed, or an extraordinary event, such as disposal of the Component's peer, occurs before the request can be granted by the native windowing system. Again, while a return value of true indicates that the request is likely to succeed, developers must never assume that this Component is the focus owner until this Component receives a FOCUS_GAINED event"
    I am assuming that the request is getting "vetoed" but I don't understand why or what this even means. If I alt-tab off of the applet window and alt-tab back on then the request is handled properly. This issue only arises on initially opening the applet. Has anyone seen this issue before? Is there a known workaround? Here is the code for my sample applet:
    import javax.swing.*;
    import java.awt.event.*;
    public class MyApplet extends JApplet{
    private JFrame myFrame;
    private JTextField myTextField;
    private FrameWindowListener myListener;
    public void init(){
    myFrame = new JFrame();
    myFrame.setSize(700, 360);
    myFrame.setLocation(100, 100);
    myTextField = new JTextField();
    myFrame.add(myTextField);
    myListener = new FrameWindowListener();
    myFrame.addWindowListener(myListener);
    public void start(){
    myFrame.setVisible(true);
    myFrame.pack();
    public class FrameWindowListener extends WindowAdapter{
    public void windowActivated(WindowEvent e){
    boolean focus = myTextField.requestFocusInWindow();
    if(focus){
    System.out.println("Focus successful");
    } else{
    System.out.println("Focus unsuccessful");
    }

    Don't forget to use the "Code Formatting Tags", so the posted code retains its original formatting.
    http://forum.java.sun.com/help.jspa?sec=formatting
    Works fine for me using JDK1.4.2 on XP using appletviewer.
    The only suggestion I would make is that you should use pack() before setVisible(...). Also I usually have that code in the init() method instead of the start() method.

  • Bringto front, but while not gaining focus

    hi,
    I wish to create an aplication which runs in the background, and at pre-determined times apears at the front of the screen momentairily (ontop of any other programs running), and then goes to the back again.
    However, what i wish to know is: is it possible to do this, but yet allow whatever program had focus at that time, to keep that focus (for keyboard/ mouse/ and any other devices which might send information to the window with focus.)
    is this possible?
    is there a difrence between weather its possible on windows or on linux?
    hope someone can help.
    cheers
    james

    Not with out JNI.

  • Applet in a browser page  doesn't gain focus with JVM 1.6.x

    Hi,
    I have a problem to move TAB in a IE browser page with applet in a tag object using JVM 1.6.x
    with JVM 1.5_10 or above this is possible. You can move focus between elements page and enter and exit to applet object.
    Executing the same applet with the same JVM, but after installation of the latest 1.6 plugin, when applet gains focus it doesn't release it.
    With JVM 1.6, applet can't gain focus and manage keyevents; all keyevents are intercepted from browser (eg: IE toolbar elements are activated) .
    I need to move focus on elements of browser page with tab, and enter and exit from applet to make my application accessible event not using mouse !!
    (you can watch a recorder right sample here: http://www.vista.it/ing_vista_0311_video_streaming_accessibile_demo.php)
    Note that FireFox doesn't work at all, even if bug seems fixed https://bugzilla.mozilla.org/show_bug.cgi?id=93149
    Please advise.

    Hi,
    We have found a wor around for this problem.
    The following option has been unchecked and the applet could be loaded.
    Go to java control panel
    Under the Advanced Tab
    Under the Security section
    Uncheck the last option "Use TLSv1.0".
    This makes the applet work.
    But could not understand as why this is creating a problem.
    We have tried to include TLSv1.0 in the cipher suite of our apache server, while keeping the above option in java plugin control panel checked, but even that did not solve the problem.
    Please help me of how should I proceed for this problem, as I am totally stuck.
    Thank you.

  • How to gain focus to a JTextField in a Jwindow

    Hi Friends
    I am trying to create a Login screen which covers the entire desktop using a Jwindow.
    I have one JTextfield and JPassword field in the Jwindow but i am not able to gain focus to those text fields and not able to type anything in those fields...
    I am using java 1.4.2
    This is my program...
    public class Login implements ActionListener
            JWindow fs;
            JTextField tx1;
            JPasswordField tx2;
             public Login ()
                 fs= new JWindow(new JFrame());
                 tx1= new JTextField(12);
                 tx2= new JPasswordField(12);
                 JButton jb = new JButton();
                 fs.getContentPane().setLayout(new FlowLayout());
                 fs.getContentPane().add(tx1);
                 fs.getContentPane().add(tx2);
                 fs.getContentPane().add(jb);
                 fs.setSize(300,300);
                 fs.setVisible(true);
                 fs.show();
                 fs.toFront();
    public void actionPerformed (ActionEvent e)
         System.out.println("User id "+tx1.getText()+" and Password is : "+tx2.getText()):
    public static void main(String[] args)
        new Login();
         Can some one help me in solving this issue with JWINDOW... Plz dont suggest JFrame , since i am not willing to use that header....
    Thanks in advance
    Ur Friend.

    Swing releated questions should be posted in the Swing forum.
    Check out this posting, found in the Swing forum:
    http://forum.java.sun.com/thread.jspa?forumID=57&threadID=675445
    Plz dont suggest JFrame , since i am not willing to use that header....
    JFrame.setDefaultLookAndFeelDecorated(false);

  • Gainer Focus and Lost Focus

    How implements the methods to gainer focus and lost focus?
    Thanks

    Use a node.focusedProperty() change listener to know when a field gains or loses focus.
    Call node.requestFocus() to ask for focus (for some reason I have to wrap this in Platform.runLater to get it to actually do anything).
    Call node.setFocusTraversable(false) if you don't want the user to be able to tab to the node, but still be able to click on the node to give it focus.
    Call node.setDisable(true) if you don't want the node to be focusable at all.
    I'm not sure how the focus traversable order is calculated, perhaps the order that items are added to the scene?
    Not sure how you would create a custom focus traverse if you needed one.
      @Override public void start(Stage primaryStage) {
        final TextField tf1 = new TextField("First but not initially focused");
        final TextField tf2 = new TextField("Second initially focused");
        Platform.runLater(new Runnable() { public void run() { tf2.requestFocus(); } });
        final TextField tf3 = new TextField("Can focus by clicking on, but not by tabbing to.");
        tf3.setFocusTraversable(false);
        final TextField tf4 = new TextField("Cannot focus at all.");
        tf4.setDisable(true);
        tf1.focusedProperty().addListener(new ChangeListener<Boolean>() {
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
              if (newValue) {
                System.out.println("First text field gained focus");
              } else {
                System.out.println("First text field lost focus");
        VBox root = new VBox(); root.setSpacing(5);
        root.getChildren().addAll(tf1, tf2, tf3, tf4);
        primaryStage.setScene(new Scene(root, 300, 100));
        primaryStage.show();
      }

  • Problem gaining focus

    Hi all, Im writing an applicaiton and I'm having some trouble getting the focus where I want it and was wondering if anyone could give me a suggestion.
    Here's the setup: I have a JFrame with a JToolBar on it. One of the buttons on the toolbar fires an extention of PAction that I setup. This PAction brings up a JInternalFrame with an optionpane on it that allows the user to enter/edit several pieces of info (several JTextComponents). On this InternalFrame is an InternalFrameListener, on its internalFrameActivated event I do a requestFocus() on the first JTextComponent on the InternalFrame.
    Whats currently happening is that the internalframe is activating and being selected, but the focus seems to be remaining on the toolbar's button. If I fire the same action using a method other than the toolbar (like the menu), the focus goes exactly where I want it.
    Here's what I know so far from debugging:
    1) The listener is definetly firing.
    2) The component never gains focus (in otherwords, im not loosing it after the request)
    3) There is a thread running but it's sleeping until the ok or cancel button is pressed.
    Here's what I've tried so far:
    1) Removing the thread
    2) Requesting focus on the first component: after the frame is opened, after the frame is activated, at the end of the PAction, and having the action reselect the internalframe then give the component focus
    3) I verified there are no other action listeners on the button.
    4) Stared blankly at my screen for a long time lost in thought.
    Any help will be very appreciated,
    Kris

    I experienced the same problem and the way I resolved it
    was making the toolbar buttons non-focusable.
    But this may not be good for you if you need to navigate the
    toolbar with the keyboard.

  • Forcing JLabel to gain focus - how?

    Hi people,
    how can i force a JLabel to gain focus?
    Already tried overwriting isFocusable() -> did not work.
    Thanks for any help.
    Cheers,
    Mark

    requestFocus() does work. atleast in my sdk it does 1.4.1_01.
    do a requestFocus() and then a System.out.println(jLabel.hasFocus());
    the problem is that there is no way to tell that you have focus (no border, etc.) like buttons. probably in your subclass you will need to implement a focus listener to draw a border around the JLabel whenever it has focus and whenever it loses focus...
    i don't know though as i've never done something like this before.

  • Preventing a JFrame/dialog from showing in the task bar & gaining focus.

    As the (lengthly) title suggested, I would like to know if it is possible to create a JFrame or JDialog that can run (more or less) on its own without appearing in the task bar or gaining focus when setVisible() is called.
    Anyone know how to do this, or have better Google search term to use than the ones I thought up? ;-)

    The point is for it to stay visible (normally) when when it is not hidden (it is hidden for ~1 second to take a screenshot) and then shown again. The problem with this is that the application currently in focus loosees it (which is very annoying when typing...).
    I'm trying to make a 'desktop button' of sorts that just acts as a tray icon when the system tray isn't supported. I put some effort into making it have a transparent background, but by doing that setVisible() is called every 15 seconds or so. (the frame is alwaysOnTop as well), thus the reason that I don't want the focus to be taken.
    As for not showing in the system tray, I don't really need it although it would certainly make the icon better.
    With that said, is there some way to accomplish this?
    Thanks for the quick reply!

  • Installing apps from dmg file package content windows doesn't gain focus

    When I download a dmg file and double click to mount, after it mounts, the window containing the package contents never gains focus and stays hidden behind the rest of the windows that are open and I have to use Expose to find it. Is this an error or setting I've missed? On my friend's iMac it works fine but not on my MacBook Pro and we both have Snow Leopard.
    Thanks

    Ok the first option didn't have any effect. When I opened the dmg from Chrome it loaded the window in the background.
    Dragging the dmg onto the DiskMounter app worked. The window opened allowing me to drag the App to the Applications folder and was in focus.
    I have a similar issue when I open an archive(zip) file from chrome/safari/firefox it shows the progress of the unarchiving bu then the finder window that would normally come to focus displaying the unarchived folder is hidden behind my other open windows.

  • How to keep playing when Premiere window not on focus?

    I make home movies in Premiere, which means putting together a lot of spontaneous clips.
    Because of that, I must censor them on the editing table so that no disgusting, gossipy or insulting comment gets burned to a disc and sent to my relatives.
    Adobe Premiere stops playing as soon as any other window gains focus, which means that I am forced to watch the entire project (2 hours) even though I only want to listen to it, perhaps whilst I could be browsing the web, chatting, etc.
    Is there a way I can force Premiere to play the project while being in the background?
    Thank you.
    P.S. The same thing happens with Encore.

    function(){return A.apply(null,[this].concat($A(arguments)))}
    disgusting, gossipy or insulting comment 
    No wonder Premiere stops.
    Make sure your machine is up to date with all the latest drivers.

Maybe you are looking for