Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.EventQueue;
- import java.awt.GridBagConstraints;
- import java.awt.GridBagLayout;
- import java.awt.Insets;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JTabbedPane;
- import javax.swing.JTextField;
- import javax.swing.UIManager;
- import javax.swing.UnsupportedLookAndFeelException;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
- import javax.swing.event.DocumentEvent;
- import javax.swing.event.DocumentListener;
- public class UnitConverter {
- private int index = 0;
- private final Double mm = 1.0, cm = 0.1, m = 0.001, km = 1.0e-6, in = 0.0393701, ft = 0.003280841666667,
- yds = 0.0010936138888889999563, mi = 6.213715277778408823e-7;
- private final Double joul = 1.0, kjoul = 0.001, fp = 0.737562, wh = 0.000277778, cal = 0.239006, kcal = 0.000239006,
- elvo = 6.242e18, kwh = 2.777996144091666656e-7;
- public Double[] conversions = new Double[] { mm, cm, m, km, in, ft, yds, mi, joul, kjoul, fp, wh, cal, kcal, elvo,
- kwh };
- private JTextField[] textFields = new JTextField[16];
- private Double[] results = new Double[16];
- public static void main(String[] args) {
- new UnitConverter();
- }
- public UnitConverter() {
- EventQueue.invokeLater(new Runnable() {
- @Override
- public void run() {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InstantiationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (UnsupportedLookAndFeelException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- JFrame frame = new JFrame("Converter");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setLayout(new BorderLayout());
- TabbedPane tabbedWindow = new TabbedPane();
- frame.add(tabbedWindow); // add windows to JFrame
- frame.pack();
- frame.setLocationRelativeTo(null);
- frame.setVisible(true);
- }
- });
- }
- public class TabbedPane extends JTabbedPane {
- /**
- *
- */
- private static final long serialVersionUID = -707202274802096937L;
- public TabbedPane() {
- setTabPlacement(JTabbedPane.TOP);
- setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
- TestPane dist = new TestPane(new String[] { "millimeters", "centimeters", "meters", "Kilometers", "inches",
- "feet", "yards", "miles" });
- addTab("Distance", null, dist, "Converts Distance Units");
- TestPane eng = new TestPane(new String[] { "joules", "Kilojoules", "foot-pound", "Watt hour", "calories",
- "Kilocalories", "Electronvolt", "Kilowatt hour" });
- addTab("Energy", null, eng, "Converts Energy Units");
- addTabListener(this);
- }
- }
- public void addTabListener(JTabbedPane window) {
- window.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent e) {
- System.out.println("Tab=" + window.getSelectedIndex());
- }
- });
- }
- public class TestPane extends JPanel {
- /**
- *
- */
- private static final long serialVersionUID = -5066604980586238227L;
- // SetUP UI for individual panel
- public TestPane(String[] label) {
- setLayout(new GridBagLayout());
- GridBagConstraints gbc = new GridBagConstraints();
- gbc.gridx = 0;
- gbc.gridy = 0;
- gbc.insets = new Insets(20, 4, 4, 4);
- add(new JLabel(label[0]), gbc);
- gbc.gridx++;
- add(new JLabel(label[1]), gbc);
- gbc.gridx++;
- add(new JLabel(label[2]), gbc);
- gbc.gridx++;
- add(new JLabel(label[3]), gbc);
- gbc.gridx = 0;
- gbc.gridy++; // new row
- gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.insets = new Insets(4, 4, 4, 4);
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- gbc.fill = GridBagConstraints.NONE;
- gbc.gridx = 0;
- gbc.insets = new Insets(20, 4, 4, 4);
- gbc.gridx = 0;
- gbc.gridy++;
- add(new JLabel(label[4]), gbc);
- gbc.gridx++;
- add(new JLabel(label[5]), gbc);
- gbc.gridx++;
- add(new JLabel(label[6]), gbc);
- gbc.gridx++;
- add(new JLabel(label[7]), gbc);
- gbc.insets = new Insets(4, 4, 40, 4);
- gbc.gridx = 0;
- gbc.gridy++;
- gbc.fill = GridBagConstraints.HORIZONTAL;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- add(textFields[index] = new TextUnit(), gbc);
- gbc.gridx++;
- }
- // Custom text field class doubles as EventListener factory
- public class TextUnit extends JTextField {
- private int fieldIndex = index;
- TextUnit() {
- this.setColumns(10);
- JTextField text = this;
- text.getDocument().addDocumentListener(new DocumentListener() { // listen for text
- public void changedUpdate(DocumentEvent e) {
- warn();
- }
- public void removeUpdate(DocumentEvent e) {
- warn();
- }
- public void insertUpdate(DocumentEvent e) {
- warn();
- }
- public void warn() {
- System.out.println("The index is " + fieldIndex);
- Convert(fieldIndex); // display index to console
- }
- });
- index++; // increment index
- }
- }
- // Get action from selected textField
- // Distance Units: mm,cm,m,km,in,ft,yds,mi;
- // Energy Units: joul,kjoul,fp,wh,cal,kcal,elvo,kwh;
- public void Convert(int field) {
- if (textFields[field] == null) {
- textFields[field].setText("0.0");
- ;
- }
- try {
- switch (field) {
- case 0:
- ConvertPrint(field);
- break;
- case 1:
- ConvertPrint(field);
- break;
- case 2:
- ConvertPrint(field);
- break;
- case 3:
- ConvertPrint(field);
- break;
- case 4:
- ConvertPrint(field);
- break;
- case 5:
- ConvertPrint(field);
- break;
- case 6:
- ConvertPrint(field);
- break;
- case 7:
- ConvertPrint(field);
- break;
- case 8:
- ConvertPrint(field);
- break;
- case 9:
- ConvertPrint(field);
- break;
- case 10:
- ConvertPrint(field);
- break;
- case 11:
- ConvertPrint(field);
- break;
- case 12:
- ConvertPrint(field);
- break;
- case 13:
- ConvertPrint(field);
- break;
- case 14:
- ConvertPrint(field);
- break;
- case 15:
- ConvertPrint(field);
- break;
- default:
- System.out.println("Index out of bounds");
- }
- } catch (Exception e) {
- System.out.println("invalid input");
- }
- }
- //
- public void ConvertPrint(int field) {
- if (field < 8) {
- results[0] = Double.parseDouble(textFields[field].getText())* conversions[field];
- for (int j = 0; j < 8; j++) {
- if (j != field) {
- if (textFields[field].getText() != "") {
- String text = String.format("%16.2E", results[0] * conversions[j]);
- textFields[j].setText(text);
- } else {
- //textFields[j].setText("0.00000000E+00");
- }
- }
- }
- } else {
- results[8] = Double.parseDouble(textFields[field].getText())* conversions[field];
- for (int j = 8; j < 16; j++) {
- if (j != field) {
- if (textFields[field].getText() != "") {
- String text = String.format("%16.2E", results[8] * conversions[j]);
- textFields[j].setText(text);
- } else {
- //textFields[j].setText("0.00000000E+00");
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement