Need help with my exit method
hey to all my java Pals =)
i am working on an application right now
and my exit method behaves strangly
when you go to File|Exit
it will say
"this will exit are you sure
if the user says yes it will exit the program but if he says no it wont
but when you close it from the X up the Corner of the screen
it will say
"this will exit are you sure
but regardless of what user chose Yes|NO it will exit
what am i doing wrong thanks
my code
//File | Exit action performed
public void jMenuFileExit_actionPerformed(ActionEvent e) {
int forExit;
forExit = JOptionPane.showConfirmDialog(null,"This will Exit..........!!!!"+"\n"+"Are you Sure?","Exit?",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
System.out.println(forExit);
if(forExit==0){
System.exit(0);
//and for overriding the (X) on corner
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMenuFileExit_actionPerformed(null);
}sorry for my spelling its 12 at night and i didnt spell check
Thanks in advance
here is the code
public Frame1() {
addWindowListener(new java.awt.event.WindowAdapter(){
public void windowClosing(java.awt.event.WindowEvent evt){
jMenuFileExit_actionPerformed(null);
});and the exit
public void jMenuFileExit_actionPerformed(ActionEvent e) {
int forExit;
forExit = JOptionPane.showConfirmDialog(null,"This will Exit..........!!!!"+"\n"+"Are you Sure?","Exit?",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
System.out.println(forExit);
if(forExit==0){
System.exit(0);
}
Similar Messages
-
Need Help with a getText method
Gday all,
I need help with a getText method, i need to extract text from a JTextField. Although this text then needs to converted to a double so that i can multiply a number that i have already specified. As you may of guessed that the text i need to extract already will be in a double format.e.g 0.1 or 0.0000004 etc
Thanks for your help
ps heres what i have already done its not very good though
ToBeConverted.getText();
( need help here)
double amount = (and here)
total = (amount*.621371192);
Converted.setText("= " + total);Double.parseDouble( textField.getText() );
-
Need help with an "exit door" page
My office has a page on our webserver that serves as an "exit door". It basically tells you when you're leaving our site (they do this because it's a gov't site, and thus rquired) and you have to click on a link to confirm that you want to leave.
The way it works is that when you code a page with a link that needs an exit door, you prepend the url with "exit.cfm?link=" and then the URL. It works adequately on simple URLS that pass no parameters. Where it has a problem is when a URL has GET arguments like ?page=23&item=43.
The original coder used URL.link, which of course only captures the first GET argument. As a work-around, we're required to edit the target URLS being passed to the exit door and replace things like & and # with [amp], [pound], etc. Needless to say, this gets rather tedious, so I decided to have a look at that old exit door page to see what I could do with it.
After playing around a bit, I achieved a reasonable level of success by using the following:
#xmlformat(ListDeleteAt(CGI.QUERY_STRING,1,"="))#
This gives me a properly encoded full URL to use as a link on the exit door page. But there's one problem. If there's a link that contains an anchor (like foo.com#section1) it doesn't capture the anchor. The # and what's after it isn't being passed.
I'm trying to figure out how to make this work. Has anyone else here had to make an exit door, and if so, how did you do yours?Thanks mack. I'm starting to think the answer to this is "it can't be done". Which is probably why my predecessor was replacing &s with [amp]s.
What led me to try to change this was that I was trying to build a regex for Dreamweaver that changed things like & and # to [amp] and [pound], but only when the URL began with the exit door page URL. I was only able to get my regex to replace one occurance of an item per pass, which sort of defeated its purpose. So I decided to change the exit door page instead.
Maybe I'll go back to trying to get the regex to work.
Ian, thanks for your help as well. -
I need help with this recursion method
public boolean findTheExit(int row, int col) {
char[][] array = this.getArray();
boolean escaped = false;
System.out.println("row" + " " + row + " " + "col" + " " + col);
System.out.println(array[row][col]);
System.out.println("escaped" + " " + escaped);
if (possible(row, col)){
System.out.println("possible:" + " " + possible(row,col));
array[row][col] = '.';
if (checkBorder(row, col)){
System.out.println("check border:" + " " + checkBorder(row,col));
escaped = true;
else {
System.out.println();
escaped = findTheExit(row+1, col);
if (escaped == false)
escaped = findTheExit(row, col+1);
else if (escaped == false)
escaped = findTheExit(row-1, col);
else if (escaped == false)
escaped = findTheExit(row, col-1);
if (escaped == true)
array[row][col] = 'O';
return escaped;
}I am having difficulties with this recursion method. What I wanted here is that when :
if escaped = findTheExit(row+1, col); I am having trouble with the following statement:
A base case has been reached, escaped(false) is returned to RP1. The algorithm backtracks to the call where row = 2 and col = 1 and assigns false to escaped.
How do I fix this code?
I know what's wrong with my code now, even though that if
if (possible(row, col))
[/code[
returns false then it will go to if (escaped == false)
escaped = findTheExit(row, col+1);
how do I do this?Okay I think I got the problem here because I already consult with the instructor, he said that by my code now I am not updating my current array if I change one of the values in a specific row and column into '.' . How do I change this so that I can get an update array. He said to me to erase char[][] array = getArray and replace it with the array instance variable in my class. But I don't have an array instance variable in my class. Below is my full code:
public class ObstacleCourse implements ObstacleCourseInterface {
private String file = "";
public ObstacleCourse(String filename) {
file = filename;
public boolean findTheExit(int row, int col) {
boolean escaped = false;
//System.out.println("row" + " " + row + " " + "col" + " " + col);
//System.out.println(array[row][col]);
//System.out.println("escaped" + " " + escaped);
if (possible(row, col)){
//System.out.println("possible:" + " " + possible(row,col) + "\n");
array[row][col] = '.';
if (checkBorder(row, col)){
escaped = true;
else {
escaped = findTheExit(row+1, col);
if (escaped == false)
escaped = findTheExit(row, col+1);
else if (escaped == false)
escaped = findTheExit(row-1, col);
else if (escaped == false)
escaped = findTheExit(row, col-1);
if (escaped == true)
array[row][col] = 'O';
return escaped;
public char[][] getArray() {
char[][] result = null;
try {
Scanner s = new Scanner(new File(file));
int row = 0;
int col = 0;
row = s.nextInt();
col = s.nextInt();
String x = "";
result = new char[row][col];
s.nextLine();
for (int i = 0; i < result.length; i++) {
x = s.nextLine();
for (int j = 0; j < result.length; j++) {
result[i][j] = x.charAt(j);
} catch (Exception e) {
return result;
public int getStartColumn() {
char[][] result = this.getArray();
int columns = -1;
for (int i = 0; i < result.length; i++) {
for (int j = 0; j < result[i].length; j++) {
if (result[i][j] == 'S')
columns = j;
return columns;
public int getStartRow() {
char[][] result = this.getArray();
int row = -1;
for (int i = 0; i < result.length; i++) {
for (int j = 0; j < result[i].length; j++) {
if (result[i][j] == 'S')
row = i;
return row;
public boolean possible(int row, int col) {
boolean result = false;
char[][] array = this.getArray();
if (array[row][col] != '+' && array[row][col] != '.')
result = true;
return result;
public String toString() {
String result = "";
try {
Scanner s = new Scanner(new File(file));
s.nextLine();
while (s.hasNextLine())
result += s.nextLine() + "\n";
} catch (Exception e) {
return result;
public boolean checkBorder(int row, int col) {
char[][] array = this.getArray();
boolean result = false;
int checkRow = 0;
int checkColumns = 0;
try {
Scanner s = new Scanner(new File(file));
checkRow = s.nextInt();
checkColumns = s.nextInt();
} catch (Exception e) {
if ((row + 1 == checkRow || col + 1 == checkColumns) && array[row][col] != '+')
result = true;
return result;
I thought that my problem would be not to read the file using the try and catch everytime in the method. How do I do this?? Do I have to create an array instance variable in my class? -
I need help with my remove method on a BST!
Guys I need some help here, I have to create a remove method for a BST and below is my code:
public boolean remove(OrderedMap map, K keyOfelementToRemove) {
boolean result = false;
if (root == null)
result = false;
else {
MapNode curr = root;
MapNode prev = root;
while (curr.key.equals(keyOfelementToRemove) == false) {
prev = curr;
if (keyOfelementToRemove.compareTo(curr.key) < 0)
curr = curr.left;
else if (keyOfelementToRemove.compareTo(curr.key) > 0)
curr = curr.right;
if (curr == null)
break;
if (curr == null)
return result;
else if (curr == root && curr.left == null)
root = root.right;
else if (curr.left == null) {
if (curr.right == null)
curr = null;
else if (curr == prev.left)
prev = curr.right;
else if (curr == prev.right){
prev = curr.right;
else if (curr.left != null) {
MapNode temp = curr.left;
while (temp.right != null)
temp = temp.right;
K change = temp.key;
temp = null;
curr.key = change;
size--;
return result;
}the algorithm that my instructor provides is:
private boolean remove( BinaryTreeNode t, Comparable elementToRemove )
Set result to false
Traverse the tree t until elementToRemove is found. Use curr and prev to find the element
leaving curr referring the node you want to remove. It may be the case that curr is null indicating
that elementToRemove was not found. Now there are four cases to consider :
Case 1: Not found
return result (false)
Case 2: The root is to be removed, but it has no left child.
root = root's right subtree (assuming root refers the the root node in your BST)
Case 3: The node is further down tree with no left child. Now must adjust one of the parent's links
if curr is on the left side of prev,
move parent's left link down to down to curr's right child
else
curr is on the right side of prev, so move parent's right down to down to curr's right child
Case 4: curr has a left child.
We can no longer ignore the left subtree. So find the maximum in the left subtree and
move that object to the node referenced by curr . Then eliminate the maximum in the
left subtree, which is now being reference from the original node to remove.
however for case 3 and 4 it doesn't work, can someone please tell me why? I don't know where I made a mistake and I tried finding it but I still dont knowI am sorry about the double post. I'll try not to do this again. My problem here seems to be that prev and curr aren't updating the BST outside this method, which means that it only changes locally but not permanently. I will post the code of the other headings:
public class OrderedMap<K extends Comparable<K>, V> {
private class MapNode {
// Links to other BSTs
private MapNode left;
private MapNode right;
ArrayList<V> temp1 = new ArrayList<V>();
// The references to the key/value pair of the mapping
private K key;
@SuppressWarnings("unused")
private V value;
public MapNode(K theKey, V theValue) {
key = theKey;
value = theValue;
left = null;
right = null;
} // end class MapNode
private MapNode root;
private int size;
public OrderedMap() { // Create an empty tree
root = null;
size = 0;
public int size() {
return size;
} -
Need Help with new Classes / methods
Hi, I need to create a class called Proposition. It include a Proposition object with 3 variables
Name, Description, Value
This is the constructor I wrote:
private String name;
private String description;
private boolean value;
public Proposition(){
name = "name";
description = "description";
value = false;
}Now I need a method that give values to the 3 variables in the proposition object:
public Proposition setProp(String line){
StringTokenizer ST1 = new StringTokenizer(line, ".");
String ValidLine = ST1.nextToken()+".";
StringTokenizer ST2 = new StringTokenizer(ValidLine, "=");
name = CutSpace(ST2.nextToken());
description = (ST2.nextToken()).trim();
value = false;
return name;
return description;
return value;
}An example of String line is: v = we are in Vancouver.
When I run the program, I got error message with the 3 return statements saying found String/Boolean while Proposition is needed. I'm not quite sure how to write the return statements. Can any1 help?
Thx!Your setProp() method should not be returning anything. After all it is setting not getting. So just declare it as
public void setProp(String line){and remove the return statements. -
NEED HELP WITH USING STATIC METHOD - PLEASE RESPOND ASAP!
I am trying to set a value on a class using a static method. I have defined a servlet attribute (let's call it myAttribute) on my webserver. I have a serlvet (let's call it myServlet) that has an init() method. I have modified this init() method to retrieve the attribute value (myAttribute). I need to make this attribute value accessible in another class (let's call it myOtherClass), so my question revolves around not knowing how to set this attribute value on my other class using a static method (let's call it setMyStuff()). I want to be able to make a call to the static method setMyStuff() with the value of my servlet attribute. I dont know enough about static member variables and methods. I need to know what to do in my init() method. I need to know what else I need to do in myServlet and also what all I need in the other class as well. I feel like a lot of my problems revolve around not knowing the proper syntax as well.
Please reply soon!!! Thanks in advance.class a
private static String aa = "";
public static setVar (String var)
aa = var;
class b
public void init()
a.aa = "try";
public static void main(String b[])
b myB = new b ();
b.init();
hope this help;
bye _drag -
Need help with a remove method..
Hello. I'm getting started on a project here to implement a recursive remove method that will remove any number from a list. I was given a test that the method must pass, but I'm having some trouble getting started. This is my second interaction with the idea of recursion and it's a bit difficult for me.
Here is the test I'm writing the method for:
public void testRemove() {
int element=0;
boolean inList = false;
for (int i = -10; i < 11; i++)list.insert(i);
int numElements = list.length();
list.remove(element);
for (int e : list) {
if ( e == element ) inList = true;
assertTrue(!inList && (list.length()==(numElements-1)));
element = -10;
inList = false;
list.remove(element);
for (int e : list) {
if ( e == element ) inList = true;
assertTrue(!inList && (list.length()==(numElements-2)));
element = 10;
inList = false;
list.remove(element);
for (int e : list) {
if ( e == element ) inList = true;
assertTrue(!inList && (list.length()==(numElements-3)));
//does remove work when element's value greater than value of last item in list
element = 20;
inList = false;
list.remove(element);
for (int e : list) {
if ( e == element ) inList = true;
assertTrue(!inList && (list.length()==(numElements-3)));
//does remove work when element's value less than value of first item in list
element = -20;
inList = false;
list.remove(element);
for (int e : list) {
if ( e == element ) inList = true;
assertTrue(!inList && (list.length()==(numElements-3)));
System.out.printf("%s\n", "testRemove " + list.toString());
}Now, clearly I need to test whether or not the number being removed is in the list (too low/too high), but I'm stuck trying to implement this.
If anyone can give me any ideas or direction it would be greatly appreciated.Thanks for the quick reply, from what I had gathered and what you posted I'm starting to see where I need to go from here. I had gotten as far as if list is null return null, and the cod that you posted makes sense, but implementing it into the source code I already have will be troubling for me. The code as you presented it I have no trouble understanding, for example:
if (list.data == data) return list.next;
list.next=remove(list.next, data);Is clear to me, however I don't know how to implement that into my code. This is the code for the insert method:
private Node<ElementType> insertp(Node<ElementType> list, ElementType element) {
if ( (list == null) || ( element.compareTo(list.getElement() ) < 0 ) ) {
// test for insert at head or before current node
Node<ElementType> newNode = new Node<ElementType>(element, null);
newNode.setNext(list);
return newNode;
else if (list.getNext() == null) { // list with one element
Node<ElementType> newNode = new Node<ElementType>(element, null);
list.setNext(newNode); // element goes at end
else if ( element.compareTo(list.getNext().getElement()) < 0 ) { // insert after list
Node<ElementType> newNode = new Node<ElementType>(element, list.getNext());
//newNode.setNext(list.getNext());
list.setNext(newNode);
else {
insertp(list.getNext(), element); // find insertion point
return list;
}I'm still struggling to understand all of the code there. the element.compareTo() and everything. If you (or some one else) can explain to me what is going on with those methods, I may be able to implement it myself. Also, this may be of some use, these are the methods I have available to me:
public class Node<E> {
// Instance variables:
private E element;
private Node<E> next;
/** Creates a node with null references to its element and next node. */
public Node() {
this(null, null);
/** Creates a node with the given element and next node. */
public Node(E e, Node<E> n) {
element = e;
next = n;
// Accessor methods:
public E getElement() {
return element;
public Node<E> getNext() {
return next;
// Modifier methods:
public void setElement(E newElem) {
element = newElem;
public void setNext(Node<E> newNext) {
next = newNext;
public String toString() {
return element.toString();
} -
Need help with project (calling methods) please!!
Hi there i have a project for uni requiring me to create a java program that creates a random No. and lets the user have three guesses to find the No. When the users guesses correct he gets a message telling him hes won and if he doesnt get it correct he gets a message telling him the correct No then terminates.
The code has to call an outside method called[b] Public Static Boolean CheckGuess
I have tried to create this and got it to compile with no errors (eventually) but i keep getting a message saying i have whenever i type any number in. I think the problem is the way i am calling the method i havnt got much experience this is all pretty new to me any help would be really appreciated. Thanks.
import javax.swing.*;
import java.util.*;
public class Coursework1{
public static void main(String args[]){
int randomnumber,usersguessint,checkguess,guessvalid,attempts;
String usersguess,output;
boolean match;
//create random number generator
Random numGenerator = new Random();
//generate a random number between 1 & 10 inclusive
randomnumber = Math.abs(numGenerator.nextInt(9))+1;
//initialize variable attempts
for ( attempts = 0; attempts < 3; attempts++ ) {
//ask user for his first guess
usersguess=JOptionPane.showInputDialog("Please enter your guess between 1 & 10");
//convert users guess to integer
usersguessint = Integer.parseInt(usersguess);
//validate input
while (usersguessint<1||usersguessint>10){
usersguess=JOptionPane.showInputDialog("You entered an incorrect number \nPlease enter a numberbetween 1 & 10");
//convert users guess to integer
usersguessint = Integer.parseInt(usersguess);
} //end while loop
//call boolean method
if (match=true){
//display text area in JoptionPane
output="You won";
JOptionPane.showMessageDialog(null,output,"You Won",JOptionPane.INFORMATION_MESSAGE);
break;}
else{
output="Try again";
JOptionPane.showInputDialog("Try again");
} //end if
} //end for
}//end main
//user defined method
public static boolean checkGuess(int usersguessint,int randomnumber){
boolean match = false;
if (usersguessint == randomnumber){
match = true;
return match;
}//end method
}//endclassThank you very much that worked a treat the program is working better now. I have just realised that my for loopcontaining my counter may be in the wrong place as the program is running though both messages 3 times e.g
"Please enter your guess between 1 & 10"
"Try again"
"Please enter your guess between 1 & 10"
"Try again"
"Please enter your guess between 1 & 10"
"Try again"
"Please enter your guess between 1 & 10"
"Try again"
I want my program to run like
"Please enter your guess between 1 & 10"
"Try again"
"Try again"
"Try again"
Do u think if i placed my for stament (counter) in between the two messages it would eliminate this problem. -
HI Guys,
I am trying to create a Customer Exit in Bex on employee number (zempno) and the technical name of my Customer Exit is Zempnum.
What i am trying do is, who ever logs in and executes the query, he should get his relavant data, meaning if the employee login he should get his own data, or if the supervisor logs in he should get all the employess under him.
When i am trying to execute the query i am getting the below error.
Error: Error for variable in customer enhancement ZEMPNUM
Diagnosis:
This internal error is a deliberate termination, since a program status has arisen, that is not allowed to occur.
The error has arisen for variable ZEMPNUM in the customer enhancement .
Procedure:
Please check your customer enhancement.
Procedure for System Administration
Notification Number BRAIN 649
Below is my code
*& Include ZXRSRU01
data : itab like /BIC/AZHRPE00100 occurs 0 with header line .
data : zuid like /BIC/AZHRPE00100-/bic/zempno.
data region type /BIC/OIZCDOTREG1.
break-point.
case I_VNAM.
WHEN 'ZEMPNUM'.
DATA: L_S_RANGE TYPE RSR_S_RANGESID.
DATA: LOC_VAR_RANGE LIKE RRRANGEEXIT.
IF I_STEP = 2. "before the popup
DATA username(20) type c.
username = sy-uname.
break-point.
select single /bic/zempno from /BIC/AZHRPE00100 INTO zuid where /bic/zuserid = username.
if sy-subrc = 0 .
select * from /bic/azhrpe00100 into table itab where /bic/zempno = zuid.
endif.
CLEAR L_S_RANGE.
L_S_RANGE-LOW = ZUID."low value, e.g.200001
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'eq'.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDIF.
ENDCASE.HI,
This is the update code, but still i am getting the same error.
*& Include ZXRSRU01
DATA: L_S_RANGE TYPE RSR_S_RANGESID,
LOC_VAR_RANGE LIKE RRRANGEEXIT. " This is Global
data : itab like /BIC/AZHRPE00100 occurs 0 with header line.
data : temp_zempno like /BIC/AZHRPE00100-/bic/zempno.
*region type /BIC/OIZCDOTREG1,
data : itab_empno like standard table of temp_zempno.
*itab_empno like /BIC/AZHRPE00100-/bic/zempno.
*break-point.
case I_VNAM.
WHEN 'ZEMPNUM'.
IF I_STEP = 1. "After the popup
*break-point.
select single /bic/zempno from /BIC/AZHRPE00100 INTO temp_zempno
where /bic/zuserid = sy-uname.
Check if he is the supervisor for any other employees
add them to the internal table
Check the syntax below.
if sy-subrc = 0 .
if sy-subrc = 0 .
select /bic/zempno from /bic/azhrpe00100 into table itab_empno where /bic/zspnm = temp_zempno.
*select /bic/zempno from /bic/azhrpe00100 into table itab_empno where /bic/zspno = temp_zempno.
endif.
endif.
*Add Own Employee number to the internal table
*Check the syntax below
Append temp_zempno to itab_empno.
*By now, all the employee numbers are added
to the internal tabe
*now loop at itab_empno and return all the values.
CLEAR L_S_RANGE.
loop at itab_empno into temp_zempno.
L_S_RANGE-LOW = temp_zempno.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
EXIT.
ENDLOOP.
ENDIF.
ENDCASE.
Thanks,
kris -
Hi, I am new to java and need help with sound methods.
q: create a new method that will halve the volume of the positive values and double the volume of the negative values.
Message was edited by:
Apaula30duplicate message #2
-
Need Help With File Matching Records
I need help with my file matching program.
Here is how it suppose to work: FileMatch class should contain methods to read oldmast.txt and trans.txt. When a match occurs (i.e., records with the same account number appear in both the master file and the transaction file), add the dollar amount in the transaction record to the current balance in the master record, and write the "newmast.txt" record. (Assume that purchases are indicated by positive amounts in the transaction file and payments by negative amounts.)
When there is a master record for a particular account, but no corresponding transaction record, merely write the master record to "newmast.txt". When there is a transaction record, but no corresponding master record, print to a log file the message "Unmatched transaction record for account number ..." (fill in the account number from the transaction record). The log file should be a text file named "log.txt".
Here is my following program code:
// Exercise 14.8: CreateTextFile.java
// creates a text file
import java.io.FileNotFoundException;
import java.lang.SecurityException;
import java.util.Formatter;
import java.util.FormatterClosedException;
import java.util.NoSuchElementException;
import java.util.Scanner;
import org.egan.AccountRecord;
import org.egan.TransactionRecord;
public class CreateTextFile
private Formatter output1; // object used to output text to file
private Formatter output2; // object used to output text to file
// enable user to open file
public void openTransFile()
try
output1 = new Formatter("trans.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openTransFile
// enable user to open file
public void openOldMastFile()
try
output2 = new Formatter("oldmast.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openOldMastFile
// add transaction records to file
public void addTransactionRecords()
// object to be written to file
TransactionRecord record1 = new TransactionRecord();
Scanner input1 = new Scanner(System.in);
System.out.printf("%s\n%s\n%s\n%s\n\n",
"To terminate input, type the end-of-file indicator",
"when you are prompted to enter input.",
"On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
"On Windows type <ctrl> z then press Enter");
System.out.printf("%s\n%s",
"Enter account number (> 0) and amount.","? ");
while (input1.hasNext()) // loop until end-of-file indicator
try // output values to file
// retrieve data to be output
record1.setAccount(input1.nextInt()); // read account number
record1.setAmount(input1.nextDouble()); // read amount
if (record1.getAccount() > 0)
// write new record
output1.format("%d %.2f\n", record1.getAccount(), record1.getAmount());
} // end if
else
System.out.println("Account number must be greater than 0.");
} // end else
} // end try
catch (FormatterClosedException formatterClosedException)
System.err.println("Error writing to file.");
return;
} // end catch
catch (NoSuchElementException elementException)
System.err.println("Invalid input. Please try again.");
input1.nextLine(); // discard input so user can try again
} // end catch
System.out.printf("%s %s\n%s", "Enter account number (> 0) ",
"and amount.","? ");
} // end while
} // end method addTransactionRecords
// add account records to file
public void addAccountRecords()
// object to be written to file
AccountRecord record2 = new AccountRecord();
Scanner input2 = new Scanner(System.in);
System.out.printf("%s\n%s\n%s\n%s\n\n",
"To terminate input, type the end-of-file indicator",
"when you are prompted to enter input.",
"On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
"On Windows type <ctrl> z then press Enter");
System.out.printf("%s\n%s",
"Enter account number (> 0), first name, last name and balance.","? ");
while (input2.hasNext()) // loop until end-of-file indicator
try // output values to file
// retrieve data to be output
record2.setAccount(input2.nextInt()); // read account number
record2.setFirstName(input2.next()); // read first name
record2.setLastName(input2.next()); // read last name
record2.setBalance(input2.nextDouble()); // read balance
if (record2.getAccount() > 0)
// write new record
output2.format("%d %s %s %.2f\n", record2.getAccount(), record2.getFirstName(),
record2.getLastName(), record2.getBalance());
} // end if
else
System.out.println("Account number must be greater than 0.");
} // end else
} // end try
catch (FormatterClosedException formatterClosedException)
System.err.println("Error writing to file.");
return;
} // end catch
catch (NoSuchElementException elementException)
System.err.println("Invalid input. Please try again.");
input2.nextLine(); // discard input so user can try again
} // end catch
System.out.printf("%s %s\n%s", "Enter account number (> 0),",
"first name, last name and balance.","? ");
} // end while
} // end method addAccountRecords
// close file
public void closeTransFile()
if (output1 != null)
output1.close();
} // end method closeTransFile
// close file
public void closeOldMastFile()
if (output2 != null)
output2.close();
} // end method closeOldMastFile
} // end class CreateTextFile--------------------------------------------------------------------------------------------------
// Exercise 14.8: CreateTextFileTest.java
// Testing class CreateTextFile
public class CreateTextFileTest
// main method begins program execution
public static void main( String args[] )
CreateTextFile application = new CreateTextFile();
application.openTransFile();
application.addTransactionRecords();
application.closeTransFile();
application.openOldMastFile();
application.addAccountRecords();
application.closeOldMastFile();
} // end main
} // end class CreateTextFileTest-------------------------------------------------------------------------------------------------
// Exercise 14.8: TransactionRecord.java
// A class that represents on record of information
package org.egan; // packaged for reuse
public class TransactionRecord
private int account;
private double amount;
// no-argument constructor calls other constructor with default values
public TransactionRecord()
this(0,0.0); // call two-argument constructor
} // end no-argument AccountRecord constructor
// initialize a record
public TransactionRecord(int acct, double amt)
setAccount(acct);
setAmount(amt);
} // end two-argument TransactionRecord constructor
// set account number
public void setAccount(int acct)
account = acct;
} // end method setAccount
// get account number
public int getAccount()
return account;
} // end method getAccount
// set amount
public void setAmount(double amt)
amount = amt;
} // end method setAmount
// get amount
public double getAmount()
return amount;
} // end method getAmount
} // end class TransactionRecord -------------------------------------------------------------------------------------------------
// Exercise 14.8: AccountRecord.java
// A class that represents on record of information
package org.egan; // packaged for reuse
import org.egan.TransactionRecord;
public class AccountRecord
private int account;
private String firstName;
private String lastName;
private double balance;
// no-argument constructor calls other constructor with default values
public AccountRecord()
this(0,"","",0.0); // call four-argument constructor
} // end no-argument AccountRecord constructor
// initialize a record
public AccountRecord(int acct, String first, String last, double bal)
setAccount(acct);
setFirstName(first);
setLastName(last);
setBalance(bal);
} // end four-argument AccountRecord constructor
// set account number
public void setAccount(int acct)
account = acct;
} // end method setAccount
// get account number
public int getAccount()
return account;
} // end method getAccount
// set first name
public void setFirstName(String first)
firstName = first;
} // end method setFirstName
// get first name
public String getFirstName()
return firstName;
} // end method getFirstName
// set last name
public void setLastName(String last)
lastName = last;
} // end method setLastName
// get last name
public String getLastName()
return lastName;
} // end method getLastName
// set balance
public void setBalance(double bal)
balance = bal;
} // end method setBalance
// get balance
public double getBalance()
return balance;
} // end method getBalance
// combine balance and amount
public void combine(TransactionRecord record)
balance = (getBalance() + record.getAmount());
} // end method combine
} // end class AccountRecord -------------------------------------------------------------------------------------------------
// Exercise 14.8: FileMatch.java
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.IllegalStateException;
import java.util.NoSuchElementException;
import java.util.Scanner;
import java.util.Formatter;
import java.util.FormatterClosedException;
import org.egan.AccountRecord;
import org.egan.TransactionRecord;
public class FileMatch
private Scanner inTransaction;
private Scanner inOldMaster;
private Formatter outNewMaster;
private Formatter theLog;
// enable user to open file
public void openTransFile()
try
inTransaction = new Scanner(new File("trans.txt"));
} // end try
catch (FileNotFoundException fileNotFoundException)
System.err.println("Error opening file.");
System.exit(1);
} // end catch
} // end method openTransFile
// enable user to open file
public void openOldMastFile()
try
inOldMaster = new Scanner(new File("oldmast.txt"));
} // end try
catch (FileNotFoundException fileNotFoundException)
System.err.println("Error opening file.");
System.exit(1);
} // end catch
} // end method openOldMastFile
// enable user to open file
public void openNewMastFile()
try
outNewMaster = new Formatter("newmast.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openNewMastFile
// enable user to open file
public void openLogFile()
try
theLog = new Formatter("log.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openLogFile
// update records
public void updateRecords()
TransactionRecord transaction = new TransactionRecord();
AccountRecord account = new AccountRecord();
try // read records from file using Scanner object
System.out.println("Start file matching.");
while (inTransaction.hasNext() && inOldMaster.hasNext())
transaction.setAccount(inTransaction.nextInt()); // read account number
transaction.setAmount(inTransaction.nextDouble()); // read amount
account.setAccount(inOldMaster.nextInt()); // read account number
account.setFirstName(inOldMaster.next()); // read first name
account.setLastName(inOldMaster.next()); // read last name
account.setBalance(inOldMaster.nextDouble()); // read balance
if (transaction.getAccount() == account.getAccount())
while (inTransaction.hasNext() && transaction.getAccount() == account.getAccount())
account.combine(transaction);
outNewMaster.format("%d %s %s %.2f\n",
account.getAccount(), account.getFirstName(), account.getLastName(),
account.getBalance());
transaction.setAccount(inTransaction.nextInt()); // read account number
transaction.setAmount(inTransaction.nextDouble()); // read amount
else if (transaction.getAccount() != account.getAccount())
outNewMaster.format("%d %s %s %.2f\n",
account.getAccount(), account.getFirstName(), account.getLastName(),
account.getBalance());
theLog.format("%s%d","Unmatched transaction record for account number ",transaction.getAccount());
} // end while
System.out.println("Finish file matching.");
} // end try
catch (NoSuchElementException elementException)
System.err.println("File improperly formed.");
inTransaction.close();
inOldMaster.close();
System.exit(1);
} // end catch
catch (IllegalStateException stateException)
System.err.println("Error reading from file.");
System.exit(1);
} // end catch
} // end method updateRecords
// close file and terminate application
public void closeTransFile()
if (inTransaction != null)
inTransaction.close();
} // end method closeTransFile
// close file and terminate application
public void closeOldMastFile()
if (inOldMaster != null)
inOldMaster.close();
} // end method closeOldMastFile
// close file
public void closeNewMastFile()
if (outNewMaster != null)
outNewMaster.close();
} // end method closeNewMastFile
// close file
public void closeLogFile()
if (theLog != null)
theLog.close();
} // end method closeLogFile
} // end class FileMatch-------------------------------------------------------------------------------------------------
// Exercise 14.8: FileMatchTest.java
// Testing class FileMatch
public class FileMatchTest
// main method begins program execution
public static void main( String args[] )
FileMatch application = new FileMatch();
application.openTransFile();
application.openOldMastFile();
application.openNewMastFile();
application.openLogFile();
application.updateRecords();
application.closeLogFile();
application.closeNewMastFile();
application.closeOldMastFile();
application.closeTransFile();
} // end main
} // end class FileMatchTest-------------------------------------------------------------------------------------------------
Sample data for master file:
Master file
Account Number Name Balance
100 Alan Jones 348.17
300 Mary Smith 27.19
500 Sam Sharp 0.00
700 Suzy Green -14.22Sample data for transaction file:
Transaction file Transaction
Account Number Amount
100 27.14
300 62.11
300 83.89
400 100.56
700 80.78
700 1.53
900 82.17 -------------------------------------------------------------------------------------------------
My FileMatch class program above has bugs in it.
The correct results for the newmast.txt:
100 Alan Jones 375.31
300 Mary Smith 173.19
500 Sam Sharp 0.00
700 Suzy Green 68.09The correct results for the log.txt:
Unmatched transaction record for account number 400Unmatched transaction record for account number 900------------------------------------------------------------------------------------------------
My results for the newmast.txt:
100 Alan Jones 375.31
300 Mary Smith 111.08
500 Sam Sharp 0.00
700 Suzy Green -12.69My results for the log.txt
Unmatched transaction record for account number 700-------------------------------------------------------------------------------------------------
I am not sure what is wrong with my code above to make my results different from the correct results.
Much help is appreciated. Please help.From the output, it looks like one problem is just formatting -- apparently you're including a newline in log entries and not using tabs for the newmast output file.
As to why the numbers are off -- just from glancing over it, it appears that the problem is when you add multiple transaction values. Since account.combine() is so simple, I suspect that you're either adding creating transaction objects incorrectly or not creating them when you should be.
Create test input data that isolates a single case of this (e.g., just the Mary Smith case), and then running your program in a debugger or adding debugging code to the add/combine method, so you can see what's happening in detail.
Also I'd recommend reconsidering your design. It's a red flag if a class has a name with "Create" in it. Classes represent bundles of independant state and transformations on that state, not things to do. -
Need help with threads?.. please check my approach!!
Hello frnds,
I am trying to write a program.. who monitors my external tool.. please check my way of doing it.. as whenever i write programs having thread.. i end up goosy.. :(
first let me tell.. what I want from program.. I have to start an external tool.. on separate thread.. (as it takes some time).. then it takes some arguments(3 arguments).. from file.. so i read the file.. and have to run tool.. continously.. until there are arguments left.. in file.. or.. user has stopped it by pressing STOP button..
I have to put a marker in file too.. so that.. if program started again.. file is read from marker postion.. !!
Hope I make clear.. what am trying to do!!
My approach is like..
1. Have two buttons.. START and STOP on Frame..
START--> pressed
2. check marker("$" sign.. placed in beginning of file during start).. on file..
read File from marker.. got 3 arg.. pass it to tool.. and run it.. (on separate thread).. put marker.. (for next reading)
Step 2.. continously..
3. STOP--> pressed
until last thread.. stops.. keep running the tool.. and when last thread stops.. stop reading any more arguments..
Question is:
1. Should i read file again and again.. ?.. or read it once after "$" sign.. store data in array.. and once stopped pressed.. read file again.. and put marker ("$" sign) at last read line..
2. how should i know when my thread has stopped.. so I start tool again??.. am totally confused.. !!
please modify my approach.. if u find anything odd..
Thanks a lot in advance
gerviniHello,
I have no experience with threads or with having more than run "program" in a single java file. All my java files have the same structure. This master.java looks something like this:
---master.java---------------------------------------------------
import java.sql.*;
import...
public class Master {
public static void main(String args []) throws SQLException, IOException {
//create connection pool here
while (true) { // start loop here (each loop takes about five minutes)
// set values of variables
// select a slave process to run (from a list of slave programs)
execute selected slave program
// check for loop exit value
} // end while loop
System.out.println("Program Complete");
} catch (Exception e) {
System.out.println("Error: " + e);
} finally {
if (rSet1 != null)
try { rSet1.close(); } catch( SQLException ignore ) { /* ignored */ }
connection.close();
-------end master.java--------------------------------------------------------
This master.java program will run continuously for days or weeks, each time through the loop starting another slave process which runs for five minutes to up to an hour, which means there may be ten to twenty of these slave processes running simultaneously.
I believe threads is the best way to do this, but I don't know where to locate these slave programs: either inside the master.java program or separate slave.java files? I will need help with either method.
Your help is greatly appreciated. Thank you.
Logan -
Need help with PHP contact form
Hi guys,
I've made a PHP contact form for my site and need help with a couple of things:
The form action links an external PHP script (scripts/contact-form-script.php) but is there a way I can have it so the PHP script for the form is contained within the same PHP file as my contact form (contact.php)?
I tried just putting the form code at the top of contact.php but the browser automatically reads the anti-spam re-direct, so maybe that needs revising too?
The second thing is, how can I make the Name, Email and Message fields mandatory? So if a user tries to submit the form and hasn't filled in one of the required fields and clicks submit, contact.php reloads with a message at the top of the form saying something like 'Complete the required fields' and highlights the relevant field with a red border?
Here's the code for contact.php:
<form action="http://www.mydomain.com/scripts/contact-form-script.php" method="post" name="contact" id="contact">
<p><strong>Name:*</strong><br />
<input name="name" type="text" class="ctextField" /></p>
<p><strong>E-mail:*</strong><br />
<input name="email" type="text" class="ctextField" /></p>
<p><strong>Telephone:</strong><br />
<input name="telephone" type="text" class="ctextField" /></p>
<p><strong>Company:</strong><br />
<input name="company" type="text" class="ctextField" /></p>
<p><strong>Address:</strong><br />
<input name="address1" type="text" class="ctextField" /></p>
<p><input name="address2" type="text" class="ctextField" /></p>
<p><strong>Town:</strong><br />
<input name="town" type="text" class="ctextField" /></p>
<p><strong>County:</strong><br />
<input name="county" type="text" class="ctextField" /></p>
p><strong>Postcode:</strong><br />
<input name="postcode" type="text" class="ctextField" /></p>
<p><strong>Message:*</strong><br />
<textarea name="message" cols="55" rows="8" class="ctextField"></textarea></p>
<p><input name="submit" value="SEND MESSAGE" class="submitButton" type="submit" /><div style="visibility:hidden; width:1px; height:1px"><input name="url" type="text" size="45" id="url" /></div></p>
</form>
And this is the PHP I'm using to submit the form data for contact-form-script.php:
<?php
$headers .= "Reply-To: " . $_POST["email"] . "\r\n";
$to = "[email protected]";
$subject = "Contact from website";
$message = $headers;
$message .= "Name: " . $_POST["name"] . "\r\n";
$message .= "E-mail: " . $_POST["email"] . "\r\n";
$message= '
<table cellspacing="0" cellpadding="8" border="0" width="500">
<tr>
<td colspan="2"></td>
</tr>
<tr bgcolor="#eeeeee">
<td width="154" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Name</strong></td>
<td width="314" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$name.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>E-mail address:</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$email.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Telephone number:</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$telephone.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Company:</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$company.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Address</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$address1.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$address2.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Town</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$town.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>County</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$county.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Postcode</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$postcode.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Message</strong></td>
</tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$message.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
</table>
$url = stripslashes($_POST["url"]);
if (!empty($url)) {
header( 'Location: http://www.go-away-spam-robots.com' );
exit();
mail($to, $subject, $message, $headers);
header( 'Location: http://www.mydomain.com/sent.php' ) ;
?>
Any help on this would be greatly appreciated.
Thank you and I hope to hear from you!
SMRevised code with form validation for Name Email and Message:
<?php
if (array_key_exists('submit', $_POST)) {
$name = $_POST['name'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$company = $_POST['company'];
$address1 = $_POST['address1'];
$address2 = $_POST['address2'];
$town = $_POST['town'];
$county = $_POST['county'];
$postcode = $_POST['postcode'];
$formMessage = $_POST['message'];
if (empty($name)) {
$warning['name'] = "Please provide your name";
if (empty($email)) {
$warning['email'] = "Please provide your email";
if (empty($formMessage)) {
$warning['message'] = "Please provide your message";
$headers .= "Reply-To: " . $_POST["email"] . "\r\n";
$to = "[email protected]";
$subject = "Contact from website";
$message = $headers;
$message .= "Name: " . $_POST["name"] . "\r\n";
$message .= "E-mail: " . $_POST["email"] . "\r\n";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$message= "
<table cellspacing='0' cellpadding='8' border='0' width='500'>
<tr>
<td colspan='2'></td>
</tr>
<tr bgcolor='#eeeeee'>
<td width='154' style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Name</strong></td>
<td width='314' style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$name."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>E-mail address:</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$email."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Telephone number:</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$telephone."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Company:</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$company."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Address</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$address1."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$address2."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Town</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$town."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>County</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$county."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Postcode</strong></td>
<td style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$postcode."</td>
</tr>
<tr bgcolor='#eeeeee'>
<td colspan='2' style='font-family:Verdana, Arial; font-size:11px; color:#333333;'><strong>Message</strong></td>
</tr>
<tr bgcolor='#eeeeee'>
<td colspan='2' style='font-family:Verdana, Arial; font-size:11px; color:#333333;'>".$formMessage."</td>
</tr>
<tr><td colspan='2' style='padding: 0px;'><img src='images/whitespace.gif' alt='' width='100%' height='1' /></td></tr>
</table>
$url = stripslashes($_POST["url"]);
if (!empty($url)) {
header( 'Location: http://www.go-away-spam-robots.com' );
exit();
if (!isset($warning)) {
mail($to, $subject, $message, $headers);
header( 'Location: http://www.mydomain.com/sent.php' ) ;
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
p {
margin: 0;
padding: 10px 0 0 0;
.warning {
color:#C00;
</style>
</head>
<body>
<form action="" method="post" name="contact" id="contact">
<p><strong>Name:*</strong><br />
<input name="name" <?php if (isset($warning['name'])) { echo "style='border: 1px solid #C00'"; } ?> type="text" class="ctextField" />
<?php if (isset($warning['name'])) { echo "<p class='warning'>".$warning['name']."</p>"; }?>
</p>
<p><strong>E-mail:*</strong><br />
<input name="email" <?php if (isset($warning['email'])) { echo "style='border: 1px solid #C00'"; } ?>type="text" class="ctextField" />
<?php if (isset($warning['name'])) { echo "<p class='warning'>".$warning['email']."</p>"; }?>
</p>
<p><strong>Telephone:</strong><br />
<input name="telephone" type="text" class="ctextField" /></p>
<p><strong>Company:</strong><br />
<input name="company" type="text" class="ctextField" /></p>
<p><strong>Address:</strong><br />
<input name="address1" type="text" class="ctextField" /></p>
<p><input name="address2" type="text" class="ctextField" /></p>
<p><strong>Town:</strong><br />
<input name="town" type="text" class="ctextField" /></p>
<p><strong>County:</strong><br />
<input name="county" type="text" class="ctextField" /></p>
<p><strong>Postcode:</strong><br />
<input name="postcode" type="text" class="ctextField" /></p>
<p><strong>Message:*</strong><br />
<?php if (isset($warning['message'])) { echo "<p class='warning'>".$warning['message']."</p>"; }?>
<textarea name="message" <?php if (isset($warning['message'])) { echo "style='border: 1px solid #C00'"; } ?> cols="55" rows="8" class="ctextField"></textarea></p>
<p><input name="submit" value="SEND MESSAGE" class="submitButton" type="submit" /><div style="visibility:hidden; width:1px; height:1px"><input name="url" type="text" size="45" id="url" /></div></p>
</form>
</body>
</html> -
Need help with JTextArea and Scrolling
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import javax.swing.*;
public class MORT_RETRY extends JFrame implements ActionListener
private JPanel keypad;
private JPanel buttons;
private JTextField lcdLoanAmt;
private JTextField lcdInterestRate;
private JTextField lcdTerm;
private JTextField lcdMonthlyPmt;
private JTextArea displayArea;
private JButton CalculateBtn;
private JButton ClrBtn;
private JButton CloseBtn;
private JButton Amortize;
private JScrollPane scroll;
private DecimalFormat calcPattern = new DecimalFormat("$###,###.00");
private String[] rateTerm = {"", "7years @ 5.35%", "15years @ 5.5%", "30years @ 5.75%"};
private JComboBox rateTermList;
double interest[] = {5.35, 5.5, 5.75};
int term[] = {7, 15, 30};
double balance, interestAmt, monthlyInterest, monthlyPayment, monPmtInt, monPmtPrin;
int termInMonths, month, termLoop, monthLoop;
public MORT_RETRY()
Container pane = getContentPane();
lcdLoanAmt = new JTextField();
lcdMonthlyPmt = new JTextField();
displayArea = new JTextArea();//DEFINE COMBOBOX AND SCROLL
rateTermList = new JComboBox(rateTerm);
scroll = new JScrollPane(displayArea);
scroll.setSize(600,170);
scroll.setLocation(150,270);//DEFINE BUTTONS
CalculateBtn = new JButton("Calculate");
ClrBtn = new JButton("Clear Fields");
CloseBtn = new JButton("Close");
Amortize = new JButton("Amortize");//DEFINE PANEL(S)
keypad = new JPanel();
buttons = new JPanel();//DEFINE KEYPAD PANEL LAYOUT
keypad.setLayout(new GridLayout( 4, 2, 5, 5));//SET CONTROLS ON KEYPAD PANEL
keypad.add(new JLabel("Loan Amount$ : "));
keypad.add(lcdLoanAmt);
keypad.add(new JLabel("Term of loan and Interest Rate: "));
keypad.add(rateTermList);
keypad.add(new JLabel("Monthly Payment : "));
keypad.add(lcdMonthlyPmt);
lcdMonthlyPmt.setEditable(false);
keypad.add(new JLabel("Amortize Table:"));
keypad.add(displayArea);
displayArea.setEditable(false);//DEFINE BUTTONS PANEL LAYOUT
buttons.setLayout(new GridLayout( 1, 3, 5, 5));//SET CONTROLS ON BUTTONS PANEL
buttons.add(CalculateBtn);
buttons.add(Amortize);
buttons.add(ClrBtn);
buttons.add(CloseBtn);//ADD ACTION LISTENER
CalculateBtn.addActionListener(this);
ClrBtn.addActionListener(this);
CloseBtn.addActionListener(this);
Amortize.addActionListener(this);
rateTermList.addActionListener(this);//ADD PANELS
pane.add(keypad, BorderLayout.NORTH);
pane.add(buttons, BorderLayout.SOUTH);
pane.add(scroll, BorderLayout.CENTER);
addWindowListener( new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
public void actionPerformed(ActionEvent e)
String arg = lcdLoanAmt.getText();
int combined = Integer.parseInt(arg);
if (e.getSource() == CalculateBtn)
try
JOptionPane.showMessageDialog(null, "Got try here", "Error", JOptionPane.ERROR_MESSAGE);
catch(NumberFormatException ev)
JOptionPane.showMessageDialog(null, "Got here", "Error", JOptionPane.ERROR_MESSAGE);
if ((e.getSource() == CalculateBtn) && (arg != null))
try{
if ((e.getSource() == CalculateBtn) && (rateTermList.getSelectedIndex() == 1))
monthlyInterest = interest[0] / (12 * 100);
termInMonths = term[0] * 12;
monthlyPayment = combined * (monthlyInterest / (1 - (Math.pow (1 + monthlyInterest, -termInMonths))));
lcdMonthlyPmt.setText(calcPattern.format(monthlyPayment));
if ((e.getSource() == CalculateBtn) && (rateTermList.getSelectedIndex() == 2))
monthlyInterest = interest[1] / (12 * 100);
termInMonths = term[1] * 12;
monthlyPayment = combined * (monthlyInterest / (1 - (Math.pow (1 + monthlyInterest, -termInMonths))));
lcdMonthlyPmt.setText(calcPattern.format(monthlyPayment));
if ((e.getSource() == CalculateBtn) && (rateTermList.getSelectedIndex() == 3))
monthlyInterest = interest[2] / (12 * 100);
termInMonths = term[2] * 12;
monthlyPayment = combined * (monthlyInterest / (1 - (Math.pow (1 + monthlyInterest, -termInMonths))));
lcdMonthlyPmt.setText(calcPattern.format(monthlyPayment));
catch(NumberFormatException ev)
JOptionPane.showMessageDialog(null, "Invalid Entry!\nPlease Try Again", "Error", JOptionPane.ERROR_MESSAGE);
} //IF STATEMENTS FOR AMORTIZATION
if ((e.getSource() == Amortize) && (rateTermList.getSelectedIndex() == 1))
loopy(7, 5.35);
if ((e.getSource() == Amortize) && (rateTermList.getSelectedIndex() == 2))
loopy(15, 5.5);
if ((e.getSource() == Amortize) && (rateTermList.getSelectedIndex() == 3))
loopy(30, 5.75);
if (e.getSource() == ClrBtn)
rateTermList.setSelectedIndex(0);
lcdLoanAmt.setText(null);
lcdMonthlyPmt.setText(null);
displayArea.setText(null);
if (e.getSource() == CloseBtn)
System.exit(0);
private void loopy(int lTerm,double lInterest)
double total, monthly, monthlyrate, monthint, monthprin, balance, lastint, paid;
int amount, months, termloop, monthloop;
String lcd2 = lcdLoanAmt.getText();
amount = Integer.parseInt(lcd2);
termloop = 1;
paid = 0.00;
monthlyrate = lInterest / (12 * 100);
months = lTerm * 12;
monthly = amount *(monthlyrate/(1-Math.pow(1+monthlyrate,-months)));
total = months * monthly;
balance = amount;
while (termloop <= lTerm)
displayArea.setCaretPosition(0);
displayArea.append("\n");
displayArea.append("Year " + termloop + " of " + lTerm + ": payments\n");
displayArea.append("\n");
displayArea.append("Month\tMonthly\tPrinciple\tInterest\tBalance\n");
monthloop = 1;
while (monthloop <= 12)
monthint = balance * monthlyrate;
monthprin = monthly - monthint;
balance -= monthprin;
paid += monthly;
displayArea.setCaretPosition(0);
displayArea.append(monthloop + "\t" + calcPattern.format(monthly) + "\t" + calcPattern.format(monthprin) + "\t");
displayArea.append(calcPattern.format(monthint) + "\t" + calcPattern.format(balance) + "\n");
monthloop ++;
termloop ++;
public static void main(String args[])
MORT_RETRY f = new MORT_RETRY();
f.setTitle("MORTGAGE PAYMENT CALCULATOR");
f.setBounds(600, 600, 500, 500);
f.setLocationRelativeTo(null);
f.setVisible(true);
}need help with displaying the textarea correctly and the scroll bar please.
Message was edited by:
new2this2020What's the problem you're having ???
PS.
Maybe you are looking for
-
Express to extend network - setup help please
I would really appreciate some help ensuring i have the correct set up for my express (x2) I have a mac, macbook, sky broadband modem and a basestation I connect to the internet using the modem and network "sky 13222". The basestation has a network i
-
I am importing video via fire wire to iMovie and saving it as a .mov file. When I try to view the video using QT Pro the clip plays for 30 seconds but the original video is about 7 mins. long. Any ideas why it stops? Thanks, in advance, for any help.
-
OOB feature in SharePoint 2013
Hi Everyone Do we have any OOB SharePoint 2013 Feature for the below task or any OOB feature which almost performs/resembles the below task. 1) Reminders 2) Job Scheduling 3) To do list 4) Message inbox 5) Weather Forecast 6) Image Upload Regards Pra
-
HI All Hope someone can point me in the right direction on this one, I have a customer who has a SCCM 2012 R2 environment spread into two domains, with a two way trust between he two. We set up SCCM configured it correctly any it's been working perfe
-
PRD Cutover - Replace RSWUWFML2 with Extended Notif framework SWNADMIN
Hi Folks, We are using RSWUWFML2 to send out notifications for workitems in Production (PRD) environment. Now we have implemented Extended Notification framework (SWNADMIN) in Dev and we are happy with what we learnt so decided to discontinue RSWUWFM