You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

427 lines
13 KiB

4 years ago
  1. package MeinBudgetView;
  2. import java.awt.EventQueue;
  3. import javax.swing.JFrame;
  4. import javax.swing.JPanel;
  5. import javax.swing.border.EmptyBorder;
  6. import javax.swing.JTextField;
  7. import java.awt.Image;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.KeyEvent;
  11. import java.awt.event.KeyListener;
  12. import javax.swing.ImageIcon;
  13. import javax.swing.JButton;
  14. import javax.swing.JLabel;
  15. import javax.swing.JOptionPane;
  16. import java.awt.Font;
  17. import javax.swing.JComboBox;
  18. import javax.swing.JTextArea;
  19. import java.awt.Color;
  20. import javax.swing.JSeparator;
  21. import javax.swing.JScrollPane;
  22. import javax.swing.JTable;
  23. import javax.swing.table.DefaultTableModel;
  24. import javax.swing.border.EtchedBorder;
  25. import javax.swing.border.MatteBorder;
  26. import javax.swing.border.BevelBorder;
  27. import javax.swing.border.TitledBorder;
  28. import javax.swing.UIManager;
  29. import static javax.swing.JOptionPane.showMessageDialog;
  30. public class MeinGui extends JFrame implements ActionListener, KeyListener {
  31. //Variablen Initialisierung
  32. private JPanel contentPane;
  33. public static JTextField text1;
  34. public static JTextField text2;
  35. JLabel labelBudgetImage;
  36. JLabel labelExpensesImage;
  37. JLabel labelBalancetImage;
  38. JLabel labelSavingsImage;
  39. JLabel labelHauptImage;
  40. JButton senden;
  41. JButton berechne;
  42. JLabel leeren;
  43. JButton loeschen;
  44. JButton exit;
  45. JButton hinzufuegen;
  46. JButton erspartesLoeschen;
  47. public static JLabel budgetDispaly;
  48. public static JLabel expensesDisplay;
  49. public static JLabel balanceDisplay;
  50. public static JLabel savingsDisplay;
  51. public static double budget;
  52. public static double expenses;
  53. public static double balance;
  54. public static double erspartes;
  55. public static JTextField textExpensesName;
  56. public static JLabel ausgabenName;
  57. private static JLabel ausgabenBetrag;
  58. private static JLabel budgetBetrag;
  59. private static JTable myTable;
  60. public MeinGui() {
  61. //Erstellen der GUI
  62. setTitle("Budget");
  63. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  64. setBounds(100, 100, 900, 368);
  65. contentPane = new JPanel();
  66. contentPane.setBackground(Color.orange);
  67. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  68. setContentPane(contentPane);
  69. contentPane.setLayout(null);
  70. //"Berechne" Button wird erstellt und hinzugefuegt
  71. this.berechne = new JButton("Berechne");
  72. berechne.setBounds(78, 281, 110, 23);
  73. berechne.setToolTipText("");
  74. contentPane.add(berechne);
  75. //"Senden" Button wird erstellt und hinzugefuegt
  76. this.senden = new JButton("Senden");
  77. senden.setBounds(78, 126, 110, 23);
  78. contentPane.add(senden);
  79. //Textfeld fuer das Budget wird erstellt und hinzugefuegt
  80. text1 = new JTextField();
  81. text1.setBounds(60, 97, 128, 20);
  82. contentPane.add(text1);
  83. text1.setColumns(10);
  84. //Textfeld fuer die Ausgaben wird erstellt und hinzugefuegt
  85. text2 = new JTextField();
  86. text2.setBounds(60, 250, 128, 20);
  87. contentPane.add(text2);
  88. text2.setColumns(10);
  89. //Logo der Applikation wird hinzugefuegt
  90. labelHauptImage = new JLabel("");
  91. labelHauptImage.setBounds(10, 0, 86, 61);
  92. Image image0 = new ImageIcon(this.getClass().getResource("/budgetapp.png")).getImage();
  93. labelHauptImage.setIcon(new ImageIcon(image0));
  94. labelHauptImage.setFont(new Font("Tahoma", Font.BOLD, 13));
  95. contentPane.add(labelHauptImage);
  96. //Einfuegen der Textbeschreibung fuer das Eingabefeld "Budget"
  97. JLabel budgetEingeben = new JLabel("Budget eingeben");
  98. budgetEingeben.setBounds(10, 72, 130, 20);
  99. budgetEingeben.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14));
  100. contentPane.add(budgetEingeben);
  101. //Einfuegen der "Budget" Ueberschrift fuer die Berechnungstabelle
  102. JLabel labelBudget = new JLabel("Budget");
  103. labelBudget.setBounds(255, 8, 46, 14);
  104. contentPane.add(labelBudget);
  105. //Einfuegen der "Ausgaben" Ueberschrift fuer die Berechnungstabelle
  106. JLabel labelExpenses = new JLabel("Expenses");
  107. labelExpenses.setBounds(390, 8, 56, 14);
  108. contentPane.add(labelExpenses);
  109. //Einfuegen der "Restbudget" Ueberschrift fuer die Berechnungstabelle
  110. JLabel labelBalance = new JLabel("Balance");
  111. labelBalance.setBounds(525, 8, 46, 14);
  112. contentPane.add(labelBalance);
  113. //Einfuegen der "Erspartes" Ueberschrift fuer die Berechnungstabelle
  114. JLabel labelSavings = new JLabel("Savings");
  115. labelSavings.setBounds(660, 8, 46, 14);
  116. contentPane.add(labelSavings);
  117. //Einfuegen des Images fuer "Budget" in der Tabelle
  118. labelBudgetImage = new JLabel("");
  119. labelBudgetImage.setBounds(255, 22, 46, 55);
  120. Image image1 = new ImageIcon(this.getClass().getResource("/Money-icon.png")).getImage();
  121. labelBudgetImage.setIcon(new ImageIcon(image1));
  122. contentPane.add(labelBudgetImage);
  123. //Einfuegen des Images fuer "Ausgaben" in der Tabelle
  124. labelExpensesImage = new JLabel("");
  125. labelExpensesImage.setBounds(400, 22, 46, 55);
  126. Image image2 = new ImageIcon(this.getClass().getResource("/wings-icon.png")).getImage();
  127. labelExpensesImage.setIcon(new ImageIcon(image2));
  128. contentPane.add(labelExpensesImage);
  129. //Einfuegen des Images fuer "Restbudget" in der Tabelle
  130. labelBalancetImage = new JLabel("New labelBalance");
  131. labelBalancetImage.setBounds(543, 22, 34, 55);
  132. Image image3 = new ImageIcon(this.getClass().getResource("/Money-icon.png")).getImage();
  133. labelBalancetImage.setIcon(new ImageIcon(image3));
  134. contentPane.add(labelBalancetImage);
  135. //Einfuegen des Images fuer "Erspartes" in der Tabelle
  136. labelSavingsImage = new JLabel("");
  137. labelSavingsImage.setBounds(660, 22, 46, 55);
  138. Image image4 = new ImageIcon(this.getClass().getResource("/savings-icon.png")).getImage();
  139. labelSavingsImage.setIcon(new ImageIcon(image4));
  140. contentPane.add(labelSavingsImage);
  141. //Einfuegen der Ueberschrift "Ausgaben" fuer das Textfeld Ausgaben
  142. JLabel budgetAusgeben = new JLabel("Ausgaben");
  143. budgetAusgeben.setBounds(10, 185, 80, 20);
  144. budgetAusgeben.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14));
  145. contentPane.add(budgetAusgeben);
  146. //Einfuegen der Ueberschrift "Leeren" fuer den loeschen Button
  147. this.leeren = new JLabel("Leeren");
  148. leeren.setBounds(317, 253, 115, 14);
  149. leeren.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14));
  150. contentPane.add(leeren);
  151. //Einfuegen und hinzufuegen des "Loeschen" Buttons
  152. this.loeschen = new JButton("L\u00F6schen");
  153. loeschen.setBounds(301, 281, 89, 23);
  154. contentPane.add(loeschen);
  155. //Einfuegen und hinzufuegen des "Exit" Buttons
  156. this.exit = new JButton("Exit\r\n");
  157. exit.setBounds(477, 281, 95, 23);
  158. contentPane.add(exit);
  159. //Einfuegen der Ueberschrift "Beenden" ueber dem "exit" Button
  160. JLabel beenden = new JLabel("Beenden");
  161. beenden.setBounds(491, 253, 81, 14);
  162. beenden.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14));
  163. contentPane.add(beenden);
  164. //Einfuegen des Platzhalters fuer die Budget Summe
  165. budgetDispaly = new JLabel("0.0 \u20AC");
  166. budgetDispaly.setBounds(255, 82, 86, 14);
  167. budgetDispaly.setFont(new Font("Tahoma", Font.BOLD, 12));
  168. contentPane.add(budgetDispaly);
  169. //Einfuegen des Platzhalters fuer die Asugaben Summe
  170. expensesDisplay = new JLabel("0.0 \u20AC");
  171. expensesDisplay.setBounds(390, 82, 110, 14);
  172. expensesDisplay.setFont(new Font("Tahoma", Font.BOLD, 12));
  173. contentPane.add(expensesDisplay);
  174. //Einfuegen des Platzhalters fuer die Restbudget Differenz
  175. balanceDisplay = new JLabel("0.0 \u20AC");
  176. balanceDisplay.setBounds(543, 82, 85, 14);
  177. balanceDisplay.setFont(new Font("Tahoma", Font.BOLD, 12));
  178. contentPane.add(balanceDisplay);
  179. //Einfuegen des Platzhalters fuer die Erspartes Summe
  180. savingsDisplay = new JLabel("0.0 \u20AC");
  181. savingsDisplay.setBounds(660, 82, 85, 14);
  182. savingsDisplay.setFont(new Font("Tahoma", Font.BOLD, 12));
  183. contentPane.add(savingsDisplay);
  184. //Einfuegen und hinzufuegen des "Hinzufuegen" Buttons
  185. this.hinzufuegen = new JButton("Hinzuf\u00fcgen");
  186. hinzufuegen.setBounds(660, 126, 100, 23);
  187. contentPane.add(hinzufuegen);
  188. //Einfuegen und hinzufuegen des "Erspartes loeschen" Buttons
  189. this.erspartesLoeschen = new JButton("Erspartes L\u00F6schen");
  190. erspartesLoeschen.setBounds(660, 160, 150, 23);
  191. contentPane.add(erspartesLoeschen);
  192. //Einfuegen des Textfeldes fuer die Beschreibung der Ausgabe
  193. textExpensesName = new JTextField();
  194. textExpensesName.setBounds(60, 221, 128, 20);
  195. textExpensesName.setToolTipText("");
  196. contentPane.add(textExpensesName);
  197. textExpensesName.setColumns(10);
  198. //Einfuegen der Ueberschrifft fuer das Textfeld der Ausgaben Beschreibung
  199. ausgabenName = new JLabel(" Name");
  200. ausgabenName.setBounds(10, 224, 46, 14);
  201. contentPane.add(ausgabenName);
  202. //Einfuegen der Ueberschrift fuer das Textfeld des Ausgabenbetrages
  203. ausgabenBetrag = new JLabel(" Betrag");
  204. ausgabenBetrag.setBounds(10, 253, 46, 14);
  205. contentPane.add(ausgabenBetrag);
  206. //Einfuegen der Ueberschrift fuer das Textfeld des Budgetbetrages
  207. budgetBetrag = new JLabel(" Betrag");
  208. budgetBetrag.setBounds(10, 100, 46, 14);
  209. contentPane.add(budgetBetrag);
  210. //Einfuegen einer Scrollleiste
  211. JScrollPane scrollPane_1 = new JScrollPane();
  212. scrollPane_1.setBounds(347, 126, 136, 88);
  213. contentPane.add(scrollPane_1);
  214. //Einfuegen der Tabelle fuer die Ausgaben
  215. myTable = new JTable();
  216. myTable.setColumnSelectionAllowed(true);
  217. myTable.setCellSelectionEnabled(true);
  218. myTable.setBorder(UIManager.getBorder("Tree.editorBorder"));
  219. myTable.setFont(new Font("Tahoma", Font.BOLD, 11));
  220. myTable.setModel(new DefaultTableModel(new Object[][] {}, new String[] { "Name", "Kosten" }) {
  221. Class[] columnTypes = new Class[] { String.class, Integer.class };
  222. public Class getColumnClass(int columnIndex) {
  223. return columnTypes[columnIndex];
  224. }
  225. boolean[] columnEditables = new boolean[] { false, false };
  226. public boolean isCellEditable(int row, int column) {
  227. return columnEditables[column];
  228. }
  229. });
  230. scrollPane_1.setViewportView(myTable);
  231. //Einfuegen der Actionlistener fuer die verschiedenen Buttons und Textfelder
  232. text1.addActionListener(this);
  233. text1.addKeyListener(this);
  234. text2.addActionListener(this);
  235. text2.addKeyListener(this);
  236. senden.addActionListener(this);
  237. senden.addKeyListener(this);
  238. berechne.addActionListener(this);
  239. berechne.addKeyListener(this);
  240. loeschen.addActionListener(this);
  241. loeschen.addKeyListener(this);
  242. exit.addActionListener(this);
  243. exit.addKeyListener(this);
  244. hinzufuegen.addActionListener(this);
  245. erspartesLoeschen.addActionListener(this);
  246. }
  247. @Override
  248. public void actionPerformed(ActionEvent ae) {
  249. if (ae.getSource() == this.exit) {
  250. exitButton();
  251. }
  252. else if (ae.getSource() == this.loeschen) {
  253. leeren();
  254. }
  255. else if(ae.getSource() == this.erspartesLoeschen) {
  256. loescheErspartes();
  257. }
  258. else if (ae.getSource() == this.senden && (text1 != null && text2 != null)) {
  259. try {
  260. budget = Double.parseDouble(text1.getText());
  261. }
  262. catch (Exception e) {
  263. showMessageDialog(null, "Sie muessen Ihr Budget eingeben!");
  264. }
  265. budgetDispaly.setText(setBudgetView());
  266. }
  267. else if (ae.getSource() == this.berechne && (text1 != null && text2 != null)) {
  268. try {
  269. DefaultTableModel tab = (DefaultTableModel) myTable.getModel();
  270. tab.addRow(new Object[] { (textExpensesName.getText()), Double.parseDouble(text2.getText()) });
  271. balance -= Double.parseDouble(text2.getText());
  272. expenses += Double.parseDouble(text2.getText());
  273. expensesDisplay.setText(setExpensesView());
  274. balanceDisplay.setText(setBalanceView());
  275. textExpensesName.setText(null);
  276. text2.setText(null);
  277. }
  278. catch (Exception e) {
  279. showMessageDialog(null, "Sie muessen Ihre Ausgabe eingeben!");
  280. }
  281. }
  282. else if (ae.getSource() == this.hinzufuegen) {
  283. erspartesHinzufuegen();
  284. }
  285. }
  286. private void loescheErspartes() {
  287. erspartes = 0.0;
  288. savingsDisplay.setText("0.0 \u20AC");
  289. }
  290. private void erspartesHinzufuegen() {
  291. erspartes += (budget - expenses);
  292. budget = 0.0;
  293. expenses = 0.0;
  294. balance = 0.0;
  295. text1.setText(null);
  296. text2.setText(null);
  297. budgetDispaly.setText("0.0 \u20AC");
  298. expensesDisplay.setText("0.0 \u20AC");
  299. balanceDisplay.setText("0.0 \u20AC");
  300. savingsDisplay.setText(Double.toString(erspartes) + " \u20AC");
  301. textExpensesName.setText(null);
  302. ((DefaultTableModel) myTable.getModel()).setRowCount(0);
  303. }
  304. public static void exitButton() {
  305. System.exit(0);
  306. }
  307. public static void leeren() {
  308. text1.setText("");
  309. text2.setText("");
  310. budgetDispaly.setText("0.0 �");
  311. expensesDisplay.setText("0.0 �");
  312. balanceDisplay.setText("0.0 �");
  313. textExpensesName.setText("");
  314. budget = 0.0;
  315. expenses = 0.0;
  316. balance = 0.0;
  317. text1.setText(null);
  318. text2.setText(null);
  319. budgetDispaly.setText("0.0 \u20AC");
  320. expensesDisplay.setText("0.0 \u20AC");
  321. balanceDisplay.setText("0.0 \u20AC");
  322. textExpensesName.setText(null);
  323. ((DefaultTableModel) myTable.getModel()).setRowCount(0);
  324. }
  325. public static String setBudgetView() {
  326. String result = budget + " �";
  327. return result;
  328. }
  329. public static String setBalanceView() {
  330. String result = budget - expenses + " �";
  331. return result;
  332. }
  333. public static String setExpensesView() {
  334. String result = "-" + expenses + " �";
  335. return result;
  336. }
  337. @Override
  338. public void keyTyped(KeyEvent e) {
  339. }
  340. @Override
  341. public void keyPressed(KeyEvent e) {
  342. if (e.getKeyCode() == KeyEvent.VK_DELETE) {
  343. leeren();
  344. }
  345. if (e.getKeyCode() == KeyEvent.VK_F5) {
  346. exitButton();
  347. }
  348. }
  349. @Override
  350. public void keyReleased(KeyEvent e) {
  351. // TODO Auto-generated method stub
  352. }
  353. }