Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.75 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.EventQueue;
  3. import java.awt.GridBagConstraints;
  4. import java.awt.GridBagLayout;
  5. import java.awt.Insets;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTabbedPane;
  10. import javax.swing.JTextField;
  11. import javax.swing.UIManager;
  12. import javax.swing.UnsupportedLookAndFeelException;
  13. import javax.swing.event.ChangeEvent;
  14. import javax.swing.event.ChangeListener;
  15. import javax.swing.event.DocumentEvent;
  16. import javax.swing.event.DocumentListener;
  17.  
  18. public class UnitConverter {
  19. private int index = 0;
  20. private final Double mm = 1.0, cm = 0.1, m = 0.001, km = 1.0e-6, in = 0.0393701, ft = 0.003280841666667,
  21. yds = 0.0010936138888889999563, mi = 6.213715277778408823e-7;
  22. private final Double joul = 1.0, kjoul = 0.001, fp = 0.737562, wh = 0.000277778, cal = 0.239006, kcal = 0.000239006,
  23. elvo = 6.242e18, kwh = 2.777996144091666656e-7;
  24. public Double[] conversions = new Double[] { mm, cm, m, km, in, ft, yds, mi, joul, kjoul, fp, wh, cal, kcal, elvo,
  25. kwh };
  26. private JTextField[] textFields = new JTextField[16];
  27. private Double[] results = new Double[16];
  28.  
  29. public static void main(String[] args) {
  30. new UnitConverter();
  31. }
  32.  
  33. public UnitConverter() {
  34. EventQueue.invokeLater(new Runnable() {
  35. @Override
  36. public void run() {
  37.  
  38. try {
  39. UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  40. } catch (ClassNotFoundException e) {
  41. // TODO Auto-generated catch block
  42. e.printStackTrace();
  43. } catch (InstantiationException e) {
  44. // TODO Auto-generated catch block
  45. e.printStackTrace();
  46. } catch (IllegalAccessException e) {
  47. // TODO Auto-generated catch block
  48. e.printStackTrace();
  49. } catch (UnsupportedLookAndFeelException e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. }
  53. JFrame frame = new JFrame("Converter");
  54. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  55. frame.setLayout(new BorderLayout());
  56.  
  57. TabbedPane tabbedWindow = new TabbedPane();
  58.  
  59. frame.add(tabbedWindow); // add windows to JFrame
  60. frame.pack();
  61. frame.setLocationRelativeTo(null);
  62. frame.setVisible(true);
  63. }
  64. });
  65. }
  66.  
  67. public class TabbedPane extends JTabbedPane {
  68. /**
  69. *
  70. */
  71. private static final long serialVersionUID = -707202274802096937L;
  72.  
  73. public TabbedPane() {
  74.  
  75. setTabPlacement(JTabbedPane.TOP);
  76. setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
  77. TestPane dist = new TestPane(new String[] { "millimeters", "centimeters", "meters", "Kilometers", "inches",
  78. "feet", "yards", "miles" });
  79.  
  80. addTab("Distance", null, dist, "Converts Distance Units");
  81. TestPane eng = new TestPane(new String[] { "joules", "Kilojoules", "foot-pound", "Watt hour", "calories",
  82. "Kilocalories", "Electronvolt", "Kilowatt hour" });
  83.  
  84. addTab("Energy", null, eng, "Converts Energy Units");
  85.  
  86. addTabListener(this);
  87.  
  88. }
  89.  
  90. }
  91.  
  92. public void addTabListener(JTabbedPane window) {
  93.  
  94. window.addChangeListener(new ChangeListener() {
  95. public void stateChanged(ChangeEvent e) {
  96. System.out.println("Tab=" + window.getSelectedIndex());
  97. }
  98. });
  99.  
  100. }
  101.  
  102. public class TestPane extends JPanel {
  103.  
  104. /**
  105. *
  106. */
  107. private static final long serialVersionUID = -5066604980586238227L;
  108.  
  109. // SetUP UI for individual panel
  110. public TestPane(String[] label) {
  111.  
  112. setLayout(new GridBagLayout());
  113. GridBagConstraints gbc = new GridBagConstraints();
  114. gbc.gridx = 0;
  115. gbc.gridy = 0;
  116. gbc.insets = new Insets(20, 4, 4, 4);
  117.  
  118. add(new JLabel(label[0]), gbc);
  119. gbc.gridx++;
  120. add(new JLabel(label[1]), gbc);
  121. gbc.gridx++;
  122. add(new JLabel(label[2]), gbc);
  123. gbc.gridx++;
  124. add(new JLabel(label[3]), gbc);
  125. gbc.gridx = 0;
  126.  
  127. gbc.gridy++; // new row
  128. gbc.fill = GridBagConstraints.HORIZONTAL;
  129. gbc.insets = new Insets(4, 4, 4, 4);
  130.  
  131. add(textFields[index] = new TextUnit(), gbc);
  132. gbc.gridx++;
  133. add(textFields[index] = new TextUnit(), gbc);
  134. gbc.gridx++;
  135. add(textFields[index] = new TextUnit(), gbc);
  136. gbc.gridx++;
  137. add(textFields[index] = new TextUnit(), gbc);
  138. gbc.gridx++;
  139. gbc.fill = GridBagConstraints.NONE;
  140. gbc.gridx = 0;
  141.  
  142. gbc.insets = new Insets(20, 4, 4, 4);
  143.  
  144. gbc.gridx = 0;
  145. gbc.gridy++;
  146. add(new JLabel(label[4]), gbc);
  147. gbc.gridx++;
  148. add(new JLabel(label[5]), gbc);
  149. gbc.gridx++;
  150. add(new JLabel(label[6]), gbc);
  151. gbc.gridx++;
  152. add(new JLabel(label[7]), gbc);
  153. gbc.insets = new Insets(4, 4, 40, 4);
  154.  
  155. gbc.gridx = 0;
  156. gbc.gridy++;
  157. gbc.fill = GridBagConstraints.HORIZONTAL;
  158. add(textFields[index] = new TextUnit(), gbc);
  159. gbc.gridx++;
  160. add(textFields[index] = new TextUnit(), gbc);
  161. gbc.gridx++;
  162. add(textFields[index] = new TextUnit(), gbc);
  163. gbc.gridx++;
  164. add(textFields[index] = new TextUnit(), gbc);
  165. gbc.gridx++;
  166.  
  167. }
  168.  
  169. // Custom text field class doubles as EventListener factory
  170. public class TextUnit extends JTextField {
  171. private int fieldIndex = index;
  172.  
  173. TextUnit() {
  174.  
  175. this.setColumns(10);
  176. JTextField text = this;
  177.  
  178. text.getDocument().addDocumentListener(new DocumentListener() { // listen for text
  179. public void changedUpdate(DocumentEvent e) {
  180. warn();
  181. }
  182.  
  183. public void removeUpdate(DocumentEvent e) {
  184. warn();
  185. }
  186.  
  187. public void insertUpdate(DocumentEvent e) {
  188. warn();
  189. }
  190.  
  191. public void warn() {
  192. System.out.println("The index is " + fieldIndex);
  193. Convert(fieldIndex); // display index to console
  194. }
  195. });
  196. index++; // increment index
  197. }
  198. }
  199. // Get action from selected textField
  200. // Distance Units: mm,cm,m,km,in,ft,yds,mi;
  201. // Energy Units: joul,kjoul,fp,wh,cal,kcal,elvo,kwh;
  202. public void Convert(int field) {
  203. if (textFields[field] == null) {
  204. textFields[field].setText("0.0");
  205. ;
  206. }
  207. try {
  208. switch (field) {
  209. case 0:
  210. ConvertPrint(field);
  211. break;
  212.  
  213. case 1:
  214. ConvertPrint(field);
  215. break;
  216. case 2:
  217. ConvertPrint(field);
  218. break;
  219. case 3:
  220. ConvertPrint(field);
  221. break;
  222. case 4:
  223. ConvertPrint(field);
  224. break;
  225. case 5:
  226. ConvertPrint(field);
  227. break;
  228. case 6:
  229. ConvertPrint(field);
  230. break;
  231. case 7:
  232. ConvertPrint(field);
  233. break;
  234. case 8:
  235. ConvertPrint(field);
  236. break;
  237. case 9:
  238. ConvertPrint(field);
  239. break;
  240. case 10:
  241. ConvertPrint(field);
  242. break;
  243. case 11:
  244. ConvertPrint(field);
  245. break;
  246. case 12:
  247. ConvertPrint(field);
  248. break;
  249. case 13:
  250. ConvertPrint(field);
  251. break;
  252. case 14:
  253. ConvertPrint(field);
  254. break;
  255. case 15:
  256. ConvertPrint(field);
  257. break;
  258. default:
  259. System.out.println("Index out of bounds");
  260. }
  261. } catch (Exception e) {
  262. System.out.println("invalid input");
  263. }
  264. }
  265.  
  266. //
  267. public void ConvertPrint(int field) {
  268.  
  269. if (field < 8) {
  270. results[0] = Double.parseDouble(textFields[field].getText())* conversions[field];
  271.  
  272. for (int j = 0; j < 8; j++) {
  273. if (j != field) {
  274. if (textFields[field].getText() != "") {
  275. String text = String.format("%16.2E", results[0] * conversions[j]);
  276. textFields[j].setText(text);
  277. } else {
  278. //textFields[j].setText("0.00000000E+00");
  279. }
  280. }
  281. }
  282. } else {
  283. results[8] = Double.parseDouble(textFields[field].getText())* conversions[field];
  284.  
  285. for (int j = 8; j < 16; j++) {
  286. if (j != field) {
  287. if (textFields[field].getText() != "") {
  288. String text = String.format("%16.2E", results[8] * conversions[j]);
  289. textFields[j].setText(text);
  290. } else {
  291. //textFields[j].setText("0.00000000E+00");
  292. }
  293. }
  294. }
  295. }
  296. }
  297. }
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement