Solved

Java Applet - Reading input from user

Posted on 2004-03-26
31
539 Views
Last Modified: 2013-11-23
Hello,

This applet will take a person's name & ID number, and stores it in a sorted list.  When the user clicks the add button, it will read what the user inputted in the name & ID textfields, and store the person in a listed sorted by the ID number.  The three buttons: Remove First, Remove Last, Clear List, will be disabled if there are no items in the list.  If any error occurs, an error message will be displayed and the ok button (initially disabled) will be enabled.

Question:  How do I read input from a user?

Thank you!

-luna621 =^^=

--------------------------------------------------------------------------------------------------
Here's the applet:  http://www2.hawaii.edu/~flam/a04.html

Sorted List codes:

1. http://www2.hawaii.edu/~flam/DLN.java
2. http://www2.hawaii.edu/~flam/ISortedList.java 
3. http://www2.hawaii.edu/~flam/Person.java
4. http://www2.hawaii.edu/~flam/SortedList.java
5. http://www2.hawaii.edu/~flam/SortedListException.java

 
0
Comment
Question by:luna621
  • 18
  • 7
  • 5
  • +1
31 Comments
 
LVL 92

Accepted Solution

by:
objects earned 300 total points
ID: 10693306
Use JTextField's getText() method.
0
 

Author Comment

by:luna621
ID: 10693366
So I can do something like:

String userInput = id.getText();
         userInput = userInput + ",  " + name.getText();
0
 

Author Comment

by:luna621
ID: 10693373
Where do I create a new SortedList?  In the init() or in another method?
0
 
LVL 92

Expert Comment

by:objects
ID: 10693374
y
0
 
LVL 92

Expert Comment

by:objects
ID: 10693377
in the init()
0
 

Author Comment

by:luna621
ID: 10693382
ok, let me try that =^^=
0
 

Author Comment

by:luna621
ID: 10693414
add(java.awt.PopupMenu) in java.awt.Component cannot be applied to (int)
                        list.add(iUserInput);
                            ^
1 error
----------------------------------------------------------------------------------------

What does this mean?  Where did I go wrong  @_@??

http://www2.hawaii.edu/~flam/a04.html
0
 

Author Comment

by:luna621
ID: 10693419
The code is provided on that page via link =^^=
0
 

Author Comment

by:luna621
ID: 10693421
Okay, be back in a few hours...  >_<''
0
 
LVL 15

Expert Comment

by:Javatm
ID: 10693425
> What does this mean?  Where did I go wrong  @_@??

Its basically saying that you can not add an interger iUserInput to a component
which is list.

Hope that helps . . .
Javatm
0
 
LVL 92

Expert Comment

by:objects
ID: 10693430
that error is telling u the add() method in Component class is not execting an int parameter.
0
 
LVL 15

Expert Comment

by:Javatm
ID: 10693435
try {
int iUserInput = Integer.parseInt(userInput);
if(iUserInput<1 || iUserInput>2000) {
error.setText("Please enter an integer between 1 and 2000.");
}
if(iUserInput>0 && iUserInput<2001){
// Here was your problem . . .
list.add(iUserInput);
}
}
catch(NumberFormatException notInt) {
error.setText("Sorry, the ID is not a valid integer.");
}
0
 
LVL 92

Expert Comment

by:objects
ID: 10693443
>                         list.add(iUserInput);

looks like it should be:

list.append(iUserInput+"\n");
0
 
LVL 15

Expert Comment

by:Javatm
ID: 10693452
Thats correct :)
0
 

Author Comment

by:luna621
ID: 10693513
Oops!  You guys are fast.  Okay, the list.append() just displays the ID number in the textarea in the order that you add.  How do I make it so when you add, it will add the person to the list in a sorted order.

Example:

----------------------------------------------------------
Name: ____________  ID: _____________ |Add|

 ______________________________________
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
 ------------------------------------------------------
   |Remove First|  |Remove Last|  |Clear List|

Error msg: _______________________  |OK|



