Underlining a digit in jFormatted Text Field

Let me rephrase a question a I asked yesterday now that I've learned more..
I want to allow the user to click on a digit in a FormattedTextField and have that digit underlined. (buttons then inc or dec the digit value). I tried changing the default Caret to do this. It does create an underline, but I realize now when you click in the field it finds the closest space between characters, not the closest character. So the cursor will go to different places if you click on the right verses the left half of a digit. Can I modify this behavoir or should I be using something else?
I am new at Java, so I could be missing something very basic.

Using my example code above I overrode the following method of the DefaultCaret and it seems to work:
* Tries to set the position of the caret from
* the coordinates of a mouse event, using viewToModel().
* @param e the mouse event
protected void positionCaret(MouseEvent e)
     JTextComponent component = (JTextComponent)e.getComponent();
     Point pt = new Point(e.getX(), e.getY());
     Position.Bias[] biasRet = new Position.Bias[1];
     int pos = component.getUI().viewToModel(component, pt, biasRet);
     try
          Rectangle view = component.modelToView( pos );
          if (view.x > e.getX())
               pos--;
               view = component.modelToView( pos );
          MouseEvent me = new MouseEvent(
               e.getComponent(),
               e.getID(),
               e.getWhen(),
               e.getModifiers(),
               view.x,
               e.getY(),
               e.getClickCount(),
               e.isPopupTrigger());
          super.positionCaret( me );
     catch(Exception ble)
          super.positionCaret( e );
}The code is based on your concept of comparing the proposed caret position with the mouse clicked position. When the caret position is greater than the mouse we move the caret back one position.

