Jtextfield focus after validation

I have a JFrame which contains several jtextField objects. There is also one button. Upon clicking of this button I check if any of these jtextfield is null. If it is I show a message box. At this point I want to focus on the first null jtextfield. However when I try to get focus, nothing happens... Below is the code of the button I use. As you can see I have tried to use SwingUtilities.invokeLater(new Runnable() and requestFocus() and also grabFocus(). But none is working... How can I achieve this?
  private void jbtnSaveActionPerformed(java.awt.event.ActionEvent evt) {                                        
// TODO add your handling code here:
        if (txtUser.getText()+"" == "" ) {
            txtUser.requestFocus();
        else if (jtxtPass2.getText()+"" == "" ){
            System.out.println("I am here");
            SwingUtilities.invokeLater(new Runnable() {
            public void run() {
            jtxtPass2.requestFocus();
            jtxtPass2.grabFocus();
//            jtxtPass2.requestFocus();
        else if (txtDBName.getText()+"" == ""){
            txtDBName.requestFocus();
        else if (txtPort.getText()+"" == ""){
            txtPort.requestFocus();
        else if(txtMachine.getText()+"" == ""){
            txtMachine.requestFocus();
        else      { 
        jframeload.setDBVariables(txtMachine.getText() + "", Integer.parseInt(txtPort.getText() + ""), txtDBName.getText() + "", txtUser.getText() + "", jtxtPass2.getText() + "");
        this.dispose();
    }       

After adding the txtUser.getText().trim().length() == 0 it now works. I guess the check was failing and no focus was being requested. Now my code looks like
if (txtUser.getText().trim().length() == 0 ) {
            txtUser.requestFocus();
            jframeload.jMessage.append("\n Username is a required field. " + getCurrDate());
            jframeload.jMessage.setCaretPosition( jframeload.jMessage.getDocument().getLength() );
        }

Similar Messages

  • JFileChooser in Applet keeps focus after selection of a directory

    I have spent several days on the following issue, but haven't found any solution so far...
    When I open a JFileChooser out of an Applet and select a Directory, the FileChooser closes as expected, but a text field located on the main applet pane cannot be selected any more (the mouse pointer goes to "text cursor" style when hovering over it, but the text field does not get the focus when clicked). Strangely, the other button on the same pane still reacts to mouse clicks. This happens only when I select a directory, but not when I choose a file. Also, it does not happen, when I click "Cancel" instead of "Open". Furthermore, the problem occurs only using the Firefox plugin, not in the AppletViewer. I even tried to remove the text field from the root pane and add a new one after the file chooser execution, but still it won't regain focus.
    Here's the stripped-down code:
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    public class TestApplet extends JApplet {
        private static final long serialVersionUID = 1L;
        @Override
        public void init() {
            final JPanel rootPanel = new JPanel();
            rootPanel.setLayout(new BorderLayout());
            getContentPane().add(rootPanel);
            final JButton fileChooserButton = new JButton("Start");
            fileChooserButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JFileChooser fc = new JFileChooser();
                    fc.setAcceptAllFileFilterUsed(false);
                    fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                    fc.setMultiSelectionEnabled(false);
                    fc.showOpenDialog(rootPanel);
            JTextField textField = new JTextField();
            rootPanel.add(fileChooserButton, BorderLayout.CENTER);
            rootPanel.add(textField, BorderLayout.SOUTH);
    }And this is the applet.html:
    <applet code="TestApplet.class" codebase="file://home/administrator/workspace/Test/bin" width=100 height=50></applet> This concerns: Ubuntu 9.04 / Firefox 3.6.9 / JVM 1.6.0_20
    Any help or ideas for a workaround would be much appreciated...

    AndrewThompson64 wrote:
    JWS was available as a separate download since Java 1.2. It became bundled with the JRE around 1.4.2, not sure of the micro-version, but it was in the 1.4 era. 1.4 has been relegated to the 'obsolete' pile now, so I think you are safe expecting the end user to be prepared to update to 1.5+ if needed.You don't know my grandma: she isn't prepared to anything, but she wants things to just work ;-)
    For ensuring the user has a minimum of 1.5, see the [Java&#153; Rich Internet Applications Deployment Advice|http://download.oracle.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html] for details of the deployJava.js script. It is useful for both applets and apps. deployed using JWS.
    Yes, I already use this script for my Applet, but I hadn't realized that it worked for JWS as well.
    Do you mean like a corporate intranet?Exactly. Another example could be centrally managed laptops connecting over Internet to your application (like the traveling salesman connecting to his task planner)
    ... Can you do a search of the bug DB and if nothing shows up, submit one? The only chance these things will get fixed is if they are reported.I agree with you on that question and I've already had a look (didn't find anything so far)
    Embedded applets are a PITA. I wouldn't disagree, but again, if you want to bring a rich client to the masses, sometimes that's the way to do it (unless you go for ActiveX, which is definitely not an option for me). Anyway, I'll give JWS a try.. and then I'll ask the customer help desk if it was a good idea...
    For example, is there any programmatic way to determine if the embedded applet is not acting as expected? If so, monitor that and on detection, pop a dialog to the user explaining the situation and offering the free floating version from a button click.Well, I have to think a bit more about this. Probably I will just to check if the text field gets the focus after a mouse click, by adding some kind of test inside a MouseListener. If it doesn't get the focus, I would be quite sure that there's a problem... I'll look into this.
    On the other hand, to work around the whole problem, I have found some Open Source Directory Chooser (http://sourceforge.net/projects/jfolderchooser), which looks nice at a first glance, but I didn't have the time to go into it in more detail. I'll just quote you here:
    I cannot say if this will fix the problem. Or perhaps it will fix the problem in that browser/JRE combo., but break it in another. ;)Words full of truth :)

  • Different style to InputText box after validation fails in JSF 1.0

    Hi, In JSF 1.0, I would like to change the style to the inputText box after validation fails. Pls kindly advise.
    Thanks

    You may find this article useful: [http://balusc.blogspot.com/2007/12/set-focus-in-jsf.html].
    That said, if you're using JSF 1.0, you can (and should) always upgrade to at least 1.1_02. It is available at [http://javaserverfaces.dev.java.net].

  • Dynamic Action on "Get Focus" After Closing a Popup Window

    Hi,
    From one of APEX Application Pages I am calling a Popup Window where users can create a new record. In the Popup Window once the record is created and window is closed, I want to refresh the region on the main page to show the record created in the popup window.
    How do I create a dynamic action which will fire when the main APEX window gets the focus (after the popup window is closed). ?
    Any pointers will be greatly appreciated.
    Thanks & Regards,
    Ashish Agarwal
    http://www.asagarwal.com

    Assuming that you have a dynamic action in the parent page which refreshes the region
    <li> Make a note of the event which triggers your dynamic action, lets call this event A.
    <li> Create a JS function in parent page which triggers event A when called.
    For example if your Dynamic Action trigger is a button(id ="P100_REFRESH") press event
    Your JS function could be
    function Trigger_refreshRegion()
      $('#P100_REFRESH').click();
    The way in which you simulate the Dynamic action deoends on the firing event that you have used, so modify it appropriately.
    <li>Now in the pop up page, if you are closing the page in JS using smthing like window.close() or so,
    just call the parent page's refresh JS function there using the
      opener.Trigger_refreshRegion(); //whatever was the name of the function that you created.

  • Rear camera will not focus after updating to 8.1.3.   Any adviceY  Already tried erasing and reinstalling.

    I updated to 8.1.3 and my rear camera will not focus.   I erased and reinstalled and still have the problem.  Any advice?

    Hello jonesrob,
    Thanks for using Apple Support Communities.
    From your post I see that your photos and video taken with the rear camera on your iPhone are not in focus after updating to iOS 8.1.3.  When you restored your iPhone, did you restore from a backup?  If so then I would like you to please restore to the factory settings by following the directions in the article below.
    Use iTunes to restore your iOS device to factory settings - Apple Support
    If you had already restored to the factory settings and the issue persists, then it's time to seek service for your iPhone.
    iPhone Other Repair Options - Apple Support
    Have a good one,
    Alex H.

  • After validation want to state maintain of h:outputText /

    Hi,
    I have some fields with validation,
    after validation want to state maintain of <h:outputText />
    <h:outputText id="form_title" value="#{viewCDBean.form_title}"/>
    <h:outputText id="output1" value="Title"/><h:inputTextarea id="cd_title" value="#{viewCDBean.cd_title}" rows="2" cols="40" required="true"></h:inputTextarea><h:message for="cd_title" style="color:red"/>

    Add a h:inputHidden component which saves the h:outputText value for the next request.

  • JSF keeps displaying old values after Validation Phase fails

    Hi all,
    I would like to ask some help in understanding a particular behaviour that JSF shows when Validation Phase fails.
    I'm using:
    - Tomcat 7.0.2
    - JSF 1.2_12
    - RichFaces 3.3.3
    Problem description.
    I wrote a form with 4 input fields: an inputText and 3 selectOneMenu. The inputText is required while the selectOneMenus don't require any validation.
    Attached to the first selectOneMenu (row 32), is an a4j:support tag so that, whenever the change event is fired, the list of items of the second
    and the third selectOneMenu (row 44 and 58) are correctly filled (note that the mandatory of the inputText is ignored thanks to the ajaxSingle attribute).
    In particular, after loading the two lists of items, the actionListener forces the value of the second and the third selectOneMenu to null.
    This mechanism seems to work fine until I submit the whole form without filling the input text: as expected, JSF validation fails but if I change the value of
    the first selectOneMenu again (causing a new submit), the page keeps displaying the values specified before JSF validation failed for the second and the third
    selectOneMenu (note that the actionListener is still called and the values of the second and the third selectOneMenu are still forced to null).
    Since I'm using a simple PhaseListener, I noticed the following: before JSF validation fails, every time I change the value of the first selectOneMenu, JSF life
    cycle always calls the get method for the second and the third selectOneMenu during the Render Response Phase. In this way, JSF is able to "see" that
    those values have been set to null during the Invoke Application Phase.
    After validation fails, JSF stops calling those getters when I change the value of the first selectOneMenu.
    I hope my explanation was clear enough, thanks a lot for your help.
    Regards,
    Nico
    Web Page
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:a4j="http://richfaces.org/a4j"
          xmlns:rich="http://richfaces.org/rich">
    <head>
      <title>Prove Rich</title>
    </head>
    <body>
      <h2>Prove Rich</h2>
      <f:view>
      <a4j:outputPanel ajaxRendered="true">
        <h:messages style="color:red" />
      </a4j:outputPanel>
      <h:form>
      <p>
         Input required: <h:inputText value="#{provaProbReplyBean.inputRequired}" required="true" />
      </p>
      <p>
           <h:outputText value="Scegli il canale:" />
           <h:selectOneMenu value="#{provaProbReplyBean.canale}">
            <f:selectItem itemLabel="--" itemValue="" />
            <f:selectItem itemLabel="Profamily" itemValue="Profamily" />
            <f:selectItem itemLabel="Captive" itemValue="Captive" />
            <a4j:support event="onchange" action="#{provaProbReplyBean.caricaProcBanche}"
                                  ajaxSingle="true" reRender="procedure, banche" />
         </h:selectOneMenu>
      </p>
      <p>
           <h:outputText value="Scegli la procedura:" />
           <h:selectOneMenu id="procedure" value="#{provaProbReplyBean.procedura}">
            <f:selectItem itemLabel="--" itemValue="" />
            <f:selectItems value="#{provaProbReplyBean.procedureList}" />
            <!-- immediately save the current value -->
            <a4j:support event="onchange" ajaxSingle="true" />
         </h:selectOneMenu>
      </p>
      <p>
           <h:outputText value="Scegli la banca:" />
           <h:selectOneMenu id="banche" value="#{provaProbReplyBean.banca}">
            <f:selectItem itemLabel="--" itemValue="" />
            <f:selectItems value="#{provaProbReplyBean.bancheList}" />
            <!-- immediately save the current value -->
            <a4j:support event="onchange" ajaxSingle="true" />
         </h:selectOneMenu>
      </p>
      <p><h:commandButton value="Submit" /></p>
      </h:form>
      </f:view>
    </body>
    </html>
    Bean
    public class ProvaProbReply {
         private String inputRequired;
         private String canale;
         private String procedura;
         private String banca;
         private Map<String, List<SelectItem>> canaliProc = new HashMap<String, List<SelectItem>>();
         private Map<String, List<SelectItem>> canaliBanche = new HashMap<String, List<SelectItem>>();
         private List<SelectItem> procedureList = new ArrayList<SelectItem>();
         private List<SelectItem> bancheList = new ArrayList<SelectItem>();
         public ProvaProbReply() {
              List<SelectItem> l = new ArrayList<SelectItem>();
              l.add(new SelectItem("Cessione del quinto"));
              l.add(new SelectItem("Credito al consumo"));
              l.add(new SelectItem("Mutui"));
              canaliProc.put("Profamily", l);
              l = new ArrayList<SelectItem>();
              l.add(new SelectItem("Credito al consumo"));
              canaliProc.put("Captive", l);
              l = new ArrayList<SelectItem>();
              canaliBanche.put("Profamily", l);
              l = new ArrayList<SelectItem>();
              l.add(new SelectItem("BDL"));
              l.add(new SelectItem("BM"));
              l.add(new SelectItem("BPM"));
              l.add(new SelectItem("CRA"));
              canaliBanche.put("Captive", l);
         public String getInputRequired() {
              return inputRequired;
         public void setInputRequired(String ir) {
              inputRequired = ir;
         public String getCanale() {
              return canale;
         public void setCanale(String c) {
              canale = c;
         public String getProcedura() {
              System.out.println("\ngetProcedura called\n");
              return procedura;
         public void setProcedura(String p) {
              procedura = p;
         public String getBanca() {
              System.out.println("\ngetBanca called\n");
              return banca;
         public void setBanca(String b) {
              banca = b;
         public List<SelectItem> getProcedureList() {
              return procedureList;
         public List<SelectItem> getBancheList() {
              return bancheList;
         public String caricaProcBanche() {
              System.out.println("\nListener called\n");
              procedureList.clear();
              bancheList.clear();
              if(canale != null && !canale.equals("")) {
                   procedureList.addAll(canaliProc.get(canale));
                   bancheList.addAll(canaliBanche.get(canale));
              System.out.println("BEFORE setting:\n");
              System.out.println("\nProcedura: "+procedura+"\n");
              System.out.println("Banca: "+banca+"\n");
              procedura = null;
              banca = null;
              System.out.println("\n\n\nAFTER setting:\n");
              System.out.println("\nProcedura: "+procedura+"\n");
              System.out.println("Banca: "+banca+"\n");
              return "";
    }Edited by: 869000 on 28-giu-2011 14.05

    I'm thinking this has to do with the fact that the UIComponents use the localValue after validation fails. This prevents the values from being overwritten when re-rendering the page, i.e. the inputs keep the value set by the user.
    The solution is to manipulate the components directly during the AJAX request when the first pull down is changed. Use the binding attribute to place them into your bean and clear the value directly. That way it will not matter that the expression is not evaluated.

  • Computation after Validation -  possible?

    I there any way to set that computation is triggered after validation.
    I have status field that is set as Draft when users submit form computation changes its value to Submitted.
    The problem is that I have also few fields that should be present before form is submitted.
    What happens is that because status has been changed to submitted, my button disappears also (its condition is to show when status field is Draft only).
    Any suggestions.
    Thanks

    Any process on submit (after computations and validations) is equal to a computation on submit. Only the process point is different. There is no computation after validation.
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.opal-consulting.de/training
    http://apex.oracle.com/pls/otn/f?p=31517:1
    -------------------------------------------------------------------

  • TextInput loses focus after a collection.refresh()

    Hi!
    I have TextInputs inside AdvancedDataGridHeaderRenderers in my ADG making filters by columns.
    But everytime I press a key (and collection.refresh() is called) to make the filter, the target text input loses focus after the call to the collection.refresh() method.
    The ADG headers inputs have the same focusManager object of my parent IFocusManagerContainer, but they are inacessible by TAB (and they do not TAB to each other).
    A note: My collection.refresh() method is called from inside my ADG override of commitProperties method.
    Any ideas?
    Thanks!

    I'd first make sure you need to make a change that requires a refresh.
    There are various ways to avoid/block refresh. It will depend on your needs.
    There is an API on ICollectionView, there is making certain properties not
    bindable and there is capturing and stopImmediatePropagation on the change
    events themselves.

  • User able to execute Tcode after validity of role is over

    Dear all,
    we have given a temporary access to the transaction MR21  to the user for one day but the user was able to use this transaction after validity of role is over.  screen in SU01 shows the role is already expired to her.Is this due to bug or incomplete maintenance nodes in the role

    Hi ,
    Use SUIM make sure that the user does not have that transaction in any other role in his profiles
    second find the role which has the transaction for him .
    Delete that specific role/roles
    Then run  SUPC and PFUD if its a development box or talk to basis  if your project policy is to run this as background job.
    If all the above steps were already done then use ST01(trace) to find what is allowing the user to succeed with the transaction and disable that object.
    Cheers

  • How to have jtextfield focus enabled after window loading

    Hi
    Can I know how a JTextField can have cursor in it after the window it consists is loaded?
    Tried using the requestFocus(), but it did not work even after
    isFocusable() returned true.
    Could I get a whole piece of working code if possible, to see what interfaces my class should implement and what methods have to be overridden.
    More:
    I have a JTextArea(not editable) , JTextField and a JButton in the frame.
    Thanks
    Reddy

    hi try this code
    import javax.swing.*;
    public class exam1 extends JFrame
         public exam1()
              setSize(450,500);
              JTextField tx1= new JTextField(15);
              tx1.requestFocus();
              JPanel pnl= new JPanel();
              pnl.add(tx1);
              getContentPane().add(pnl);
         public static void main(String arg[])
              exam1 ex = new exam1();
              ex.setVisible(true);
              //ex.show();
    }Cheers
    jofin

  • Allow focus after disabling JTextField

    I have a form with several textfields. Two textfields are mutually exclusive; you can modify one or the other, but not both. Upon edit of one, I disable the other. This works perfectly. My problem is the tab order disappears upon disabling the textfield. If I edit fieldA, fieldB is appropriately disabled upon focusLost of fieldA. I can use the tab key multiple times, but focus is never set to another component on the form. How can I get around this?
    Here's the sample code:
          fieldA.addFocusListener(
                new FocusAdapter()
                   public void focusLost(FocusEvent focusEvent)
                         JTextField field = (JTextField)focusEvent.getSource();
                         // if the value was changed, disallow editing in trade field
                         String newValue = field.getText();
                         if (!newValue.equalsIgnoreCase(original))
                            fieldB.setEnabled(false);
                         // need else block in case the user changes the value, then changes it back to the original value
                         else
                            fieldB.setEnabled(true);
             );

    public void focusLost(FocusEvent e)
         if (textField2 == e.getOppositeComponent())
              textField2.transferFocus();
         textField2.setEnabled( false );
    }

  • JTextField focus

    I have a problem with the focus of a JTextField in a JApplet. Why? Here is my code:
    class MyPanel extends JPanel {
        ImageIcon imageIcon;
        Image image;
        public MyPanel(Image tiledBackgroundImage) {
            setOpaque(false);
            setLayout(new BorderLayout());
            imageIcon = new ImageIcon(tiledBackgroundImage);
            image = imageIcon.getImage();
        public void paintComponent(Graphics g) {
            for (int x = 0; x < getWidth(); x += image.getWidth(this)) {
                for (int y = 0; y < getHeight(); y += image.getHeight(this))
                    g.drawImage(image, x, y, this);
            super.paintComponent(g);
    }and in the init() method of my applet I have the following call
    setContentPane(new MyPanel(getAppletContext().getImage(new URL(getDocumentBase(), getParameter("backgroundImage")))));However, before I added this code for rendering the background image everything was working well. But after I added it, the JTextFields started to reject focus; when I click on them with the mouse I see a fast blink and then focus is lost again. Why is this so?

    Hi,
    you could use focus listener..
    void focusGained(FocusEvent e)
    void focusLost(FocusEvent e)
    or you could also check with hasFocus() which returns boolean ....
    ramesh

  • JTextField focus problems in JApplet

    I have a JApplet like this:
    public class AppletLogin extends JApplet {
    public void init() {
    this.setSize(new Dimension(400,300));
    this.getContentPane().setLayout(new FlowLayout());
    this.getContentPane().add(new JTextField(12));
    this.getContentPane().add(new JTextField(12));
    The first problem I have is that both JTextField don't show the cursor if you click in them, they also don't show selected text. If you select another window and then you select back the browser, the cursor appears.
    The second problem is that sometimes, if the cursor appears in the first JTextField and with the TAB or with the mouse you set the focus on the second JTextField, then you can't focus back to the first JTextField. This second problem disappears if you add "this.requestFocus()" in init.
    This behaviour is shown in Windows NT 4.0 and 98 with Netscape 4.7 and 6.2.
    I don't have this problem in Windows 2000 - Netscape 4.7 / 6.2 and Linux - Netscape 6.2.
    The Plugin is 1.3.1_01a and 1.3.1_02.
    I think I have the same problem explained in bug 4186928 but with a JApplet. I have tried the "dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_ACTIVATED))" workaround, using the 'SwingUtilities.getWindowAncestor(this)' Window, but it doesn't
    work.
    Any suggestions to solve the first problem? Should I submit a bug?

    Of course. Here is the original code. I have only removed 'imports' from other classes of the project used for localization and image loading.
    If you want me to translate for you the Spanish comments to English, please tell me.
    This is the code as is now. I have already tried 'requestFocus' and 'grabFocus' even inside a MouseListener attached to 'usuario' (user) and 'clave' (passwd), with no success.
    This code works fine with 1.2.2 plug-in on any OS and with 1.3.1_02 plug-in on Windows 2000 and Linux.
    But with 1.3.1_02 plug-in under Windows 98/NT4.0 and Netscape 4.7/6.2 the focus is crazy. Our customer uses Windows NT 4.0.
    This panel is for user and passwd validation. We use it attached to an JApplet. It has some methods to attach ActionListener to it. It also has a KeyListener to capture 'intro' events. Thats all.
    package project.pkg
    import java.util.TooManyListenersException;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;
    import javax.swing.border.EmptyBorder;
    // import of other.project.pkg
    // import of other.project.pkg
    import javax.swing.*;
    import java.awt.*;
      * Panel de acceso a la aplicaci�n.
      * @version  $Revision: 1.8 $
    public class PanelAcceso extends JRootPane {
       // Marca de revision. ///////////////////////////////
       private final static String VERSION = "@(#) $Id: PanelAcceso.java,v 1.8 2001/05/08 15:55:46 user Exp $";
       /** Campo usuario */
       private JTextField usuario;
       /** Campo clave */
       private JTextField clave;
       /** Panel de los controles */
       private JPanel controles;
       /** Panel auxiliar marco para controles. */
       private JPanel marco;
       /** ActionListener para notificaci�n de intro. de usuario y passwd */
       private ActionListener entrarActionListener = null;
        * Construye un panel de acceso.
       public PanelAcceso() {
         JLabel portada = new JLabel(/*HERE goes an ImageIcon*/);
         portada.setHorizontalAlignment( SwingUtilities.CENTER);
         portada.setVerticalAlignment( SwingUtilities.CENTER);
         getContentPane().setLayout( new BorderLayout());
         getContentPane().add( portada, BorderLayout.CENTER);
         getContentPane().setBackground( Color.white);
         controles = new JPanel();
         controles.setLayout(new GridLayout(4,2,5,5));
         controles.setOpaque(false);
         controles.add( new JLabel("Ver. 2.5.1"));
         controles.add(Box.createHorizontalGlue());
         controles.add(Box.createHorizontalGlue());
         controles.add(Box.createHorizontalGlue());
         controles.add( new JLabel("User") );
         usuario = new JTextField( 12);
         usuario.addKeyListener(keyListener);
         controles.add( usuario);
         controles.add( new JLabel("Passwd") );
         clave = new JPasswordField( 12);
         clave.addKeyListener(keyListener);
         controles.add( clave);
         // Panel auxiliar marco para controles.
         marco = new JPanel(new FlowLayout(FlowLayout.RIGHT));
         marco.setOpaque(false);
         marco.add(controles);
         setGlassPane(marco);
         // Listener para fijar el borde de marco seg�n cambie de
         // tama�o el panel.
         marco.addComponentListener( new ComponentAdapter() {
           public void componentResized(ComponentEvent e) {
             changeEmptyBorder();
           public void componentShown(ComponentEvent e) {
             changeEmptyBorder();
         marco.setVisible(true);
        * Devuelve el usuario introducido.
       public String getUser() {
         return usuario.getText();
        * Devuelve la contrase�a introducida.
       public String getPasswd() {
         return clave.getText();
        * Limpia el panel de acceso.
       public void limpiar() {
         clave.setText("");
         usuario.setText("");
        * A�ade un listiener a los eventos de
        * petici�n de acceso dado un usuario y
        * una contrase�a.
        * @throws TooManyListenersException si ya se ha a�adido un listener.
       public void addEntrarListener(ActionListener l) throws TooManyListenersException {
         if ((entrarActionListener != null) && (entrarActionListener != l))
           throw new TooManyListenersException("Solo se admite un listener");
         else
           entrarActionListener = l;
        * Borra un listener.
       public void removeEntrarListener(ActionListener l) {
         if (entrarActionListener == l)
           entrarActionListener = null;
         else
           throw new IllegalArgumentException("Intento de borrar un listener no a�adido");
        * Borra todos los listeners.
       public void removeEntrarListeners() {
         entrarActionListener = null;
        * Instancia privada de KeyListener para capturar
        * los 'enter' en los campos de usuario y passwd.
       private KeyListener keyListener = new KeyListener() {
          * Method to handle events for the KeyListener interface.
          * @param e KeyEvent
         public void keyPressed(KeyEvent e) {
           if (e.getKeyCode() != KeyEvent.VK_ENTER)
             return;
           if ((e.getSource() == usuario) )
             clave.requestFocus();
           else {
             requestFocus(); // Se evitan varias pulsaciones seguidas.
             if (entrarActionListener != null)
               entrarActionListener.actionPerformed(new ActionEvent(this, 0, ConstantesXigus.ACCION_ENTRAR));
         /** Method to handle events for the KeyListener interface. */
         public void keyReleased(KeyEvent e) {}
         /** Method to handle events for the KeyListener interface. */
         public void keyTyped(KeyEvent e) {}
        * Ajusta el borde del marco de controles para que aparezcan centrados.
       private void changeEmptyBorder() {
         Dimension dimMarco   = marco.getSize();
         Dimension dimInterno = controles.getPreferredSize();
         int altoBorde  = dimMarco.height - dimInterno.height;
         int anchoBorde = (dimMarco.width - dimInterno.width)/2;
         marco.setBorder( new EmptyBorder( (int)(altoBorde * 0.75), anchoBorde, (int)(altoBorde * 0.25), anchoBorde));
    }Thank you very much for your help

  • Focus after Setting a Form Value within the Validate Event ( =8.8)

    Hi
    Setting Values within Validate Event sets Focus incorrectly on SAP >= 8.8
    The following  example works fine  on SAP 2007.
    Why i don't like this behaviour
      -I didn't found an easy workaround to fix it
      -SetMatrixCellWithoutValidation has the right behaviour but only works with Userdefined - Columns
      -It's a quite common usecase to validate something and in the same step set some values after successful validating (or cancel the input by using BubbleEvent = False)
      -It just worked for 6 years now
      -I have developed around 20+ AddOns and i'm running into this Regression Issue more and more.
    But maybe i'm just missing something.
    So how would you solve the following code now with Versions >= 8.8 ?
    Thanks for any enlightment!
    private void SBO_Application_ItemEvent(string FormUID, ref SAPbouiCOM.ItemEvent pVal, out bool BubbleEvent)
                BubbleEvent = true;
                // 11.08.2011 knp
                // use case is for example setting the price according a custom price table
                // it's triggered by the item column in the sales order matrix and sets the unit price
                // Expected: Focus is on the column after "Item" column
                // Result:   Focus is on column after the "Unit Price" column
    validation
                if (pVal.InnerEvent == false)
                    if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_VALIDATE)
                        if ((pVal.FormTypeEx == "139"))
                            if (pVal.BeforeAction == true)
                                if (pVal.ItemUID == "38")
                                    if (pVal.ColUID == "1") // item code
                                        SAPbouiCOM.Matrix oMtx = (SAPbouiCOM.Matrix)SBO_Application.Forms.Item(pVal.FormUID).Items.Item("38").Specific;
                                        SAPbouiCOM.EditText oEd = (SAPbouiCOM.EditText)oMtx.Columns.Item("14").Cells.Item(pVal.Row).Specific;
                                        oEd.Value = "2";

    Hi
    Try this
    private void SBO_Application_ItemEvent(string FormUID, ref SAPbouiCOM.ItemEvent pVal, out bool BubbleEvent)
                BubbleEvent = true;
                // 11.08.2011 knp
                // use case is for example setting the price according a custom price table
                // it's triggered by the item column in the sales order matrix and sets the unit price
                // Expected: Focus is on the column after "Item" column
                // Result:   Focus is on column after the "Unit Price" column
    validation
                if (pVal.InnerEvent == false)
                    if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_VALIDATE)
                        if ((pVal.FormTypeEx == "139"))
                            if (pVal.BeforeAction == true)
                                if (pVal.ItemUID == "38")
                                    if (pVal.ColUID == "1") // item code
                                        SAPbouiCOM.Matrix oMtx = (SAPbouiCOM.Matrix)SBO_Application.Forms.Item(pVal.FormUID).Items.Item("38").Specific;
                                        SAPbouiCOM.EditText oEd = (SAPbouiCOM.EditText)oMtx.Columns.Item("14").Cells.Item(pVal.Row).Specific;
                                        oEd.Value = "2";
                                        oMtx.Columns.Item("1").Cells.Item(pVal.Row).Click(SAPbouiCOM.BoCellClickType.ct_Regular, 0);
    Regards
    Arun

Maybe you are looking for