Ok, that's the applet.  This is what I want to do
--------------------------------------------------------
Step 1: Add 1st person.
--------------------------------------------------------
Name: John Doe            ID: 1234            |Add|

 ______________________________________
|1234, John Doe                                            |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
 ------------------------------------------------------
   |Remove First|  |Remove Last|  |Clear List|

Error msg: _______________________  |OK|

--------------------------------------------------------
Step 2: Add 2nd person and sort by ID number.
--------------------------------------------------------
Name: Mary Belle          ID: 0555            |Add|

 ______________________________________
|0555, Mary Belle                                          |
|1234, John Doe                                            |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
 ------------------------------------------------------
   |Remove First|  |Remove Last|  |Clear List|

Error msg: _______________________  |OK|

--------------------------------------------------------
Step 3: Here's an error example.
--------------------------------------------------------
Name: Casey Year          ID: 1234            |Add|

 ______________________________________
|0555, Mary Belle                                          |
|1234, John Doe                                            |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
|                                                                  |
 ------------------------------------------------------
   |Remove First|  |Remove Last|  |Clear List|

Error msg: Duplicate ID.  Casey Year not added.  |OK|

Something like that is what I had in mind.

------------------------------------------------------------------
Codes:
------------------------------------------------------------------
1. http://www2.hawaii.edu/~flam/DLN.java
2. http://www2.hawaii.edu/~flam/ISortedList.java 
3. http://www2.hawaii.edu/~flam/Person.java
4. http://www2.hawaii.edu/~flam/SortedList.java
5. http://www2.hawaii.edu/~flam/SortedListException.java
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 92

Expert Comment

by:objects
ID: 10693526
You might be better off using an java.awt.List instead of a TextArea.
0
 
LVL 15

Assisted Solution

by:Javatm
Javatm earned 50 total points
ID: 10693632
It will be hard on JTextArea though "clear list" would be easy as :
YourTextArea.setText("");

For JList :
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JList.html

Here is a good demo as suggested :

http://java.sun.com/docs/books/tutorial/uiswing/components/list.html
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/ListDemo.java

Hope that helps . . .
Javatm
0
 

Author Comment

by:luna621
ID: 10693907
What if each time I add a person, I re-print the list?  Will that work?
0
 
LVL 15

Expert Comment

by:Javatm
ID: 10693923
> What if each time I add a person, I re-print the list?  Will that work?

Yes, it will depending on how you do it :)

Hope that helps . . .
Javatm
0
 

Author Comment

by:luna621
ID: 10693951
   public class Ears implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            String whichButton = e.getActionCommand();

            if(whichButton.equals("Add")) {
                String idInput = id.getText();
                String userInput = idInput + ", " + name.getText();
                try {
                    int iIDInput = Integer.parseInt(idInput);
                    if(iIDInput<1 || iIDInput>2000) {
                        error.setText("Please enter an integer between 1 and 2000.");
                    } // end if
                    if(iIDInput>0 && iIDInput<2001){
                        list.add(userInput); //<------------------------------------ error from this part here
                    } // end if
                } // end try
                catch(NumberFormatException notInt) {
                    error.setText("Sorry, the ID is not a valid integer.");
                } // end catch
            } // end if

            if(whichButton.equals("Remove First")) {
                if(list.isEmpty()==true) {
                    error.setText("Sorry, there are no people in the list.");
                } // end if
                if(list.isEmpty()==false) {
                   remove(0);
                } // end if
            } // end if
    } // end actionPerformed

} // end Ears

------------------------------------------------------------------------------------------------
unreported exception SortedListException; must be caught or declared to be thrown
                        list.add(userInput);
                                ^
1 error
------------------------------------------------------------------------------------------------

But, when I try to throw the Exception I get these errors:

'{' expected
    public class Ears implements ActionListener throws Exception {
                                                ^
'}' expected
} // end OrderedList
                    ^
2 errors
0
 

Author Comment