Similar Messages

  • Trying to underline the rectangle of a Text Field

    I am trying to underline the rectangle of a Text Field with a Line Annotation, but I am a little confused.
    The first doubt is about the "Square" vs, the "Rectangle" annotations. What is the difference between them? Has Adobe changed those recently?
    I have tried several variations of the following snippet:
        var x1 = textField.rect[0];
        var y1 = textField.rect[1];
        var x2 = textField.rect[2];
        var y2 = textField.rect[3];
        var underscore = this.addAnnot({
            page: 0,
            type: "Line",
            rect: [x1, y1, x2, y1],
            strokeColor: color.red,
            strokeWidth: 160
    What I am getting is an identity line (i.e., 45-degree) at the lower left corner.
    -Ramon

    Thanks for your reply, try67:
    Could you -or anybody else- please clarify this:
    "The square rect defines top-left-x, top-left-y, bottom-left-x and bottom-left-y.
    For a line it's left-x, left-y, right-x, right-y."
    According to such definition, the square rect does not contain any information about the right side?
    Maybe what you meant to write is:
    "The square rect defines:
    top-left-x, top-left-y, bottom-right-x and bottom-right-y.
    For a line it is
    left-x, left-y, right-x, right-y."
    If that's the case, a rect of zero height is the same thing as a horizontal line. That was my assumption, but I am getting a 45-degree line through the origin.
    TIA,
    -Ramon

  • End user have ability to change font style in text field of interactive pdf form?

    Does the end user of an interactive pdf form able to change the font style, i.e.: make something bold or underline a word in a text field?
    I am making a form with text fields and the end user would like the ability to make something bold or underline it.. I do not see anywhere in acrobat that allows styles to be changed.
    I have created the form in Indesign > saved it as an interactive pdf and brought it into Acrobat.

    Thank you for the quick response! Do you set this in Indesign before exporting or do you set this in Acrobat? I am in Acrobat 10.1.10 and when I go to properties it doesn't give me  'options' to choose from.

  • Disallow non digit input in a text field?

    Is there a class method in Java SDK to do this easily like in Visual Basic or has it to be coded completely manually?
    If the user presses a non digit character then that character should not be printed into the text field.

    K this is easy!
    I have a class:
    import java.awt.event.*;
    public class AlphaNumConsumer extends KeyAdapter
    //this class is used to consume any alpha letters     
         public void keyTyped(KeyEvent ent)
              char ch = ent.getKeyChar();
              if('0' < ch && ch > '9')
                   ent.consume();
    and all you do when you declare the textfield anywhere else you do the following:
    JTextField field = new JTextField();
    AlphaNumConsumer kCon = new AlphaNumConsumer();
    field.addKeyListener(kCon);
    this will consume and Alpha numeric characters!
    Gluck!!

  • Making some words Bold/Underlined of an editable text field in Adobe Form?

    I have a a requirement of making some words Bold/Underlined of an editable text field in Adobe Form. I have created a "Text Field" and in "Value" tab as default value I have written the textline and made the field Type as "User entered - optional" so that at runtime user can edit that text. Now they want some words of the whole text line should display as Bold and some as Underlined. Can you please help me to meet this requirement.
    Moderator message: please have a look in the dedicated forum for "Adobe Interactive Forms".
    Edited by: Thomas Zloch on Feb 15, 2011 5:47 PM

    Just an idea, but you might try re-printing that original PDF file to the Adobe PDF printer (saving it as another pdf file, essentially). Then try again to add form fields. (You can copy the form fields you've already created and paste them onto the new file -- just copy and paste while in forms edit mode). A second shot in the dark if the first doesn't work might be to try again, but change the print settings when printing to PDF. I've ready some reports that the dpi setting can have an effect. Maybe go from 600 to 150 and see if that works. Let me know which, if either, of these ideas works.
    -Joe

  • Limit the amount of characters of a text field based on first digit

    Hello and thanks in advance for your help!
    I would like to limit the amount of characters of the text field based on the first digit of the number (the text field is only limited to a number format...no decimals, no commas).
    For example, if the number begins with a 3, I would like to limit the text field to allow only ten characters. I have three scenarios but if I could get started with some code and what is the best place to add it (keystroke or validation?) I can take it from there. Thanks again for your help!!

    I've written this code for you that does that. Use it as the field's custom Keystroke code:
    // Validate that only digits are entered
    if (event.change) {
        event.rc = /^\d+$/.test(event.change);
    // Validate string length if it starts with 3
    if (/^3/.test(AFMergeChange(event))) {
        event.rc = AFMergeChange(event).length <= 10;
        if (!event.rc) app.alert("If the number starts with \"3\" it may not be longer than 10 digits.",1); // optional error message
    You can duplicate the second part of it for additional conditions, but keep in mind that this code won't even let you remove the first character in the field if the result is an invalid one.
    For example, if you enter "234567890123456" then you can't remove the "2" at the start because that would result in an invalid number. You can remove any of the other digits, though, and when it's 10 digits or less then you could remove the starting "2" as well.

  • Text Field w/Indent Underline Issue

    Hello,
    I have a text field in the report which indents dynamically; this field is underlined. I need the underline to start where the text starts; if the text is indented, the underline has to be indented too. Unfortunately the underline starts where the field starts, not where the text starts. How do i fix this?
    Thank you,
    Tanya.

    Hi Tanya, 
    How are you doing your indent?  Spaces are characters and the underline will show for them.  I tried creating a formula with a tab to indent and I got the same results. 
    Chr(9) & {table.FIELD};
    If your text is multi-lined, you can try creating 2 formulas.  1 will be for the first line and the second would be for the rest of the text. 
    {table.FIELD} [1 to 50];
    {table.FIELD} [51 to Length ({table.FIELD})];
    When you place the first formula on the report, push it in to make it appear indented.  The second formula would go directly below the first one. 
    Good luck,
    Brian

  • Permanently save line spacing in a multi-line text field

    Me: Adobe Acrobat 8 Pro, Windows Vista
    (I think the people who will be using the form have Reader 7 on Windows)
    I work in a doctors' clinic, and we use phone message sheets to document conversations between the patients/us/nurses/doctors, and I scanned the form and made it into a fillable PDF for our secretaries to fill out more quickly. The "message" area has pre-printed lines on it, and the multi-line text field I placed there needs to match up to the lines. I used the Rich Text Formatting options to set it to "Exactly 24 Points," but I can't get it to KEEP the formatting permanently. The only way I could get it to save the formatting in that field was to put a space in it and then save it, and then give that to the 2 phone secretaries. It works perfectly the first time, but instead of just closing/re-opening the file to start a new message, one of the secretaries highlights everything in the "message" field and deletes it... which deletes the line spacing formatting. I've told her
    b numerous
    times to leave that starting space in the field, but she "forgets" so all of her messages look messed up. So is there a way to force that line spacing
    b PERMANENTLY
    ???? Here's a shrunken screenshot of the field -- I wish I could just erase the lines altogether so the spacing wouldn't matter, but the secretaries type/print the message out, then the nurses/docs write on the page with pen so the lines have to stay. http://img187.imageshack.us/my.php?image=notepreviewph8.jpg
    Thanks!

    You can set the font size of the text. Then play with the underlines in the original document to match the needs of the font that is used. Print to a new PDF and then use replace pages to put the new page into the form without changing the form fields. I was able to do this with a word processing document by adding underlining in the document with 12 pt and setting the font to 12 pt in the text field. You can play with the font, the border of the field, and the underlining in the original document to get the desired result. Is this optimal, probably not. However it does the job.

  • How can I validate numeric values in a text field?

    Hi
    Once more I have a problem.
    I have a field in which the user should enter 10 digits in the pattern 999999-9999. The field must only contain numeric data and must be exactly 10 characters. I have a validation script on the print button, that prevent printing if required fields are empty or not properly filled out.
    I have tried two ways to work this out, and I'm not satisfied with any of them, as I can still print despite of validation scripts and warning messages.
    1.
    I set the field to numeric, limited to 11 characters.
    Display pattern num{999999-9999}, edit pattern num{999999-9999} and validation pattern num{999999-9999}
    Problems using this solution: When I type 11 digits in the field (ex.12345612345) I get a warning message and 12.345.612.
    But when I type 9 digts (ex. 123456-123 or 123456123) I get no warning message and 000000-0000 or 012345-6123
    If I type alphabetical characters (ex. 123456-abcd) I get no warning message and 000000-0000.
    2.
    I set the field to text field, limited to 11 characters.
    Display pattern text{999999-9999}, edit pattern text{999999-9999} and validation pattern text{999999-9999}
    Now when I type 11 digits in the field (ex.12345612345) I get no warning message and 12345612345.
    When I type 9 digts (ex. 123456-123) I get no warning message and 123456-123
    When I type 9 digts (ex. 123456123) I get a warning message and 123456123
    If I type alphabetical characters (ex. 123456-abcd) I get a warning message and 123456-abcd.
    It works slightly better as a text field, but I am not satisfied at all.
    Has anyone a solution to this?
    Additional I would also like the hyphen to emerge automatically when typing.
    K

    I just want to summarize my experience.
    I found a related discussion here: http://forums.adobe.com/message/2513720#2513720.
    Putting the pieces together I came up with this solution.
    form1.subform.TextField1::exit - (JavaScript, client)
    var      
    myRegex = /\d{6}\-\d{4}/;
    var   
    singleDigits = [0,1,2,3,4,5,6,7,8,9]; // array for single digit check
    if   
    (this.rawValue != null || this.rawValue != ''){ // only if the field has a value...
         if (!this.rawValue.match(myRegex)){ // and it doesnt match the pattern (i.e. 2 digits)
         this.rawValue 
    = ''; // clear the field
         xfa.host.setFocus( 
    this); // set focus back to the field
         xfa.host.messageBox('Error: Pattern Conflict. Please use the pattern 999999-9999.'); 
    // enter any message you wish here
    Kirstine

  • How can I do field validation on the last two characters of a text field?

    I have a text field. The user is required to enter the last two characters as numbers. I want to apply validation on this field. How can i achieve the same?
    EX: If the user enter ABCDE, an error messgae stating the last two digit should be numeric.
    I tried using the below in the field validation which did not work.
    (0+Right([<ExternalSystemId>],2)) > 0 AND (0+Right([<ExternalSystemId>],2)) < 99.
    Any ideas would help?

    Try this-
    FindOneOf(Right([<Field1>],"2"),"abcdefghijklmnopqrstuvwxyz")=0
    rgds,
    Amit

  • How do I clear a form text field during validation using JavaScript?

    I am just learning JavaScript and the Acrobat API.  I have a form created in adobe acrobat 9 standard (starting from an existing form in MS Excel).  There is a text field for a Social Security Number.  I have a custom format script and keystroke script and a custom validation script. I would like to add to the existing validation script, that if what is entered doesn't match the validation test, then clear out the field as in erase all the characters that were typed into the field.  I want this to happen no matter what.  So even if someone filled in a valid SSN number and then moved to the next field, but then went back to the SSN field and decided to change their entry and this new entry was "invalid" then clear out the field (do not revert to what was typed in the field originally, even though it was considered valid by the script).  (There is currently no default value for this field.)  Thank you inadvance for you help on this.
    Here is the current validation script:
    // only run when field not blank
    if (event.value != "")
    // RegExp for validation #########
    var re = /^(\d{3})(\d{2})(\d{4})$/
    if(re.test(event.value) == false)
    app.alert("Enter a 9-digit Social Security number with no spaces or special characters (e.g., 555555555). It will be converted to the format 555-55-5555.")
         //Here is where I've tried adding all of these lines, but none of them will clear out what is in the field
              //this.resetForm([event.target.name]);
              //event.target.value == "";
              //getField("SSN 1").value = getField("SSN 1").defaultValue;
              //getField("SSN 1").value == "";
              //event.rc = false;
    And incase these are somehow affecting it, here are the other scripts being processed on this field:
    Keystroke script:
    var input=event.value;
    var chars=input.length;
    if( event.willCommit || chars==8 )this.getField("Name 1").setFocus();
    Format script:
    var re = /^(\d{3})(\d{2})(\d{4})$/
    if(re.test(event.value) == true)
    // add "-"
    event.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;

    Thank you very much.  I did try that before, but I was using event.value == "";  I guess in this case I'm assigning the value of "", not making the value equal "".

  • Using a rich text editor to style a Flash text field

    I've been trying to build a user interface that would allow someone to change the content of a dynamic field (loaded from a text file) using a rich text editor. However the editor inserts inline css style tags like <span style="text-decoration: underline;"> which Flash aparently can't understand. If the editor were instead to insert the following: <span class="ul"> where the stylesheet defined it as:
    .ul {
    text-decoration: underline;
    display: inline;
    then everything would be fine. But it doesn't and I can't change it.
    I am currently using a rich text editor that I access as follows:
    var myEditor1 = new YAHOO.widget.SimpleEditor('editText', {
        height: '600px',
        width: '700px',
        dompath: true, //Turns on the bar at the bottom
        handleSubmit: true
    The editor above is "applied" to a textarea within an html form. Then the text is saved to a text field with the embeded styles.
    Any ideas on how I handle this so the user doesn't have to insert css rules by hand?
    thanks much

    Does anyone know of a richtext editor that uses just html tags (not css like <span style="text-decoration: underline;">) or that uses css styling that Flash as3 can understand?

  • How to copy paste a table structure from word document into Text Field [field format Rich Text]

    In our current implementation we have a Blank page with Text Field [field format Rich Text] on generated PDF Document.
    Once the PDF document is generated, user can copy paste content form any word/rtf document to into the Text Field.
    Pasted content retains all text formatting [Bold, Italic, Underline, Indentation] except the Table format. Text Field is removing table metadata from the content and converting it into plant text.
    Is there anyway to copy paste table structure as it is from word document into Text Field?

    Hi,
    I don't think you can! While you can paste formatted text into the rich text field, the table metadata means nothing to the textfield.
    Niall

  • Adobe LiveCycle Designer 8 - Add days to Current Date in another text field

    Hi-
    I am working on an expense report. I have six fields, CurrentDate, and countDate1 through countDate5. The CurrentDate is a Time/Date field which the user can select whatever date is needed with the drop down calendar. The other five countDate fields are "text" fields which will represent Monday through Friday. I would like to add zero days to whatever the user selects as the CurrentDate and make that appear in countDate1 which represents Monday(the CurrentDate the user selects will always be a Monday), add one day to whatever the user selects as the CurrentDate and make that appear in countDate2 which represents Tuesday...and so on. I realize this is probably basic for someone familiar with FormCalc but I'm very new at this.
    This got me very close but I want the user to select the date and not have the CurrentDate already filled in.
    CurrentDate - DateTime field, FormCalc calculation script:
    num2date(Date())
    Date1 - Text field, FormCalc calculation script:
    Num2Date( Date2Num(CurrentDate.formattedValue))
    Date2 - Text field, FormCalc calculation script:
    Num2Date( Date2Num(CurrentDate.formattedValue) + 1 )
    Thanks!
    Brian

    Here is an exmaple of adding days the script is used in the "exit" event for the date select field that has display format of "MM/DD/YYYY". Adding days requires add x number of days to the days since the epoch date for the current date, adding months or years one needs to manipulate the string parts of the date.
    ----- form1.#subform[0].InputDateField::exit: - (FormCalc, client) ---------------------------------
    // fomatted string for selected date
    var sFmtDateValue = $.formattedValue
    var sMsg = Concat("Entered date formatted: ", sFmtDateValue) // build message string
    sMsg = Concat(sMsg, "\u000a" ) // add new line to message
    // convert date string to days since epoch date - format is important
    var fDaysPast = Date2Num(sFmtDateValue, "MM/DD/YYYY")
    // add 7 days to days past epoch date
    var f7DaysPlus = fDaysPast + 7 // add 7 days
    var s7DaysPlus = Num2Date(f7DaysPlus, "MMM DD, YYYY") // format string for 7 days plus
    sMsg = Concat(sMsg, "\u000a", "Plus 7 Days: ", s7DaysPlus) // build message string
    // add 14 days to days past epoch date
    var f14DaysPlus = fDaysPast + 14 // add 7 days
    var s14DaysPlus = Num2Date(f14DaysPlus, "MMMM DD, YYYY") // format string for 7 days plus
    sMsg = Concat(sMsg, "\u000a", "Plus 14 Days: ", s14DaysPlus) // build message string
    // display results
    // work on months
    // get parts of date past epoch date
    var sFullYear = Num2Date(fDaysPast, "YYYY") // get 4 digit year form days past epoch date
    var sMonth = Num2Date(fDaysPast, "MM") // get month form days past epoch date as number
    var sDate = Num2Date(fDaysPast, "DD") // get date form days past epoch date as a number
    var s2Month = Sum(sMonth, 2) // add 2 months
    var s2FullYear = sFullYear
    // if more than 12 months in new date adjust year on number of months
    if (s2Month > "12") then
    s2FullYear = Sum(s2FullYear, + 1) // increment year
    s2Month = Sum(s2Month, - 12) // adjsut months
    endif
    var s2MonthsAdded = Concat(s2Month, "/", sDate, "/", s2FullYear) // date string
    sMsg = Concat(sMsg, "\u000a", "Added 2 months: ", s2MonthsAdded) // display stringxfa.host.messageBox(sMsg, "Sample Adding Days" ,3, 0);
    var s5Month = Sum(sMonth, 5) // add 5 months
    var s5FullYear = sFullYear
    // if more than 12 months in new date adjust year on number of months
    if (s5Month > "12") then
    s5FullYear = Sum(s5FullYear, + 1) // increment year
    s5Month = Sum(s5Month, - 12) // adjsut months
    endif
    var s5MonthsAdded = Concat(s5Month, "/", sDate, "/", s5FullYear) //build Date string
    sMsg = Concat(sMsg, "\u000a", "Added 5 months: ", s5MonthsAdded) // display stringxfa.host.messageBox(sMsg, "Sample Adding Days" ,3, 0);
    // display results
    xfa.host.messageBox(sMsg, "Sample Adding Days and Months" ,3, 0);

  • How to calculate the size of a Text Field?

    Is there a way to calculate the number of characters allow in a Text Field? If a uer type over this number of characters a popup window will appear telling the user that he/she has too much texts. Of course I could use the Limit Length, but I have to manually put texts into this text field and count them. If the Limit Lenth number is too small, the texts does not fill the whole text field. If the number is too big then the texts does not get printed.

    There would be no easy way to do this. You'd need to do some pretty fancy calculations, it would all depend on the size of the field, what font is used, the font size, whether it's been bolded, underlined, italicized, etc etc.
    What are you trying to accomplish? Make it so that the user can type in the text field until it fills and then have it stop without scroll bars coming up to allow him to keep typing?
    Chris
    Adobe Enterprise Developer Support

Maybe you are looking for