package de.must.util;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.text.*;
import java.math.*;
import javax.swing.table.*;
public class CreditConversion extends JPanel
implements PropertyChangeListener
{
//Values for the fields
private double creditsEarned;
private double outOf, ARHSCredits, creditTotal;
private int studentNumber;
private double gradeLevel;
private String studentName;
JButton calcButton = null;
private static final boolean noteNotMatchingBookmarks = true;
JCheckBox halfButton;
private static boolean isFullScreen = false;
private static GraphicsDevice device;
//Labels to identify the fields
private JLabel studentNumberLabel;
private JLabel studentNameLabel;
private JLabel creditTotalLabel;
private JLabel creditsEarnedLabel;
private JLabel outOfLabel;
private JLabel gradeLevelLabel;
private JLabel ARHSCreditsLabel;
//String for the labels
private String[] classStrings = {"1/2 Freshmen", "Freshmen","Sophmore","Junior","Senior"};
private String studentNumberString = "Student Number: ";
private String studentNameString = "Student Name: ";
private String creditTotalString = "ARHS Total Credits: ";
private static String creditsEarnedString = "Credits Earned: ";
private static String outOfString = "Credits Possible: ";
private static String gradeLevelString = "Grade Level at ARHS: ";
private static String ARHSCreditsString = "Credits Needed to Graduate: ";
//Fields for data entry
private JFormattedTextField studentNumberField;
private JFormattedTextField studentNameField;
private JFormattedTextField creditTotalField;
private JFormattedTextField creditsEarnedField;
private JFormattedTextField outOfField;
private JFormattedTextField gradeLevelField;
private JFormattedTextField ARHSCreditsField;
//Formats to format and parse numbers
private NumberFormat studentNameFormat;
private NumberFormat studentNumberFormat;
private NumberFormat creditTotalFormat;
private NumberFormat creditsEarnedFormat;
private NumberFormat outOfFormat;
private NumberFormat ARHSCreditsFormat;
public CreditConversion(JFrame frame)
{
super(new BorderLayout());
double creditsNeeded = computeCredits(creditsEarned, outOf, gradeLevel);
calcButton = new JButton("Calculate");
halfButton = new JCheckBox("Half a Year?");
halfButton.setSelected(false);
JComboBox classList = new JComboBox(classStrings);
creditTotalFormat = NumberFormat.getNumberInstance();
creditTotalFormat.setMaximumFractionDigits(1);
ARHSCreditsFormat = NumberFormat.getNumberInstance();
ARHSCreditsFormat.setMaximumFractionDigits(1);
//Create the labels.
studentNameLabel = new JLabel(studentNameString);
studentNumberLabel = new JLabel(studentNumberString);
creditTotalLabel = new JLabel(creditTotalString);
creditsEarnedLabel = new JLabel(creditsEarnedString);
outOfLabel = new JLabel(outOfString);
gradeLevelLabel = new JLabel(gradeLevelString);
ARHSCreditsLabel = new JLabel(ARHSCreditsString);
//Create the text fields and set them up.
studentNameField = new JFormattedTextField(studentNameFormat);
studentNameField.setValue(studentName);
studentNameField.setColumns(10);
studentNameField.addPropertyChangeListener("value", this);
studentNumberField = new JFormattedTextField(studentNumberFormat);
studentNumberField.setValue(new Integer(studentNumber));
studentNumberField.setColumns(10);
studentNumberField.addPropertyChangeListener("value", this);
creditsEarnedField = new JFormattedTextField(creditsEarnedFormat);
creditsEarnedField.setValue(new Double(creditsEarned));
creditsEarnedField.setColumns(10);
creditsEarnedField.addPropertyChangeListener("value", this);
outOfField = new JFormattedTextField(outOfFormat);
outOfField.setValue(new Double(outOf));
outOfField.setColumns(10);
outOfField.addPropertyChangeListener("value", this);
gradeLevelField = new JFormattedTextField();
gradeLevelField.setValue(new Integer(9));
gradeLevelField.setColumns(10);
gradeLevelField.addPropertyChangeListener("value", this);
ARHSCreditsField = new JFormattedTextField(ARHSCreditsFormat);
ARHSCreditsField.setValue(new Double(creditsNeeded));
ARHSCreditsField.setColumns(10);
ARHSCreditsField.setEditable(false);
ARHSCreditsField.setBackground(Color.black);
ARHSCreditsField.setForeground((Color.red));
creditTotalField = new JFormattedTextField(creditTotalFormat);
creditTotalField.setValue(new Double(creditTotal));
creditTotalField.setColumns(10);
creditTotalField.setEditable(false);
creditTotalField.setBackground(Color.black);
creditTotalField.setForeground((Color.cyan).darker());
//Tell accessibility tools about label/textfield pairs.
studentNameLabel.setLabelFor(creditsEarnedField);
studentNumberLabel.setLabelFor(creditsEarnedField);
creditTotalLabel.setLabelFor(creditTotalField);
creditsEarnedLabel.setLabelFor(creditsEarnedField);
outOfLabel.setLabelFor(outOfField);
gradeLevelLabel.setLabelFor(gradeLevelField);
ARHSCreditsLabel.setLabelFor(ARHSCreditsField);
//Lay out the labels in a panel.
JPanel labelPane = new JPanel(new GridLayout(0,1));
labelPane.add(studentNameLabel);
labelPane.add(studentNumberLabel);
labelPane.add(creditsEarnedLabel);
labelPane.add(outOfLabel);
labelPane.add(gradeLevelLabel);
labelPane.add(ARHSCreditsLabel);
labelPane.add(creditTotalLabel);
//Layout the text fields in a panel.
JPanel fieldPane = new JPanel(new GridLayout(0,1));
fieldPane.add(studentNameField);
fieldPane.add(studentNumberField);
fieldPane.add(creditsEarnedField);
fieldPane.add(outOfField);
fieldPane.add(classList);
fieldPane.add(halfButton);
fieldPane.add(ARHSCreditsField);
fieldPane.add(creditTotalField);
//Put the panels in this panel, labels on left,
//text fields on right.
setBorder(BorderFactory.createEmptyBorder(40, 40, 20, 20));
add(labelPane, BorderLayout.CENTER);
add(fieldPane, BorderLayout.LINE_END);
//add(halfButton, BorderLayout.NORTH);
add(calcButton, BorderLayout.SOUTH);
calcButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ARHSCredits = computeCredits(creditsEarned, outOf, gradeLevel);
ARHSCreditsField.setValue(new Double(ARHSCredits));
creditTotalField.setValue(new Double(creditTotal));
System.out.println(getCredits());
return;
}
});
halfButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(halfButton.isSelected() == true)
gradeLevel = (gradeLevel + (.5));
else
gradeLevel = (gradeLevel - (.5));
}
});
classList.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JComboBox cb = (JComboBox)e.getSource();
gradeLevel = cb.getSelectedIndex();
}
});
}
public JMenuBar createMenuBar()
{
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem, menuItem2;
//Create the menu bar.
menuBar = new JMenuBar();
//Build the first menu.
menu = new JMenu("File");
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription(
"");
menuBar.add(menu);
menuItem2 = new JMenuItem("New",
KeyEvent.VK_N);
menuItem2.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem = new JMenuItem("Print",
KeyEvent.VK_P);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_2, ActionEvent.ALT_MASK));
menu.add(menuItem2);
menu.add(menuItem);
menuItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent k)
{
//WordProcessing.createNewDocumentFromTemplate("creditConversion");
//WordProcessing.typeTextAtBookmark("studentName", studentName);
System.out.println(studentName);
//WordProcessing.typeTextAtBookmark("studentNumber", studentNumber);
System.out.println(studentNumber);
//WordProcessing.typeTextAtBookmark("creditsEarned", creditsEarned);
System.out.println(creditsEarned);
//WordProcessing.typeTextAtBookmark("remainingCredits", ARHSCredits);
System.out.println(ARHSCredits);
//WordProcessing.typeTextAtBookmark("totalCreditsNeeded", creditTotal);
//WordProcessing.printToPrinterToSelectByUserAndForget();
//WordProcessing.quitApplication();
//WordProcessing.exec();
System.out.println(getCredits());
}
});
/*menuItem2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent k)
{
Double nothing = new Double(0.0);
creditsEarned = 0.0;
creditsEarnedField.setValue(nothing);
outOf = 0.0;
outOfField.setValue(nothing);
ARHSCredits = 0.0;
ARHSCreditsField.setValue(nothing);
creditTotal = 0.0;
creditTotalField.setValue(nothing);
studentNumber = 0;
studentNumberField.setValue(new Integer(0));
gradeLevel = 0.0;
studentName = "";
studentNameField.setValue("");
}
});*/
return menuBar;
}
/** Called when a field's "value" property changes. */
public void propertyChange(PropertyChangeEvent e)
{
Object source = e.getSource();
if (source == creditsEarnedField)
{
creditsEarned = ((Number)creditsEarnedField.getValue()).doubleValue();
System.out.println(String.valueOf(creditsEarned));
}
else if (source == outOfField)
{
outOf = ((Number)outOfField.getValue()).doubleValue();
System.out.println(String.valueOf(outOf));
}
else if (source == studentNameField)
{
studentName = ((String)studentNameField.getValue());
System.out.println(studentName);
}
else if (source == studentNumberField)
{
studentNumber = ((Number)studentNumberField.getValue()).intValue();
System.out.println(String.valueOf(studentNumber));
}
}
private static void createAndShowGUI()
{
/*GraphicsEnvironment env = GraphicsEnvironment.
getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();*/
JFrame.setDefaultLookAndFeelDecorated(false);
//Create and set up the window.
JFrame frame = new JFrame("ARHS Credit Conversion");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new CreditConversion(frame);
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
CreditConversion list = new CreditConversion(frame);
frame.setJMenuBar(list.createMenuBar());
/*frame.setUndecorated(true);
frame.setIgnoreRepaint(false);
device.setFullScreenWindow(frame);*/
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
public double getCredits()
{
return creditTotal;
}
public double computeCredits(double myCreditsEarned, double myOutOf, double myGradeLevel)
{
double creditPercent, arhsCredits, arhsCreditsPossible=0, neededCredits=0.0;
if(myGradeLevel==0)
arhsCreditsPossible = 3;
else if(myGradeLevel==1)
arhsCreditsPossible = 6;
else if(myGradeLevel==1.5)
arhsCreditsPossible = 9;
else if(myGradeLevel==2)
arhsCreditsPossible = 12;
else if(myGradeLevel==2.5)
arhsCreditsPossible = 15;
else if(myGradeLevel==3)
arhsCreditsPossible = 18;
else if(myGradeLevel==3.5)
arhsCreditsPossible = 21;
else if(myGradeLevel==4)
arhsCreditsPossible = 24;
creditPercent = (myCreditsEarned/myOutOf);
arhsCredits = (creditPercent*arhsCreditsPossible);
neededCredits = (22.50 - arhsCredits);
creditTotal = arhsCredits;
return neededCredits;
}
}
There it is, I must be having a brain ****(passing gas) cause after your last post I looked around at all my variable definitions and didn't see them getting reset. Although I think thats what happening but I'm just not seeing it. Gah, I feel like such a newb.... Also, I'm not near completion so this probably isn't the most efficient program on he planet but I hope to make it much better.