by:luna621
ID: 10693955
Also, is something wrong with my add method.  If I want to read the userInput from the applet, and add that String to the list, will my add method work?

public void add(Comparable item) throws SortedListException {

        DLN node = new DLN(item);
        DLN nodeTmp = new DLN(get(count/2));

        if (nodeTmp==null) { // list is empty
            count = 1;
            head = tail = node;
            return;
        } // end if

        int firstCmpResult = nodeTmp.compareTo(node);

        while(true) {
            int cmpResult = nodeTmp.compareTo(node);
            if (cmpResult < 0 && firstCmpResult < 0) {
                if (nodeTmp.getNext()==null) {
                    // we've reached the tail of the list
                    // add the new element there
                    tail = node;
                    nodeTmp.setNext(node);
                    node.setPrev(nodeTmp);
                    count++;
                    return;
                } // end if
                nodeTmp = nodeTmp.getNext();
            } // end if
            else if (cmpResult > 0 && firstCmpResult > 0) {
                if (nodeTmp.getPrev()==null) {
                    // reached the head of the list
                    // add the new element
                    head = node;
                    node.setNext(nodeTmp);
                    nodeTmp.setPrev(node);
                    count++;
                    break;
                } // end if
                nodeTmp = nodeTmp.getPrev();
            } // end if
            else if (cmpResult < 0 && firstCmpResult > 0) {
                // After all >0 found the first <0
                // So, add the new element here
                node.setNext(nodeTmp.getNext());
                node.setPrev(nodeTmp);
                nodeTmp.getNext().setPrev(node);
                nodeTmp.setNext(node);
                count++;
            } // end if
            else if (cmpResult > 0 && firstCmpResult < 0) {
                // After all <0 found the first >0
                // So, add the new element here
                node.setNext(nodeTmp);
                node.setPrev(nodeTmp.getPrev());
                nodeTmp.getPrev().setNext(node);
                nodeTmp.setPrev(node);
                count++;
            } // end else
            else if (cmpResult==0) {
                System.out.println("Sorry! A Person with this ID already exists!");
            } // end if
        } // end while
    } // end add()
0
 

Author Comment

by:luna621
ID: 10693978
Okay, I'm off to bed.  Be back tomorrow =^^=
0
 
LVL 37

Assisted Solution

by:zzynx
zzynx earned 150 total points
ID: 10694910
>> unreported exception SortedListException; must be caught or declared to be thrown

1) Your add function is defined as

     public void add(Comparable item) throws SortedListException

     meaning it is *possible* that this function throws a SortedListException

2) This means that when you call this function (as you do in Ears.actionPerformed) you have to catch this exception:

     if(iIDInput>0 && iIDInput<2001){
           list.add(userInput); //<------------------------------------ error from this part here
     } // end if

    should be

     if(iIDInput>0 && iIDInput<2001){
          try {
            list.add(userInput); //<------------------------------------ error from this part here
          } catch (SortedListException ex) {
              // do what you want to do when this exception occurs
          }
     } // end if

     If you write this you have caught the exception. That's the first part of the error message: "must be caught"

3)  Another way of solving the error is declare the function that calls your function as
     also being able to throw the same error.

     e.g. Assume your function is

       private void myFunction1 {
           (...)
           myList.add(someString);
           (...)
       }

      then your error would be gone if you define your function as

       private void myFunction1 throws SortedListException {
           (...)
           myList.add(someString);
           (...)
       }

       In this case, when the exception occurs at the moment of the add() this functions also throws this exception
       to a higher lever (the function that is calling myFunction1)
       This way you have the exception declared as being throwed; the second part of the error message.

       Remark:
       In your specific case you can't use this second method since you can't change the
            actionPerformed()
       function into
            actionPerformed throws SortedListException

I hope this is clear now.

Apart from that, you declare your function add to be able to throw a SortedListException, but nowhere in the function
you really throw it.
I think it was meant for the case:

            ...
            else if (cmpResult==0) {
                System.out.println("Sorry! A Person with this ID already exists!");
            } // end if

