Problem matching JTextField input to an item in a JList box

Hello,
I am trying to read the user's input in a text field and take the user to a match in a list box located underneath the textfield. To do that I have implemented the following code:
m_pathwayNameTextField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
m_pathwayNameTextField_KeyTyped(e);
private void m_pathwayNameTextField_KeyTyped(KeyEvent e) {
if (e.getID() == KeyEvent.KEY_TYPED) {
String prefix = m_pathwayNameTextField.getText();
char c = e.getKeyChar();
if (e.getKeyChar() >= KeyEvent.VK_SPACE && e.getKeyCode() < 127) {
prefix = prefix + e.getKeyChar();
int position = m_pathwayNamesList.getNextMatch(prefix, 0,
Position.Bias.Forward);
if (position != -1) {
m_pathwayNamesList.ensureIndexIsVisible(position);
Although the above kind of works, it still has some problems. The first is that if I press a "backspace" character, it won't try to match any results. Also, if I highlight the whole text in the textfield and press a letter, it won't attempt to match either. The reason for the later is that the textfield at that time is not blank and so prefix becomes the textfield plus the newly entered letter, whereas it should be the newly entered letter.
Any help on this is highly appreciated.
Thanks.

The best way to do this is to use a DocumentListener instead of a KeyListener. When the DocumentEvent is fired the document has already been updated and you can just use getText() to get the contents of the Document. No need to play around with backspace characters.

Similar Messages

  • LSMW - Direct Input - Sales order - item text

    Hi,
    I'm having a problem similar to the problem posted by Laurent Guilloteau on 2/3/2006 titled:
    LSMW - Direct Input - Sales order - item texts
    While this thread shows the issue as being answered, I'm not clear on what action to take.
    I'm using an LSMW with program RVINVB10 to load sales orders to SAP.
    I'm successfully loading the orders, including header level text, however the item text is not showing on the order.
    I have source structures defined as follows:
    Source Structures
           REC1                     VBAK - Header
               REC4                     VBPA - Order Partners
               REC6                     BTEXHKOM - Header Text Header
                   REC7                     BTEXLKOM - Header Text Lines
               REC2                     VBAP - Order Items
                   REC8                     BTEXHKOM - Item Text Header
                       REC9                     BTEXLKOM - Item Text Lines
                   REC3                     VBEP - Order Schedule Lines
    In actions 'Read Data' and 'Convert Data', I see text for the two text structures, at the header and item level. But after execution of Direct Input program, I don't see text in at the item level of the sales order, however I do see text at the header level.
    Does anyone have any insight on what's causing the item level text not to show on the order?
    Best regards,
    Stuart

    Hi all,
    Many thanks for the suggestions.  One of our expert developers got involved and provided the solution.
    In order to have item level text populate, the VBAP-PSTYV  (the sales document item category) field also needs to be populated.  The VBAP-PSTYV field value is dependent on the sales document type.  (Or, at least it is for the configuartion set up in my example)  The sales document type is VBAK-AUART.
    Stuart

  • JTextField input check (errorDialog if invalid) & JComboBox Focus

    I have a JTextfield which does an input check when the JTextField focus listener's focusLost method is called.
    If I loose focus by clicking in on a JComboBox. The check gets done ok and focus is returned appropriately to the JTextField without any problems.
    But if I try to show an errorDialog when the input is incorrect, the focus is returned to the JTextField without any problems, but the JComboBox remains highlighted as though it is still selected!
    I am using sdk 1.4... on a linux box. does anyone know why this happens? and can anyone provide a clean solution to this?
    Thanx,
    Diego Paloschi.

    Hello Kleopatra,
    Here's a little demo:
    import javax.swing.*;
    import javax.swing.event.*;
    public class Debug extends JPanel
    private JTextField t1;
    private JComboBox c1;
    private T1Verifier t1Verifier;
    public void init()
         t1 = new JTextField("20", 10);
         t1.setInputVerifier(new T1Verifier(this));
         String[] s = {"v1","v2","v3"};
         c1 = new JComboBox(s);
         add(t1);
         add(c1);
    public static void main(String s[])
         Debug d = new Debug();
         d.init();
         JFrame f = new JFrame("Debug");
         f.getContentPane().add(d);
         f.setSize(300,300);
         f.setVisible(true);
    class T1Verifier extends InputVerifier
    private Debug debug;
    public T1Verifier(Debug debug)
         this.debug = debug;
    public boolean verify(JComponent input)
         JTextField tf = (JTextField) input;
         float value = Float.parseFloat(tf.getText());
         boolean inRange = (value >= 0) && ( value <= 10);
         return inRange;
    public boolean shouldYieldFocus(JComponent input)
         boolean valid = super.shouldYieldFocus(input);
         JTextField tf = (JTextField) input;
         if ( !valid ) {
         tf.requestFocus();
         JOptionPane d = new JOptionPane();
         d.showMessageDialog(debug, "Out Of Range.", "ERROR" , JOptionPane.ERROR_MESSAGE);
         return valid;
    Even if u comment out the JOptionPane and just make the inputverifier return control to the textfield it still doesn't work! What am I missing? Or how would u doi it?

  • Memory problem with JTextFields

    Hello,
    I have a wierd problem with JTextField and the memory.
    I need to fill a JPanel with different Components (including JTextFields), then do some calculation, remove the Components and filling the JPanel again.
    When i so this too often my i get an OutOfMemory Exception. I narrowed to problem down and wrote a small sample program to demonstrate the problem.
    When i call the method doIT (where the Panel is repeatedly filled) from the main-function everything works fine, but when it is called as a result from the GUI-Button-Event the memory for the JTextFields is not freed (even the call of the Garbage collector changes nothing)
    When i only use JButtons to fill the Panel everything works fine.
    Has anyone an idea why this problem occurs and how i can work around it?
    [Edit] I tested it whith java 1.5.0_06, 1.5.0_11, 1.6.0_02
    Thanks
    Marc
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.lang.management.ManagementFactory;
    import java.lang.management.MemoryUsage;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    public class MemoryTestDLG extends JDialog {
         public MemoryTestDLG(Frame owner) {
              // create Dialog with one Button that calls the testMethod
              super(owner);
              JButton b = new JButton("doIT ...");
              b.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e) {
                        doIT();
                        setVisible(false);
              getContentPane().add(b);
              pack();
         public void doIT() {
              // Testmethod that fills a JPanel 20 times with Components and clears it
              // again
              JPanel p = new JPanel();
              long memUse1 = 0;
              long memUse2 = 0;
              long memUseTemp = 0;
              for (int count = 0; count < 20; count++) {
                   // Clear the panel
                   p.removeAll();
                   // Get memory usage before the task
                   Runtime.getRuntime().gc();
                   memUse1 = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage()
                             .getUsed();
                   // Fill Panel with components
                   for (int i = 0; i < 200; i++) {
                        // The Buttons seem to be released without any problem
                        p.add(new JButton("test" + Math.random()));
                        // JTextFields are not released when used from the dialog.
                        p.add(new JTextField("test " + Math.random()));
                   // get memory usage after the task
                   Runtime.getRuntime().gc();
                   memUseTemp = memUse2;
                   memUse2 = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage()
                             .getUsed();
                   // print Memory results
                   System.out.println("Memory Usage: " + f(memUse1) + "   ->"
                             + f(memUse2) + " [ Used:" + f(memUse2 - memUse1)
                             + " ] [ Freed: " + f(memUseTemp - memUse1) + "]");
         public String f(long m) // formats the output
              String s = "" + m;
              while (s.length() < 8)
                   s = " " + s;
              return s;
         public static void main(String[] args) {
              MemoryTestDLG d = new MemoryTestDLG(null);
              System.out
                        .println("------------------ Direct Call (all is OK) -------------------");
              d.doIT(); // Memory is freed with every call to JPanel.removeAll()
              System.out
                        .println("------------ Call from Dialog (memory is not freed) -------------");
              // The Memory keeps blocked
              d.setModal(true);
              d.setVisible(true);
              System.exit(0);
    }Message was edited by:
    marcvomorc

    Thank you for your answer,
    In this sample the programm does not run out of memory. But when you look at the output you see, that in the first run (direct call) the memory ist freed immediately when tha panel is cleared but in the second run (from the Button) the memory usage is getting bigger and bigger. Wenn you change the number of components to 2000 (4000)
    // Fill Panel with components
            for (int i = 0; i < 2000; i++) {
                // The Buttons seem to be released without any problem
    //... ...and use the default memory settings (69mb heap) the programm runns out of memory.
    I get the following output:
    ------------------ Direct Call (all is OK) -------------------
    Memory Usage:   445504   -> 8121016 [ Used: 7675512 ] [ Freed:  -445504]
    Memory Usage:   617352   -> 8114336 [ Used: 7496984 ] [ Freed:  7503664]
    Memory Usage:   810488   -> 8491768 [ Used: 7681280 ] [ Freed:  7303848]
    Memory Usage:   943704   -> 8114976 [ Used: 7171272 ] [ Freed:  7548064]
    Memory Usage:   836760   -> 8505072 [ Used: 7668312 ] [ Freed:  7278216]
    Memory Usage:   978352   -> 8114784 [ Used: 7136432 ] [ Freed:  7526720]
    Memory Usage:   835552   -> 8498288 [ Used: 7662736 ] [ Freed:  7279232]
    Memory Usage:   977096   -> 8114312 [ Used: 7137216 ] [ Freed:  7521192]
    Memory Usage:   835640   -> 8498376 [ Used: 7662736 ] [ Freed:  7278672]
    Memory Usage:   977296   -> 8115000 [ Used: 7137704 ] [ Freed:  7521080]
    Memory Usage:   835392   -> 8504872 [ Used: 7669480 ] [ Freed:  7279608]
    Memory Usage:   976968   -> 8115192 [ Used: 7138224 ] [ Freed:  7527904]
    Memory Usage:   836224   -> 8501624 [ Used: 7665400 ] [ Freed:  7278968]
    Memory Usage:   977840   -> 8115120 [ Used: 7137280 ] [ Freed:  7523784]
    Memory Usage:   835664   -> 8498256 [ Used: 7662592 ] [ Freed:  7279456]
    Memory Usage:   976856   -> 8114384 [ Used: 7137528 ] [ Freed:  7521400]
    Memory Usage:   835784   -> 8502848 [ Used: 7667064 ] [ Freed:  7278600]
    Memory Usage:   977360   -> 8114592 [ Used: 7137232 ] [ Freed:  7525488]
    Memory Usage:   835496   -> 8502720 [ Used: 7667224 ] [ Freed:  7279096]
    Memory Usage:   976440   -> 8115128 [ Used: 7138688 ] [ Freed:  7526280]
    ------------ Call from Dialog (memory is not freed) -------------
    Memory Usage:   866504   -> 8784320 [ Used: 7917816 ] [ Freed:  -866504]
    Memory Usage:  7480760   ->14631152 [ Used: 7150392 ] [ Freed:  1303560]
    Memory Usage: 14245264   ->22127104 [ Used: 7881840 ] [ Freed:   385888]
    Memory Usage: 19302896   ->27190744 [ Used: 7887848 ] [ Freed:  2824208]
    Memory Usage: 27190744   ->35073944 [ Used: 7883200 ] [ Freed:        0]
    Memory Usage: 31856624   ->39740176 [ Used: 7883552 ] [ Freed:  3217320]
    Memory Usage: 39740176   ->47623040 [ Used: 7882864 ] [ Freed:        0]
    Memory Usage: 44410480   ->52293864 [ Used: 7883384 ] [ Freed:  3212560]
    Memory Usage: 52293864   ->58569304 [ Used: 6275440 ] [ Freed:        0]
    Memory Usage: 58569304   ->64846400 [ Used: 6277096 ] [ Freed:        0]
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap spacewhen I outcomment the adding of the JButtons the amount of freed memory is 0 in the second run. So my guess is, that there is a problem with freeing the memory for the JTextFields.
    Memory Usage:   447832   -> 6509960 [ Used: 6062128 ] [ Freed:  6332768]
    Memory Usage:   722776   -> 6785632 [ Used: 6062856 ] [ Freed:  5787184]
    ------------ Call from Dialog (memory is not freed) -------------
    Memory Usage:   468880   -> 6770240 [ Used: 6301360 ] [ Freed:  -468880]
    Memory Usage:  6770240   ->13016264 [ Used: 6246024 ] [ Freed:        0]
    Memory Usage: 13016264   ->19297080 [ Used: 6280816 ] [ Freed:        0]
    Memory Usage: 19297080   ->25570152 [ Used: 6273072 ] [ Freed:        0]
    Memory Usage: 25570152   ->31849160 [ Used: 6279008 ] [ Freed:        0]
    Memory Usage: 31849160   ->38124368 [ Used: 6275208 ] [ Freed:        0]
    Memory Usage: 38124368   ->44402072 [ Used: 6277704 ] [ Freed:        0]
    Memory Usage: 44402072   ->50677928 [ Used: 6275856 ] [ Freed:        0]
    Memory Usage: 50677928   ->56955880 [ Used: 6277952 ] [ Freed:        0]
    Memory Usage: 56955880   ->63232152 [ Used: 6276272 ] [ Freed:        0]
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap spaceAdditionally the JPanel I am using is not displayed on the screen. It stays invisible the whole time, but i cannot work around that, because the calculation is depending on the values being in components on the JPanel)
    Marc

  • Disabling the Qty field for Input for Sub items in Sales Order and Delivery

    Hi..
    I have a requirement, where by we need to disable the qty field vbap-kwmeng for input for sub items of the BOM.
    I am planning to use the user exit USEREXIT_FIELD_MODIFICATION...in the include MV45AFZZ for sales orders.
    But i need to disable the input only after the BOM Explosion and item category determination in the sales order.
    Can i Use the same exit ?? what additional conditions i need to take into account.
    also we need to disable the delivery quantity field also for the sub items of this sales bom.
    I see that this User exit is not available in delivery procesing.  How to acheive the required functionality in the delivery processing...
    your advice is much appreciated in this matter.
    Regards
    Srini

    hi,
    Route is determined
    1.Country of Departure & Departure Zone taken from Shipping Point
    2.Country of Destination & receiving Zone from Ship to party
    3.Shipping condition from CMR
    4.Transportation Group from MMR
    5.Weight Group which is optional.
    Check the above.
    Route is determined in delivery.
    ASHA

  • Clipping problems using SPDIF input on SB Live

    .Clipping problems using SPDIF input on SB Li've?Hello everyone
    I'm new to this community and I'm banking on someone being able to help me!
    I'm connecting a DAT player to the SPDIF input on my Soundblaster Li've card and recording using Audacity.
    Within Creative Audio HQ I've got the SPDIF volume level set to 00% (for starters, perhaps someone can explain why there is a volume control when I thought this signal was staying in the digital realm?!) and when I record in Audacity the resulting material clips with high transient sound... a piano, for example, distorts on the louder notes.
    I need to take the level down to about 70% (or the equivalent in Audacity would be 0.7 - the 2 'volume' controls are connected) to avoid any clipping.
    I've had the sound card years and used to use SoundForge without any problems. Any ideas why this is happening in Audacity?
    I'm using XP and?I have downloaded the latest drivers and turned off the MOBO onboard sound in my BIOS.
    I would be grateful for any assistance anyone can give.
    Best Wishes
    Steve

    paush wrote:
    Hi, I am trying to sample my old vinyl record collection using my Sound Blaster Li've! PCI (think that was the model - it was the original (not Value) version of the card with the seperate header for the coaxial digital and MIDI I/O). Unfortunately, I get severe clipping regardless of the recording volume on the Volume Control panel. I know that my photo pre-amp is capable of high voltage outputs and therefore wondered if anyone was aware of the sensitivity of the analogue line input in volts of this particular model? Many thanks.
    Regards, Paul.
    If your pre-amp is a phono pre-amp (with RIAA in-build), I suppose it's not the culprit for clipping.
    How have you set the recording and source (input) levels on Volume Control and Recording Control?
    Try adjust the recording level by the 'hights' (loudest outputs) of the record (you know those recordings so you can easily find those places (or you can look on vinyls surface where the darkest areas are --> loudest outputs)).
    jutapaMessage Edited by jutapa on 0-23-2006 :38 PM

  • Incorrect field KNA1-STCEG in output list for input tax Line items-RFUMSV00

    Hi all,
    I found the incorrect field in RFUMSV00 - Advance Return for Tax on Sales/Purchases. If you want to configure the output list for Input tax: Line items, there is the field VAT Registration No. which has to be LFA1-STCEG, but there is incorrect field KNA1-STCEG. After that I cannot find the values for this field in my output.
    In the output list for Output tax: Line items there is correct field in configuration /LFA1-STCEG/.
    I tried to find some SAP notes but without avail.
    Thanks for help.
    Miroslav

    Hi,
    Please check the following OSS note:-
    https://websmp230.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=736203
    https://websmp230.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=640269
    It is picked up from bseg-stceg and not from lfa1-stceg or kna1-stceg
    Regards,
    Gaurav

  • Problem with the input file format to be stored in database

    Hi,
    I am facing some problem with the input format. I am using the table name as data.employee. But i could not able to process the message forward. I am getting this error,
    com.ibm.db2.jcc.c.SqlException: java.sql.Connection.close() requested while a transaction is in progress on the connection.The transaction remains active, and the connection cannot be closed.
    Can you please help me prposing a solution for this format.
    Thanks,
    SOorya

    I think you are missing out the COMMIT operation.
    At the DB2 end before closing the connection if you do a 'COMMIT' then this may remove your error.
    i.e. after you close the Resultset>close the statement object> perform 'COMMIT' operation--> then close the connection.
    Also refer :-
    http://www.dbforums.com/archive/index.php/t-976407.html
    http://www.dbforums.com/showthread.php?t=1628183
    I hope this will help you.
    Thanks,
    Vijaya

  • Problem with increasing input field length in module pool programming.

    Hi All,
    I have created a screen in which i have used table control wizard. In my table control I have an input field. The problem is, this input filed only takes 23 inputs at a time. I need to make this field unfixed. This is an quantity field. I am not understanding why this is happening. Can anybody plz help me in this regard ?
    Thanks in advance.
    Tripod.

    HI Tripod  ,
    YOu can add  Lines to Table control  .
    Add one button  by name ADD LINES  : give func code 'ADD'
    IN PBO  ...
    if it_mat[] is not initial .
        describe table it_mat lines ln  .
        tab_ctrl-lines = ln .
      endif.
    case sy-ucomm .
    when  'ADD' .
          perform add_lines .
    endcase  .
    form add_lines .
      ln  = ln + 1 .
      clear it_mat .
      append initial line to it_mat .
    endform .
    regards
    deepak.

  • How to display records that match user input date

    hi all,
      i need to display records that match user input date (i.e., for example if the difference between user input date and record date is less than 5 years then display those records) , this is for hr bw. any exit is there to check for validation for records to be displayed based on some abap coding.
    vijay

    I just see getApplication method but "Retrieves a list of all the deployed applications."
    My scenario is: I get user, end i want to discorver how application this user i enable to see.

  • Hi I just got my iPad 2 and updated it to ios7 . Here is my problem: my Chinese input doesn't work , I need to restart every time . Is it the problem of the iPad? Or iOS 7??

    Hi I just got my iPad 2 and updated it to ios7 . Here is my problem: my Chinese input doesn't work , I need to restart every time . Is it the problem of the iPad? Or iOS 7??

    Hi Eric Ferguson,
    Thanks for using Apple Support Communities.
    For troubleshooting on this, take a look at this article:
    iTunes: Specific update-and-restore error messages and advanced troubleshooting
    http://support.apple.com/kb/ts3694
    Error 13, 14, 35 and 50 (or -50)
    These errors are typically resolved by performing one or more of the steps listed below:
    Perform USB isolation troubleshooting, including trying a different USB port directly on the computer. See the advanced steps below for USB troubleshooting.
    Put a USB 2.0 hub between the device and the computer.
    Try a different USB 30-pin dock-connector cable.
    Eliminate third-party security software conflicts.
    There may be third-party software installed that modifies your default packet size in Windows by inserting one or more TcpWindowSize entries into your registry. Your default packet size being set incorrectly can cause this error. Contact the manufacturer of the software that installed the packet-size modification for assistance. Or, follow this article by Microsoft: How to reset Internet Protocol (TCP/IP) to reset the packet size back to the default for Windows.
    Connect your computer directly to your Internet source, bypassing any routers, hubs, or switches. You may need to restart your computer and modem to get online.
    Try to restore from another known-good computer and network.
    Best of luck,
    Mario

  • How to solve the problem related with inputing of the text into Wordpress from Firefox 9 and 9.0.1. The problem is that after inputing the formatting gets lost. Taking in account high popularity of Wordpress I suppose the problem is quite serious.

    How to solve the problem related with inputing of the text into Wordpress from Firefox 9 and 9.0.1.
    The problem is that after inputing the formatting gets lost.
    Taking in account high popularity of Wordpress I suppose the problem is quite serious.

    Perform the suggestions mentioned in the following articles:
    * [https://support.mozilla.com/en-US/kb/Template:clearCookiesCache/ Clear Cookies & Cache]
    * [[Troubleshooting extensions and themes]]
    * Clipboard not working -> [http://kb.mozillazine.org/Clipboard_not_working]
    * Rich Text Editing -> [http://kb.mozillazine.org/Rich_text_editing]
    * Update All your Firefox Plugins -> [https://www.mozilla.org/en-US/plugincheck/]
    Check and tell if its working.
    Might not be related to your problem but some of your Plugins are out-dated
    * Update All your Firefox Plugins -> [https://www.mozilla.org/en-US/plugincheck/]
    * '''When Downloading Plugins Update setup files, Remove Checkmark from Downloading other Optional Softwares with your Plugins (e.g. Toolbars, McAfee, Google Chrome, etc.)'''

  • How do you set the number of visible items in the popup box of a JComboBox?

    Hi,
    Do you know how to set the number of items that shall be visible in the popup box of a JComboBox?
    I have produced an implementation of an autocomplete JComboBox such that following each character typed in the text field, the popup box is repopulated with items. Normally 8 items are visible when showing the popup box. Sometimes even though the list of items is > 8 the popup box shrinks in height so that 8 items are not visible.
    Thanks,
    Simon

    Below is my JComboBox autocomplete implementation.
    The problem seems to occur when the list of items is reduced in number, the button selected and then the list size increased, the popup box does not automatically increase in size. I have tried setMaximumRowCount � but does not resolve the problem.
    To see how it works:
    1)     click in text field.
    2)     Type 1 � the full list of items are shown.
    3)     Type 0 � the list has been narrowed down � the popup box is greyed out for remaining items.
    4)     Type Backspace � the full list of items is redisplayed.
    5)     Type 0 � to narrow down the list.
    6)     Select button � the popup box is invisible.
    7)     Select button � the popup box is displayed with 2 items.
    8)     Select Backspace � here is the problem � the combo box list contains all items but the popup box has been shrunk so that only 2 are visible.
    9)     Select button � popup box is invisible.
    10)     Select button � popup box is as expected.
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import java.util.Enumeration;
    import java.util.Vector;
    import javax.swing.plaf.basic.*;
    class Test
    private JComboBox jCB = null;
    private JTextField jTF=null;
    private String typed="";
    private Vector vector=new Vector();
    public Test()
    JFrame fr=new JFrame("TEST ComboBox");
    JPanel p = new JPanel();
    p.setLayout( new BorderLayout() );
    ComboBoxEditor anEditor = new BasicComboBoxEditor();
    String[] s = new String[30];
    for (int i=0; i<30; i++) {
    s[i] = (new Integer(i+10)).toString();
    jTF=(JTextField)anEditor.getEditorComponent();
    jTF.addKeyListener(new KeyAdapter()
    public void keyReleased( KeyEvent ev )
    char key=ev.getKeyChar();
    if (! (Character.isLetterOrDigit(key)
    ||Character.isSpaceChar(key)
    || key == KeyEvent.VK_BACK_SPACE )) return;
    typed="";
    typed=jTF.getText();
    fillCB(vector);
    jCB.showPopup();
    jCB = new JComboBox();
    jCB.setEditor(anEditor);
    jCB.setEditable(true);
    boolean ins;
    for (int x=0; x<30; x++)
    ins = vector.add( new String(s[x]) );
    fillCB(vector);
    jCB.setSelectedIndex(-1);
    fr.getContentPane().add(p);
    p.add("South",jCB);
    p.add("Center",new JButton("test combo box"));
    fr.pack();
    fr.show();
    public void fillCB(Vector vector)
    typed = typed.trim();
    String typedUp = typed.toUpperCase();
    jCB.removeAllItems();
    jCB.addItem("Please select");
    for(Enumeration enu = vector.elements(); enu.hasMoreElements();) {
    String s = (String)enu.nextElement();
    if (s.toUpperCase().startsWith(typedUp)) {
    jCB.addItem(s);
    jTF.setText(typed);
    public static void main( String[] args )
    Test test=new Test();
    Many thanks,
    Simon

  • Automatically scrolling to an item in a JList

    Hi all,
    i have several jlists with about 30 - 50 items and i would like to take the user directly to an item in the list as he enters characters that match a list item. Are there any existing interfaces with this behaviour? If not, has anyone written something similar to this?
    Thanks!

    Hi Linzie,
    the following code will automatically scroll the JList to the item entered in the JTextField:public class X extends JApplet {
         public void init() {
              final int CELL_HEIGHT = 15; //or figure out how to get it dynamically
              String[] items = new String[50]; //test items (format: item XX)
              for (int x = 0; x < items.length; x++) items[x] = "item " + x;
              final JList lst = new JList(items);
              final JScrollPane scroll = new JScrollPane(lst);
              Container c = getContentPane();
              c.setLayout(new BorderLayout());
              final JTextField text = new JTextField(20);
              text.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e) {
                        String s = text.getText();
                        try {
                        int val = Integer.parseInt(s.substring(s.lastIndexOf(' ')+1, s.length()));
                        //this automatically scrolls to show
                        //the required cell of the JList
                        scroll.getVerticalScrollBar().setValue(val * CELL_HEIGHT);
                        lst.setSelectedIndex(val);
                        } catch(NumberFormatException ex) {
              c.add(text, BorderLayout.NORTH);
              c.add(scroll, BorderLayout.CENTER);
    }Cheers!

  • How to  move items from one JList to other

    Can u pls help me out to implement this(I m using Netbeans 5.5):
    I want to move items from one JList to other thru a ADD button placed between JLists, I am able to add element on Right side JList but as soon as compiler encounter removeElementAt() it throws Array Index Out of Bound Exception
    and if I use
    removeElement() it removes all items from left side JList and returns value false.
    Pls have a look at this code:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
    Object selItem = jList1.getSelectedValue();
    int selIndex = jList1.getSelectedIndex();
    DefaultListModel model = new DefaultListModel();
    jList2.setModel(model);
    model.addElement(selItem);
    DefaultListModel modelr = new DefaultListModel();
    jList1.setModel(modelr);
    flag = modelr.removeElement(selItem);
    //modelr.removeElementAt(selIndex);
    System.out.println(flag);
    }

    hi Rodney_McKay,
    Thanks for valuable time but my problem is as it is, pls have a look what I have done and what more can b done in this direction.
    Here is the code:
    import javax.swing.DefaultListModel;
    import javax.swing.JList;
    public class twoList extends javax.swing.JFrame {
    /** Creates new form twoList */
    public twoList() {
    initComponents();
    //The code shown below is automatically generated and we can�t edit this code
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
    jScrollPane1 = new javax.swing.JScrollPane();
    jList1 = new javax.swing.JList();
    jButton1 = new javax.swing.JButton();
    jScrollPane2 = new javax.swing.JScrollPane();
    jList2 = new javax.swing.JList();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    jList1.setModel(new javax.swing.AbstractListModel() {
    String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
    public int getSize() { return strings.length; }
    public Object getElementAt(int i) { return strings[i]; }
    jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
    public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
    jList1ValueChanged(evt);
    jScrollPane1.setViewportView(jList1);
    jButton1.setText("ADD>>");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton1ActionPerformed(evt);
    jScrollPane2.setViewportView(jList2);
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGap(31, 31, 31)
    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jButton1)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap(78, Short.MAX_VALUE))
    layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jScrollPane1, jScrollPane2});
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGap(62, 62, 62)
    .addComponent(jButton1))
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
    .addContainerGap(159, Short.MAX_VALUE))
    layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jScrollPane1, jScrollPane2});
    pack();
    }// </editor-fold>
    //automatic code ends here
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
            jList1 = new JList(new DefaultListModel());
            jList2 = new JList(new DefaultListModel());
             Object selItem = jList1.getSelectedValue();
             System.out.println(selItem);
            ((DefaultListModel) jList1.getModel()).removeElement(selItem);
            ((DefaultListModel) jList2.getModel()).addElement(selItem);
    //Now trying with this code it is neither adding or removing and the value �null� is coming in �selItem� .It may be bcoz JList and Jlist are already instantiated in automatic code. So, I tried this:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
             Object selItem = jList1.getSelectedValue();
             System.out.println(selItem);
            ((DefaultListModel) jList1.getModel()).removeElement(selItem);
            ((DefaultListModel) jList2.getModel()).addElement(selItem);
    //Now with this as soon as I click on �jButton1�, it is throwing this error:
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: twoList$1 cannot be cast to javax.swing.DefaultListModel
            at twoList.jButton1ActionPerformed(twoList.java:105)
            at twoList.access$100(twoList.java:13)
            at twoList$3.actionPerformed(twoList.java:50)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
            at java.awt.Component.processMouseEvent(Component.java:6038)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
            at java.awt.Component.processEvent(Component.java:5803)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4410)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
            at java.awt.Container.dispatchEventImpl(Container.java:2102)
            at java.awt.Window.dispatchEventImpl(Window.java:2429)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Maybe you are looking for