Need HELP coding Threads to read a file.
Hello, I am reading an incomming file (from a device called /dev/gps) of latitude and longitude positions. It updates a few times every second, so I would like to read only the last line when the getPosition function is called. Here is a sample of the file being read:
Latitude: xxxx.xxxxxx,Longitude: -xxxx.xxxxx1
Latitude: xxxx.xxxxxx,Longitude: -xxxx.xxxxx2
Latitude: xxxx.xxxxxx,Longitude: -xxxx.xxxxx3
MY QUESTION:
how would the code look for a Thread that does the basic reading from my device and update a string variable called currentCoordinates? Then have another thread which is the main program that just reads that variable whenever it's ready for the next coordinate, and it will only read the last value stored in the variable. The first Thread will take care of discarding the unused ones.
Also, should the updating and reading of the variable should be protected by synchronization?
thanks for your help!
Hi, i hope i understood your problem correctly....
also, im new to threads, so this might not be text book
Below is the code for 4 classes
CoordHolder - class that holds the current coord data
CoordReader - class that reads the file and updates the coordholder when it finds a new line
CoordUser - class that reads coordholder and gets the coord data
CoordTest - class to test the above
When CoordTest is running try changing the text in the file (in this example called output.txt) and you will see the last line output to teh console.
I think this would also be better done using a javax.swing.timer but the SDK im using doesnt have it.
Hope this helps a little!!
public class CoordHolder
private boolean alreadyRead = false;
private String coords = "";
public synchronized void setCoords(String inCoords)
while (alreadyRead == false)
try
wait(); //wait for value to be read
} catch (InterruptedException e){}
coords = inCoords;
alreadyRead = false;
notifyAll();
public synchronized String getCoords()
while (alreadyRead == true)
try
wait(); //wait for value to ne written
} catch (InterruptedException e){}
alreadyRead = true;
notifyAll();
return coords;
public boolean isAlreadyread()
return alreadyRead;
import java.io.*;
import java.util.*;
public class CoordReader extends Thread
private String data;
private String lastLine = "";
private String lastLine2 = "";
private CoordHolder ch;
private File file;
private int tick=1;
public CoordReader(CoordHolder c, String f)
ch = c;
file = new File(f);
public void run()
while (true)
tick++;
if ((tick % 500000) == 0)
BufferedReader LINE;
try
LINE = new BufferedReader(new FileReader(file)); //input file handle
while((data = LINE.readLine()) != null)
lastLine = data;
//do nothing, get to end of file
LINE.close();
if (!(lastLine2.equals(lastLine)))
ch.setCoords(lastLine);
lastLine2 = lastLine;
System.out.println("Reader: "+lastLine);
}catch(IOException e){System.out.println("ACK! IO problem.");}
if (tick>4000000)
tick = 1;
yield();
public class CoordUser extends Thread
private CoordHolder ch;
private String coord;
public CoordUser(CoordHolder c)
ch = c;
public void run()
int value = 0;
while (true)
coord = ch.getCoords();
System.out.println("User: "+coord);
public class CoordTest
public static void main(String[] args)
CoordHolder c = new CoordHolder();
CoordReader r = new CoordReader(c, "C:\\output.txt");
CoordUser u = new CoordUser(c);
r.start();
u.start();
}
Similar Messages
-
Need help using JTextArea to read large file
Hi here is the deal.
I've got a large file (about 12Mbytes) of raw data (all of the numbers are basically doubles or ints) which was formed with the ObjectOutputStream.writeInt/writeDouble (I say this to make clear the file has no ascii whatsoever).
Now I do the file reading on a SwingWorker thread where I read the info from the file in the same order I put it originally.
I need to convert it to string and visualize it on a JTextArea. It starts working. However a one point (56% to be exact since I know exactly the number of values I need to read) it stops working. The program doesn�t freeze (probably because the other worker thread froze) and I get no exceptions (even tough I�m catching them) and no errors.
Does anyone have any idea of what the problem could be?
Thank you very much in advance.
PD: I don�t know if it matters but I'm using ObjectInputStream with the readInt/readDouble functions to get the values and then turning them to strings and adding them to the JTextArea.I can put up the code.
I don't have it with me right now but I'll do it later.
Thank you.
Second. I need to debug a function aproximation that uses a method that has to manage that many numbers. If I don�t put it into a txt and read it there is no way I will know where the problems are, if any. And yes I can look at the txt and figure out problems. It's not that hard.
What I'll try to do is to write directly to regular txt file instead of doing it to the JTextArea.
Thank you for your help and I'll post back with the code and results.
PD: I don't know what profiling is, would you mind telling me? -
Hi there, I need to be able to read raw files from an Olympus Stylus 1 via CS5 and Lightroom 4. I have downloaded Raw file plug-in v 6.7.1 but still can't read the files?
Read this table http://helpx.adobe.com/creative-suite/kb/camera-raw-plug-supported-cameras.html
The Olympus Stylus 1 was first supported in Camera Raw 8.3 which is only compatible with CS6 and CC.
It is not compatible with CS5 or older and never will be.
If you do not want to upgrade to CS6 or CC then you can dwonload the free Adobe DNG converter, convert all Stylus 1 Raw files to DNGs then edit the DNGs in CS5.
Camera raw, DNG | Adobe Photoshop CC -
I need help with adobe iv reader.
iam trying to pin a website using ie.it says the reader cannot read the website,i am not computer saavy so i donot know how to fix this issue, pls help,tyvm.
i am trying to pin a website in internet explorer to my task bar,i get a
message that adobe v1 could not decode the website, i am not computer saavy
so i don't know what that means,plus this is a new computer 4 me.plus it
worked fine a few days ago. tyvm 4 ur help.
regards,
ray nist
In a message dated 6/11/2013 9:27:11 P.M. Eastern Daylight Time,
[email protected] writes:
Re: i need help with adobe iv reader.
created by Pat Willener (http://forums.adobe.com/people/pwillener) in
Adobe Reader - View the full discussion
(http://forums.adobe.com/message/5400013#5400013) -
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 to open and look for file by name
Hi,
Im needing help to open a folder and look for a file (.txt) on this directory by his name ... The user ll type the partial name of file , and i need look for this file on the folder , and delete it ....
How can i look for the file by his name ?
Thx =)Hi ,
Sry ,, let me explain again ... I ll set the name of the files in the follow order ... Name_Serial_date_chanel.sxc ..
The user ll type the serial that he wants delete ...
I already figured out what i need guys .. thx for the help ^^
I used List Directory on advanced IO , to list all .. the Name is the same for all ... then i used Name_ concateneted with Serial(typed)* .. this command serial* ll list all serials equal the typed , in my case , ll exist only one , cuz its a count this serial .Then i pass the path to the delete , and its done !
Thx ^^ -
Need help in using dbms_lob.read
I need to upload a file into an Oracle table into a Blob column. The file name along with the file contents are all in one BLOB column.
Once that is done I need to read from the file and extract the file contents and load it into a staging table.
File being uploaded is a *.CSV* file.
E.g. Of the .CSV file is: ABC.csv file and its contents will look like:
1,Hello,Nisha
2,Hi,Ravi
3,Bye, Rahul
Etc…..
Therefore the table containing the BLOB column will contain:
File Creation_date
ABC.csv 09/11/2009
How can I read a file from the BLOB column and upload into a staging table?
Final Staging table should look like:
Record Number Greet Name
1 Hello Nisha
2 Hi Ravi
3 Bye Rahul
I think I am suppose to use dbms_lob.read, but I am not really sure how to use it. If there is any script, kindly mail me the same.
Thanks....Nisha,
Check this example (test) and see if it can be any help. I have utl_file and sqlldr
First Method -- I loaded alert.log successfully and you can imagine how big this file can be (5MB in my test case)
create table t1clob
( clob_text clob);
CREATE OR REPLACE DIRECTORY DIR AS '/path_to_csv_file/;
DECLARE
clob_data CLOB;
clob_file BFILE;
BEGIN
INSERT INTO t1clob
VALUES (EMPTY_CLOB ())
RETURNING clob_text INTO clob_data;
clob_file := BFILENAME ('DIR', ABC.csv');
DBMS_LOB.fileopen (clob_file);
DBMS_LOB.loadfromfile (clob_data,
clob_file,
DBMS_LOB.getlength (clob_file)
DBMS_LOB.fileclose (clob_file);
COMMIT;
END;Second Method: Use of Sqlldr
Example of controlfile
LOAD DATA
INFILE alert.log "STR '|\n'"
REPLACE INTO table t1clob
clob_text char(30000000)
)Hope this helps. -
Hi I need help first time here converting a file
Hi I need help first time here converting a file
Thank you for your subscription to our service. Please see below.
How to convert your file to PDF file:
Using Adobe Reader:
Launch Adobe Reader X or Reader XI
Select “Tools” and click “Sign In” link to sign in with your Adobe ID and password
Select “Create PDF” then click “Select File” button
Click “Convert” after select your file
Click “Download Converted File” link to download the file to your computer after the process is completed.
Using Web UI
Log into https://createpdf.acrobat.com/signin.html with your Adobe ID and password
Select “Convert to PDF”
Click “Select Files” button then choose your file Click “Download” button in the progress bar after completion of the process to download the PDF file to your computer.
Converted PDF files are stored at https://files.acrobat.com and you can log in with your Adobe ID and password. You can share your files with others or download them to your computer.
Please let me know if you have further questions.
Hisami -
Need help pulling data from an outside file into my array. Please help =)
Hi,
I need help adapting my array to read the interest rates from an outside file. Here is my code and the outside file I wrote. Please help. Oh, the array in question is on line 259, inside of my calculation() method.
Thanks...
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.io.*;
import javax.swing.JOptionPane;
public class Workshop5 extends JFrame implements ActionListener
//declare gui components
//declare labels
JPanel contentPane = new JPanel();
JPanel graphPane = new JPanel();
JLabel instructionLabel = new JLabel();
JLabel amountLabel = new JLabel();
JLabel orLabel = new JLabel();
JLabel comboBoxLabel = new JLabel();
JLabel termLabel = new JLabel();
JLabel rateLabel = new JLabel();
JLabel calcLabel = new JLabel();
JLabel paymentLabel = new JLabel();
JLabel tableLabel = new JLabel();
//declare font object
Font labelFont = new Font("Tahoma", Font.PLAIN, 16);
//declare text fields
JTextField amountField = new JTextField(20);
JTextField termField = new JTextField(20);
JTextField rateField = new JTextField(20);
JTextField paymentField= new JTextField(20);
//declare combo box for loan selection
JComboBox comboBox = new JComboBox();
//declare button group and radio buttons
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton enterRadioButton = new JRadioButton("Enter amount, term, & rate", true);
JRadioButton selectRadioButton = new JRadioButton("Select a preset term/rate loan", false);
//declare button objects
JButton clearButton = new JButton();
JButton calcButton = new JButton();
JButton quitButton = new JButton();
//declare text area for amortization
JTextArea amortTextArea = new JTextArea();
JTextArea testTextArea = new JTextArea();
//declare scroll bar for amortization table
JScrollPane scrollPane = new JScrollPane(amortTextArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
public Workshop5()
instructionLabel.setText("Choose one of the following payment calculation options:");
instructionLabel.setFont(new Font("Tahoma",Font.PLAIN,16));
//adds both buttons to button group
buttonGroup.add(enterRadioButton);
buttonGroup.add(selectRadioButton);
enterRadioButton.setFont(labelFont);
enterRadioButton.setBackground(Color.WHITE);
enterRadioButton.setContentAreaFilled(false);
enterRadioButton.addActionListener(this); //adds action listener to enter radio button
orLabel.setText("OR");
orLabel.setFont(new Font("Tahoma",Font.BOLD,18));
selectRadioButton.setFont(labelFont);
selectRadioButton.setBackground(Color.WHITE);
selectRadioButton.setContentAreaFilled(false);
selectRadioButton.addActionListener(this); //adds action listener to select radio button
amountLabel.setText("Enter mortgage amount");
amountLabel.setFont(new Font("Tahoma", Font.PLAIN,16));
amountField.requestFocusInWindow();
termLabel.setText("Enter term length in years:");
termLabel.setFont(new Font("Tahoma", Font.PLAIN,14));
rateLabel.setText("Enter interest rate:");
rateLabel.setFont(new Font("Tahoma", Font.PLAIN,14));
comboBoxLabel.setText("Select a loan:");
comboBoxLabel.setFont(new Font("Tahoma", Font.PLAIN,14));
comboBox.setBackground(new Color(255,255,255));
comboBox.setFont(new Font("Tahoma", Font.PLAIN, 14));
comboBox.setEnabled(false);
ComboBox();
calcLabel.setText("Press Calculate button to determine monthly payment.");
calcLabel.setFont(new Font("Tahoma", Font.PLAIN, 16));
calcButton.setText("Calculate");
calcButton.setFont(new Font("Tahoma", Font.BOLD, 14));
calcButton.addActionListener(this);
//define monthly payment label
paymentLabel.setText("Monthly payment:");
paymentLabel.setFont(new Font("Tahoma", Font.PLAIN, 16));
//define monthly payment text field
paymentField.setFont(new Font("Tahoma", Font.BOLD,16));
paymentField.setBackground(new Color(255,255,255));
paymentField.setEditable(false);
//define clear button
clearButton.setText("Clear");
clearButton.setFont(new Font("Tahoma", Font.BOLD,14));
clearButton.addActionListener(this);
//define quit button
quitButton.setText("Quit");
quitButton.setFont(new Font("Tahoma", Font.BOLD,14));
quitButton.addActionListener(this);
tableLabel.setText("Amoritization Table");
tableLabel.setFont(new Font("Tahoma", Font.BOLD, 16));
graphPane.setBackground(Color.WHITE);
//add components to content
getContentPane().add(contentPane);
contentPane.setLayout(null);
addComponent(contentPane, instructionLabel, 80,10,450,26);
addComponent(contentPane, enterRadioButton, 30,40,220,30);
addComponent(contentPane, orLabel, 280,40,100,30);
addComponent(contentPane, selectRadioButton, 335,40,350,30);
addComponent(contentPane, amountLabel, 100,80,220,26);
addComponent(contentPane, amountField, 300,80,150,26);
addComponent(contentPane, termLabel, 15,125,200,30);
addComponent(contentPane, termField, 195,125,125,30);
addComponent(contentPane, rateLabel, 62,160,200,30);
addComponent(contentPane, rateField, 195,165,125,30);
addComponent(contentPane, comboBoxLabel, 400,125,200,26);
addComponent(contentPane, comboBox, 400,155,150,30);
addComponent(contentPane, calcLabel, 100,200,400,30);
addComponent(contentPane, calcButton, 250,240,100,30);
addComponent(contentPane, paymentLabel, 150,285,200,30);
addComponent(contentPane, paymentField, 300,285,100,30);
addComponent(contentPane, clearButton, 100,330,100,30);
addComponent(contentPane, quitButton, 400,330,100,30);
addComponent(contentPane, tableLabel, 200,370,300,26);
addComponent(contentPane, scrollPane, 10,400,450,360);
addComponent(contentPane, graphPane, 475,400,305,360);
//add window listener to close window when user presses X
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
pack();
//method to add components
private void addComponent(Container container, Component c, int x, int y, int width, int height)
c.setBounds(x, y, width, height);
container.add(c);
//action performed method
public void actionPerformed(ActionEvent event)
Object source = event.getSource();
if (source == calcButton)
Calculate();
if (source == clearButton)
Clear();
if (source == quitButton)
Exit();
//defines active area based on user selection of mortgage calculation method
//if user chooses to enter the mortgage manually, combo box fields are inactive
if (source == enterRadioButton)
comboBox.setEnabled(false);
termField.setEnabled(true);
termField.setEditable(true);
rateField.setEnabled(true);
rateField.setEditable(true);
amountField.setText("");
amountField.requestFocusInWindow();
termField.setText("");
rateField.setText("");
paymentField.setText("");
amortTextArea.setText("");
//if user chooses to select from a preset mortgage, rate and term fields are inactive
if (source == selectRadioButton)
comboBox.setEnabled(true);
termField.setEnabled(false);
termField.setEditable(false);
rateField.setEnabled(false);
rateField.setEditable(false);
amountField.setText("");
amountField.requestFocusInWindow();
termField.setText("");
rateField.setText("");
paymentField.setText("");
amortTextArea.setText("");
}//end of action performed method
//combo box method
public void ComboBox()
String[] LoanArray = {" 7 years at 5.35 %", " 15 years at 5.50 %", " 30 years at 5.75 %"};
for (int i = 0; i < LoanArray.length; i++)
comboBox.addItem(LoanArray);
}//end combo box method
//calculation method
void Calculate()
//resets fields
paymentField.setText("");
amortTextArea.setText("");
//calculation variables
NumberFormat currency = NumberFormat.getCurrencyInstance();
int [] termArray = {7, 15, 30}; //array of years
double [] yearlyInterestArray = {5.35, 5.5, 5.75}; //array of interest
int totalMonths = 0; //total months
double Loan = 0.0; //amount of loan
double MonthlyInterest = 0.0; //monthly interest rate
double Payment = 0.0; //calculate payment
double monthlyPayment = 0.0; //calculate monthly payment
double Interest = 0.0; //variable for Interest Array input
int Term = 0; //variable for Term Array input
double NewMonthlyInterest = 0.0; //new interest amount
double NewLoan = 0.0; //new loan amount
double Reduction = 0.0; //principle reduction
//validate input
try
Loan = Double.parseDouble(amountField.getText());
catch (NumberFormatException e)
JOptionPane.showMessageDialog(null,"Invalid Entry. Please enter valid loan amount.", "Error", JOptionPane.WARNING_MESSAGE);
//resets input fields after error message
amountField.setText("");
amountField.requestFocusInWindow();
//if select button is chosen
if (selectRadioButton.isSelected())
int index = comboBox.getSelectedIndex();
Term = termArray[index];
Interest = yearlyInterestArray[index];
//if user chooses to enter mortgage information
else
if (enterRadioButton.isSelected())
//validates input
try
Term = Integer.parseInt(termField.getText());
catch (NumberFormatException e)
JOptionPane.showMessageDialog(null,"Invalid entry. Please enter valid term length in years.", "Error",JOptionPane.WARNING_MESSAGE);
//clears fields after error message
termField.setText("");
termField.requestFocusInWindow();
try
Interest = Double.parseDouble(rateField.getText());
catch (NumberFormatException e)
JOptionPane.showMessageDialog(null,"Invalid entry. Please enter valid rate (without percent symbol).","Error",JOptionPane.WARNING_MESSAGE);
//clears fields after error message
rateField.setText("");
rateField.requestFocusInWindow();
//perform calculations
if (Loan > 0)
Loan = Double.parseDouble(amountField.getText());
MonthlyInterest = (Interest / 12)/100;
totalMonths = Term * 12;
monthlyPayment = Loan * MonthlyInterest *(Math.pow((1 + MonthlyInterest), totalMonths)/(Math.pow((1 + MonthlyInterest), totalMonths)-1));
paymentField.setText("" + currency.format(monthlyPayment));
//send information to amortization text area
amortTextArea.append("Number\t");
amortTextArea.append(" Amount\t");
amortTextArea.append("Interest\t");
amortTextArea.append("Principle\t");
amortTextArea.append("Balance\n");
NewLoan = Loan;
for (int i = 1; i <= totalMonths; i++)
NewMonthlyInterest = MonthlyInterest * NewLoan;
Reduction = monthlyPayment - NewMonthlyInterest;
NewLoan = NewLoan - Reduction;
amortTextArea.append(" " + i +"\t");
amortTextArea.append(" " + currency.format(monthlyPayment) + "\t");
amortTextArea.append(" " + currency.format(NewMonthlyInterest)+ "\t");
amortTextArea.append(" " + currency.format(Reduction) + "\t");
amortTextArea.append(" " + currency.format(NewLoan) + "\n");
//resets fields if loan amount is less than zero
if((Loan <= 0 || Term <= 0 || Interest <= 0))
paymentField.setText("");
amortTextArea.setText("");
}//end calcualtion method
//clear method
void Clear()
amountField.setText("");
amountField.requestFocusInWindow();
termField.setText("");
rateField.setText("");
paymentField.setText("");
amortTextArea.setText("");
}//end of clear method
//main method
public static void main(String args[])
Workshop5 f = new Workshop5();
f.setTitle("Carol's Mortgage Calculator");
f.setBounds(200,100,800,800);
f.setResizable(false);
f.setVisible(true);
}//end of main method
//exit method
void Exit()
System.exit(0);
}//end of exit method
}//program end
My data file is called: "InterestData.dat" and only contains the following text:
5.35, 5.5, 5.75Ok, now I am getting this error message:
cannot resolve symbol method lenght()
Please help me out here, this is due tomorrow and I've been killing myself on it...
attaching program with revised code included, see beginning of calculation method line 250:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.* ;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.io.*;
import javax.swing.JOptionPane;
public class Workshop5 extends JFrame implements ActionListener
//declare gui components
//declare labels
JPanel contentPane = new JPanel();
JPanel graphPane = new JPanel();
JLabel instructionLabel = new JLabel();
JLabel amountLabel = new JLabel();
JLabel orLabel = new JLabel();
JLabel comboBoxLabel = new JLabel();
JLabel termLabel = new JLabel();
JLabel rateLabel = new JLabel();
JLabel calcLabel = new JLabel();
JLabel paymentLabel = new JLabel();
JLabel tableLabel = new JLabel();
//declare font object
Font labelFont = new Font("Tahoma", Font.PLAIN, 16);
//declare text fields
JTextField amountField = new JTextField(20);
JTextField termField = new JTextField(20);
JTextField rateField = new JTextField(20);
JTextField paymentField= new JTextField(20);
//declare combo box for loan selection
JComboBox comboBox = new JComboBox();
//declare button group and radio buttons
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton enterRadioButton = new JRadioButton("Enter amount, term, & rate", true);
JRadioButton selectRadioButton = new JRadioButton("Select a preset term/rate loan", false);
//declare button objects
JButton clearButton = new JButton();
JButton calcButton = new JButton();
JButton quitButton = new JButton();
//declare text area for amortization
JTextArea amortTextArea = new JTextArea();
JTextArea testTextArea = new JTextArea();
//declare scroll bar for amortization table
JScrollPane scrollPane = new JScrollPane(amortTextArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
public Workshop5()
instructionLabel.setText("Choose one of the following payment calculation options:");
instructionLabel.setFont(new Font("Tahoma",Font.PLAIN,16));
//adds both buttons to button group
buttonGroup.add(enterRadioButton);
buttonGroup.add (selectRadioButton);
enterRadioButton.setFont(labelFont);
enterRadioButton.setBackground(Color.WHITE);
enterRadioButton.setContentAreaFilled(false);
enterRadioButton.addActionListener(this); //adds action listener to enter radio button
orLabel.setText("OR");
orLabel.setFont(new Font("Tahoma",Font.BOLD,18));
selectRadioButton.setFont(labelFont);
selectRadioButton.setBackground(Color.WHITE);
selectRadioButton.setContentAreaFilled(false);
selectRadioButton.addActionListener (this); //adds action listener to select radio button
amountLabel.setText("Enter mortgage amount");
amountLabel.setFont(new Font("Tahoma", Font.PLAIN,16));
amountField.requestFocusInWindow();
termLabel.setText("Enter term length in years:");
termLabel.setFont(new Font("Tahoma", Font.PLAIN,14));
rateLabel.setText("Enter interest rate:");
rateLabel.setFont(new Font("Tahoma", Font.PLAIN,14));
comboBoxLabel.setText("Select a loan:");
comboBoxLabel.setFont(new Font("Tahoma", Font.PLAIN,14));
comboBox.setBackground(new Color(255,255,255));
comboBox.setFont(new Font("Tahoma", Font.PLAIN, 14));
comboBox.setEnabled(false);
ComboBox();
calcLabel.setText("Press Calculate button to determine monthly payment.");
calcLabel.setFont(new Font("Tahoma", Font.PLAIN, 16));
calcButton.setText("Calculate");
calcButton.setFont(new Font("Tahoma", Font.BOLD, 14));
calcButton.setBackground(new Color(202,255,112));
calcButton.addActionListener(this);
//define monthly payment label
paymentLabel.setText("Monthly payment:");
paymentLabel.setFont(new Font("Tahoma", Font.PLAIN, 16));
//define monthly payment text field
paymentField.setFont (new Font("Tahoma", Font.BOLD,16));
paymentField.setBackground(new Color(255,255,255));
paymentField.setEditable(false);
//define clear button
clearButton.setText("Clear");
clearButton.setFont(new Font("Tahoma", Font.BOLD,14));
clearButton.setBackground(new Color(202,255,112));
clearButton.addActionListener(this);
//define quit button
quitButton.setText("Quit");
quitButton.setFont(new Font("Tahoma", Font.BOLD,14));
quitButton.setBackground(new Color(202,255,112));
quitButton.addActionListener(this);
//define label for amortization table
tableLabel.setText ("Amoritization Table");
tableLabel.setFont(new Font("Tahoma", Font.BOLD, 16));
graphPane.setBackground(Color.WHITE);
//add components to content
getContentPane().add(contentPane);
contentPane.setLayout(null);
addComponent(contentPane, instructionLabel, 80,10,450,26);
addComponent(contentPane, enterRadioButton, 30,40,220,30);
addComponent(contentPane, orLabel, 280,40,100,30);
addComponent(contentPane, selectRadioButton, 335,40,350,30);
addComponent(contentPane, amountLabel, 100,80,220,26);
addComponent(contentPane, amountField, 300,80,150,26);
addComponent(contentPane, termLabel, 15,125,200,30);
addComponent(contentPane, termField, 195,125,125,30);
addComponent(contentPane, rateLabel, 62,160,200,30);
addComponent(contentPane, rateField, 195,165,125,30);
addComponent(contentPane, comboBoxLabel, 400,125,200,26);
addComponent(contentPane, comboBox, 400,155,150,30);
addComponent(contentPane, calcLabel, 100,200,400,30);
addComponent(contentPane, calcButton, 250,240,100,30);
addComponent(contentPane, paymentLabel, 150,285,200,30);
addComponent(contentPane, paymentField, 300,285,100,30);
addComponent(contentPane, clearButton, 100,330,100,30);
addComponent(contentPane, quitButton, 400,330,100,30);
addComponent(contentPane, tableLabel, 200,370,300,26);
addComponent(contentPane, scrollPane, 10,400,450,360);
addComponent(contentPane, graphPane, 475,400,305,360);
//add window listener to close window when user presses X
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
pack();
//method to add components
private void addComponent(Container container, Component c, int x, int y, int width, int height)
c.setBounds(x, y, width, height);
container.add(c);
//action performed method
public void actionPerformed(ActionEvent event)
Object source = event.getSource();
if (source == calcButton)
Calculate();
if (source == clearButton)
Clear();
if (source == quitButton)
Exit();
//defines active area based on user selection of mortgage calculation method
//if user chooses to enter the mortgage manually, combo box fields are inactive
if (source == enterRadioButton)
comboBox.setEnabled(false);
termField.setEnabled(true);
termField.setEditable(true);
rateField.setEnabled(true);
rateField.setEditable(true);
amountField.setText ("");
amountField.requestFocusInWindow();
termField.setText("");
rateField.setText("");
paymentField.setText ("");
amortTextArea.setText("");
//if user chooses to select from a preset mortgage, rate and term fields are inactive
if (source == selectRadioButton)
comboBox.setEnabled(true);
termField.setEnabled(false);
termField.setEditable(false);
rateField.setEnabled (false);
rateField.setEditable(false);
amountField.setText("");
amountField.requestFocusInWindow();
termField.setText ("");
rateField.setText("");
paymentField.setText("");
amortTextArea.setText("");
}//end of action performed method
//combo box method
public void ComboBox()
String[] LoanArray = {" 7 years at 5.35 %", " 15 years at 5.50 %", " 30 years at 5.75 %"};
for (int i = 0; i < LoanArray.length; i++)
comboBox.addItem(LoanArray);
}//end combo box method
//calculation method
void Calculate()
//resets fields
paymentField.setText("");
amortTextArea.setText("");
//calculation variables
NumberFormat currency = NumberFormat.getCurrencyInstance();
//declare input stream object
InputStream istream;
//create a file object to refer to the outside file
File interestData = new File("InterestFile.dat");
//assign instream to the new file object
istream = new FileInputStream(interestData);
try
StringBuffer sb = new StringBuffer();
BufferedReader in = new BufferedReader(new FileReader(interestData));
String line = "";
while((line = in.readLine()) != null)
sb.append(line);
in.close();
String fileData = sb.toString();
String[] splitData = fileData.split(", ");
double [] yearlyInterestArray = new double[splitData.length()];
for(int j = 0; j < splitData.length(); j++)
yearlyInterestArray[j] = new Double(splitData[j]).doubleValue();
catch (IOException e)
JOptionPane.showMessageDialog(null, "File does not exist." + e.getMessage());
int [] termArray = {7, 15, 30}; //array of years
double [] yearlyInterestArray = { 5.35, 5.5, 5.75}; //array of interest
int totalMonths = 0; //total months
double Loan = 0.0; //amount of loan
double MonthlyInterest = 0.0; //monthly interest rate
double Payment = 0.0; //calculate payment
double monthlyPayment = 0.0; //calculate monthly payment
double Interest = 0.0; //variable for Interest Array input
int Term = 0; //variable for Term Array input
double NewMonthlyInterest = 0.0; //new interest amount
double NewLoan = 0.0; //new loan amount
double Reduction = 0.0; //principle reduction
//validate input
try
Loan = Double.parseDouble(amountField.getText());
catch (NumberFormatException e)
JOptionPane.showMessageDialog(null,"Invalid Entry. Please enter valid loan amount.", "Error", JOptionPane.WARNING_MESSAGE);
//resets input fields after error message
amountField.setText("");
amountField.requestFocusInWindow ();
//if select button is chosen
if (selectRadioButton.isSelected())
int index = comboBox.getSelectedIndex ();
Term = termArray[index];
Interest = yearlyInterestArray[index];
//if user chooses to enter mortgage information
else
if (enterRadioButton.isSelected())
//validates input
try
Term = Integer.parseInt(termField.getText());
catch (NumberFormatException e)
JOptionPane.showMessageDialog(null,"Invalid entry. Please enter valid term length in years.", "Error",JOptionPane.WARNING_MESSAGE);
//clears fields after error message
termField.setText("");
termField.requestFocusInWindow();
try
Interest = Double.parseDouble(rateField.getText());
catch (NumberFormatException e)
JOptionPane.showMessageDialog(null,"Invalid entry. Please enter valid rate (without percent symbol).","Error",JOptionPane.WARNING_MESSAGE);
//clears fields after error message
rateField.setText("");
rateField.requestFocusInWindow();
//perform calculations
if (Loan > 0)
Loan = Double.parseDouble(amountField.getText ());
MonthlyInterest = (Interest / 12)/100;
totalMonths = Term * 12;
monthlyPayment = Loan * MonthlyInterest *(Math.pow ((1 + MonthlyInterest), totalMonths)/(Math.pow((1 + MonthlyInterest), totalMonths)-1));
paymentField.setText("" + currency.format(monthlyPayment));
//send information to amortization text area
amortTextArea.append("Number\t");
amortTextArea.append(" Amount\t");
amortTextArea.append("Interest\t");
amortTextArea.append("Principle\t");
amortTextArea.append("Balance\n");
NewLoan = Loan;
for (int i = 1; i <= totalMonths; i++)
NewMonthlyInterest = MonthlyInterest * NewLoan;
Reduction = monthlyPayment - NewMonthlyInterest;
NewLoan = NewLoan - Reduction;
amortTextArea.append(" " + i +"\t");
amortTextArea.append (" " + currency.format(monthlyPayment) + "\t");
amortTextArea.append(" " + currency.format(NewMonthlyInterest)+ "\t");
amortTextArea.append(" " + currency.format(Reduction) + "\t");
amortTextArea.append(" " + currency.format(NewLoan) + "\n");
//resets fields if loan amount is less than zero
if((Loan <= 0 || Term <= 0 || Interest <= 0))
paymentField.setText("");
amortTextArea.setText("");
}//end calcualtion method
//clear method
void Clear()
amountField.setText("");
amountField.requestFocusInWindow();
termField.setText("");
rateField.setText("");
paymentField.setText("");
amortTextArea.setText("");
}//end of clear method
//main method
public static void main(String args[])
Workshop5 f = new Workshop5();
f.setTitle("Carol's Mortgage Calculator");
f.setBounds(200,100,800,800);
f.setResizable(false);
f.setVisible(true);
}//end of main method
//exit method
void Exit()
System.exit(0);
}//end of exit method
}//program end -
Need help or someone to edit .fla file
Need help or someone to edit .fla file
The .fla file I want to edit is the flash in header at www.ridinggigistyle.com I want to remove the event button titled Boot Camp. I can send .fla file and request that edited changes be sent back to me. Direct email [email protected]
-
Need help in Overwriting result in text file
Sorry, im new to Labview.
My situation is
this.
I can store the name and the result and i have the index.
Now
I'm having a problem on overwriting result i had in text file.
I
give you an example.
Now in my text file i have a name of a
student and the result.
i wan to overwrite the result of the
student.(this is just an example.)
can someone guide me please?
really
need help as this is my school project.
Thanks!
i'll attach my program i have done soon.you got the wrong idea.
i do not want to replace the file to a new file.
what i want was to edit the exsiting file if the same name appear twice.
Example:
in my text file i have already had the name of example Tom and result 80
and now i input the same name and diff result.
i wan was to overwrite the result.
my project was similar to this here is my attachment of my project
Attachments:
LOCATOR.vi 19 KB
TESTCAR.txt 1 KB -
Hi! Need help desperately! I downloaded Reader 9.1 and it won't install. Get the error message "Error 1606. Could not access network location %APPDATA%\. Thanks!
Hello again:
I don't mean to step on any toes here but it seems that the root of the problem is being ignored. I offered before that the problems you are experiencing are due to inconsistencies in the Windows registry. While I could speculate on the various methods of how this came to be, I don't have that kind of time nor is there a need. More than likely it is some type of malware that has infected the system but that should be explored on more suited forums such as MajorGeeks.com or BleepingComputer.com. The way I see it, you have a few paths you can take, all of which will lead you to the same place: no more error 1606 and a functional Reader:
Option 1: Run the Windows Live OneCare free safety scanner to resolve any broken registry links it can find.
Option 2: Manually fix the "broken" registry entries in the Windows registry. While I understand Pat's hesitation to do so, the truth of the matter is it will resolve the immediate issue. Once the APPDATA path is corrected, you should then be able to install Reader.
Option 3: Restore Windows to a previous date using System Restore located in Help & Support of the Start menu.
Option 4: [SLEDGE HAMMER] Reinstall Windows over the top of the current installation (NO FORMAT). Use this option only if you have no other recourse. The potential to lose all personal data and settings is high if this option is not performed correctly. If this option is chosen, be certain to use a "setup" profile (username) different than your current username. If you only have a manufacturer's system restore disk rather than a Windows CD/DVD, you may not have the option NOT to format which WILL result in the loss of personal data. This option should only be performed by someone who has previous knowledge of such or is willing to learn even at the expense of data loss/time/effort.
I HIGHLY recommend that any and all personal data is backed up to an external location such as a USB key, CD/DVD, or external hard drive prior to performing option 2 or 4 above. If you would like any of the options explained in greater detail, feel free to ask and I will oblige.
Best of success!
Michael -
A need a function module to read a file and write back into it
Hello ,
My requirement is to provide the path to a file , read the file contents and then write back to it.
Thanks,
Mridu.Hi ,
Use combination of these three FM's , A nice documentation is given for them by SAP .
1.) F4_FILENAME
2.) GUI_UPLOAD
3.) GUI_DOWNLOAD
revert back if any queries
reward points if helpful -
NEED HELP APP PROBLEM PLWASE READ
Ok so basically when I go to a free app I try to re install it says to confirm or verify and when I click on it it takes me to my credit card and when I type in the right info and I have money in my account it declined me and then tells me to try again later after I've tried like 10 times its really frustrating and confusing and I need help please reply on what im supposed to do please it even does this for when I try to update apps aswell
I have created an apple id with a credit card. When I download a free app, I am asked for my apple id password. I am not asked for a credit card. There is a setting for login out of your apple id. Perhaps you should log out. So things get reset.
you can create an apple id without a credit card.
Create an iTunes Store, App Store, or iBooks Store account without a credit card or other payment method - Apple Suppor…
Robert -
there is no camera raw support for Leaf Aptus-II 8? I need to be able to read MOS files
OS X Mountain Lion: Supported digital camera RAW formats seems to indicate that you are correct.
Are you are trying to provide Apple - Aperture - Feedback or Apple - iPhoto - Feedback?
If so, use you can send direct feedback via the above link(s). You will not likely get a direct response, but you can be certain that the responsible Apple people will see your input for consideration in future product development.
If you seek a solution rather than to offer feedback, or until Apple supports your needs within the Mac OS, check whether Mamiya's Leaf RAW converter 1.2.6 for Mac meets your needs.
Message was edited by: EZ Jim
Mac OSX 10.8.4
Maybe you are looking for
-
Startup is very slow in Yosemite.
Hi, I am running a MacBook Pro (17-inch, Early 2009) and I recently upgraded to Yosemite. Since then, startups seem to take an eternity and among other frustrating minor issues, when it automatically goes into sleep mode, sometimes it won't wake up a
-
Hi all, I want to add my page to a workset, there is a option coming to add it. But I am not able to add this one. Can anyone help me out why it is happening to me? Please suggest. Thanks sanket
-
HELP Create Extenstion using JFrame instead of JPanel (10.1.3 Release 3)
Hi, I manage to create a custom GUI editor in JDev but if i switch it to JFrame, JDev GUI Designer display nothing but an invinsible frame. I'm using sample from customeditor in extension sdk Any ideas ? Thanks
-
i am new to Adobe SDK development but not to C++. nothing is ever easy but getting the adobe examples to complie is bordering on the impossible. i need some help. SDK CS5.5 example project opens in visual studio 2008 pro (on win7, 64bit) but won't co
-
Hi All, When I goto Environment -> Cache Notification in ID, I get the following error: <b>"Unable to detemine the name of the central adapter engine from the SLD. Notification to the central adapter engine are therefore listed using the technical na