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.

388 lines
12 KiB

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