Then you should change this in:

            ...
            else if (cmpResult==0) {
                throw new SortedListException("A Person with this ID already exists!");
            } // end if

Then catching the exception on a higher level will enable you to display it in the applet's window
0
 

Author Comment

by:luna621
ID: 10696866
Thanks zzynx!  I used method (2) - try/catch.  Anyways, I was trying the applet out and I realized I never wrote my print list method!!  So, I wrote it:

    public void printList() {

        if(count <= 1) {
            System.out.println("Oro?! List is empty.\n");
            return;
        } // end if

        DLN cursor = head;

        while(cursor != null) {
            System.out.println(cursor.toString());
            cursor = cursor.getNext();
        } // end while

    } // end printList

---------------------------------------------------------------

Then in my Ears method, I added this statement:

    public class Ears implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            String whichButton = e.getActionCommand();

            if(whichButton.equals("Add")) {
                idInput = id.getText();
                userInput = idInput + ", " + name.getText();
                try {
                    int iIDInput = Integer.parseInt(idInput);
                    if(iIDInput<1 || iIDInput>2000) {
                        error.setText("Please enter an integer between 1 and 2000.");
                    } // end if
                    if(iIDInput>0 && iIDInput<2001){
                        try {
                            list.add(userInput);
                            listArea.setText(list.printList()); //<-------------- this gives me errors!!
                        }
                        catch (SortedListException ex) {
                            error.setText("Sorry, this person could not be added.");
                        }
                    } // end if
                } // end try
                catch(NumberFormatException notInt) {
                    error.setText("Sorry, the ID is not a valid integer.");
                } // end catch
            } // end if

            if(whichButton.equals("Remove First")) {
                if(list.isEmpty()==true) {
                    error.setText("Sorry, there are no people in the list.");
                } // end if
                if(list.isEmpty()==false) {
                   remove(0);
                } // end if
            } // end if
    } // end actionPerformed

} // end Ears

----------------------------------------------------
This line:    listArea.setText(list.printList());    gives this error: 'void' type not allowed here listArea.setText(list.printList());
                                                                                                                                                          ^
1 error
----------------------------------------------------
If I can't do that, how would I print the list to the TextArea of the applet?

Thanks!

-luna621 =^^=
0
 

Author Comment

by:luna621
ID: 10696969
Okay, I just tested my add method and I get  NullPointerException.  What happened?

http://www2.hawaii.edu/~flam/SortedList.java
0
 

Author Comment

by:luna621
ID: 10697005
Alrighty, re-wrote the add method.  But, now I get errors regarding my compareTo method:

Here's a sample run:
----------------------------------------------------------------
Enter your String -or- press <ENTER> to quit: fsjsakfs

Enter your String -or- press <ENTER> to quit: fsfsdfs

Exception in thread "main" java.lang.NullPointerException
        at DLN.compareTo(DLN.java:57)
        at SortedList.add(SortedList.java:44)
        at MyList.main(MyList.java:46)
Press any key to continue . . .

0
 

Author Comment

by:luna621
ID: 10697015
0
 

Author Comment

by:luna621
ID: 10697630
Is something wrong with the compareTo() in DLN.java?

    public int compareTo(Object obj) {
        DLN node = (DLN)obj;
        return getItem().compareTo(node.getItem());
    } // end compareTo()
0
 

Author Comment

by:luna621
ID: 10697655
Okay, I guess I should ask another question since my question about reading from the user input was already answered =^^=
0
 

Author Comment

by:luna621
ID: 10697664
Thank you!!
0
 
LVL 92

Expert Comment

by:objects
ID: 10697706
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Java. Convert method from recursion based to iteration based ( loop based ) 6 75
Java DateChooser? 3 29
Java SE 8u111  Lot of stuff broke 11 54
ForLoop Example 3 40
After being asked a question last year, I went into one of my moods where I did some research and code just for the fun and learning of it all.  Subsequently, from this journey, I put together this article on "Range Searching Using Visual Basic.NET …
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now