package MeinBudgetView; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import java.awt.Font; import javax.swing.JComboBox; import javax.swing.JTextArea; import java.awt.Color; import javax.swing.JSeparator; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.border.EtchedBorder; import javax.swing.border.MatteBorder; import javax.swing.border.BevelBorder; import javax.swing.border.TitledBorder; import javax.swing.UIManager; import static javax.swing.JOptionPane.showMessageDialog; public class MeinGui extends JFrame implements ActionListener, KeyListener { //Variablen Initialisierung private JPanel contentPane; public static JTextField text1; public static JTextField text2; JLabel labelBudgetImage; JLabel labelExpensesImage; JLabel labelBalancetImage; JLabel labelSavingsImage; JLabel labelHauptImage; JButton senden; JButton berechne; JLabel leeren; JButton loeschen; JButton exit; JButton hinzufuegen; JButton erspartesLoeschen; public static JLabel budgetDispaly; public static JLabel expensesDisplay; public static JLabel balanceDisplay; public static JLabel savingsDisplay; public static double budget; public static double expenses; public static double balance; public static double erspartes; public static JTextField textExpensesName; public static JLabel ausgabenName; private static JLabel ausgabenBetrag; private static JLabel budgetBetrag; private static JTable myTable; public MeinGui() { //Erstellen der GUI setTitle("Budget"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 900, 368); contentPane = new JPanel(); contentPane.setBackground(Color.orange); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); //"Berechne" Button wird erstellt und hinzugefuegt this.berechne = new JButton("Berechne"); berechne.setBounds(78, 281, 110, 23); berechne.setToolTipText(""); contentPane.add(berechne); //"Senden" Button wird erstellt und hinzugefuegt this.senden = new JButton("Senden"); senden.setBounds(78, 126, 110, 23); contentPane.add(senden); //Textfeld fuer das Budget wird erstellt und hinzugefuegt text1 = new JTextField(); text1.setBounds(60, 97, 128, 20); contentPane.add(text1); text1.setColumns(10); //Textfeld fuer die Ausgaben wird erstellt und hinzugefuegt text2 = new JTextField(); text2.setBounds(60, 250, 128, 20); contentPane.add(text2); text2.setColumns(10); //Logo der Applikation wird hinzugefuegt labelHauptImage = new JLabel(""); labelHauptImage.setBounds(10, 0, 86, 61); Image image0 = new ImageIcon(this.getClass().getResource("/budgetapp.png")).getImage(); labelHauptImage.setIcon(new ImageIcon(image0)); labelHauptImage.setFont(new Font("Tahoma", Font.BOLD, 13)); contentPane.add(labelHauptImage); //Einfuegen der Textbeschreibung fuer das Eingabefeld "Budget" JLabel budgetEingeben = new JLabel("Budget eingeben"); budgetEingeben.setBounds(10, 72, 130, 20); budgetEingeben.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14)); contentPane.add(budgetEingeben); //Einfuegen der "Budget" Ueberschrift fuer die Berechnungstabelle JLabel labelBudget = new JLabel("Budget"); labelBudget.setBounds(255, 8, 46, 14); contentPane.add(labelBudget); //Einfuegen der "Ausgaben" Ueberschrift fuer die Berechnungstabelle JLabel labelExpenses = new JLabel("Expenses"); labelExpenses.setBounds(390, 8, 56, 14); contentPane.add(labelExpenses); //Einfuegen der "Restbudget" Ueberschrift fuer die Berechnungstabelle JLabel labelBalance = new JLabel("Balance"); labelBalance.setBounds(525, 8, 46, 14); contentPane.add(labelBalance); //Einfuegen der "Erspartes" Ueberschrift fuer die Berechnungstabelle JLabel labelSavings = new JLabel("Savings"); labelSavings.setBounds(660, 8, 46, 14); contentPane.add(labelSavings); //Einfuegen des Images fuer "Budget" in der Tabelle labelBudgetImage = new JLabel(""); labelBudgetImage.setBounds(255, 22, 46, 55); Image image1 = new ImageIcon(this.getClass().getResource("/Money-icon.png")).getImage(); labelBudgetImage.setIcon(new ImageIcon(image1)); contentPane.add(labelBudgetImage); //Einfuegen des Images fuer "Ausgaben" in der Tabelle labelExpensesImage = new JLabel(""); labelExpensesImage.setBounds(400, 22, 46, 55); Image image2 = new ImageIcon(this.getClass().getResource("/wings-icon.png")).getImage(); labelExpensesImage.setIcon(new ImageIcon(image2)); contentPane.add(labelExpensesImage); //Einfuegen des Images fuer "Restbudget" in der Tabelle labelBalancetImage = new JLabel("New labelBalance"); labelBalancetImage.setBounds(543, 22, 34, 55); Image image3 = new ImageIcon(this.getClass().getResource("/Money-icon.png")).getImage(); labelBalancetImage.setIcon(new ImageIcon(image3)); contentPane.add(labelBalancetImage); //Einfuegen des Images fuer "Erspartes" in der Tabelle labelSavingsImage = new JLabel(""); labelSavingsImage.setBounds(660, 22, 46, 55); Image image4 = new ImageIcon(this.getClass().getResource("/savings-icon.png")).getImage(); labelSavingsImage.setIcon(new ImageIcon(image4)); contentPane.add(labelSavingsImage); //Einfuegen der Ueberschrift "Ausgaben" fuer das Textfeld Ausgaben JLabel budgetAusgeben = new JLabel("Ausgaben"); budgetAusgeben.setBounds(10, 185, 80, 20); budgetAusgeben.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14)); contentPane.add(budgetAusgeben); //Einfuegen der Ueberschrift "Leeren" fuer den loeschen Button this.leeren = new JLabel("Leeren"); leeren.setBounds(317, 253, 115, 14); leeren.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14)); contentPane.add(leeren); //Einfuegen und hinzufuegen des "Loeschen" Buttons this.loeschen = new JButton("L\u00F6schen"); loeschen.setBounds(301, 281, 89, 23); contentPane.add(loeschen); //Einfuegen und hinzufuegen des "Exit" Buttons this.exit = new JButton("Exit\r\n"); exit.setBounds(477, 281, 95, 23); contentPane.add(exit); //Einfuegen der Ueberschrift "Beenden" ueber dem "exit" Button JLabel beenden = new JLabel("Beenden"); beenden.setBounds(491, 253, 81, 14); beenden.setFont(new Font("Estrangelo Edessa", Font.BOLD, 14)); contentPane.add(beenden); //Einfuegen des Platzhalters fuer die Budget Summe budgetDispaly = new JLabel("0.0 \u20AC"); budgetDispaly.setBounds(255, 82, 86, 14); budgetDispaly.setFont(new Font("Tahoma", Font.BOLD, 12)); contentPane.add(budgetDispaly); //Einfuegen des Platzhalters fuer die Asugaben Summe expensesDisplay = new JLabel("0.0 \u20AC"); expensesDisplay.setBounds(390, 82, 110, 14); expensesDisplay.setFont(new Font("Tahoma", Font.BOLD, 12)); contentPane.add(expensesDisplay); //Einfuegen des Platzhalters fuer die Restbudget Differenz balanceDisplay = new JLabel("0.0 \u20AC"); balanceDisplay.setBounds(543, 82, 85, 14); balanceDisplay.setFont(new Font("Tahoma", Font.BOLD, 12)); contentPane.add(balanceDisplay); //Einfuegen des Platzhalters fuer die Erspartes Summe savingsDisplay = new JLabel("0.0 \u20AC"); savingsDisplay.setBounds(660, 82, 85, 14); savingsDisplay.setFont(new Font("Tahoma", Font.BOLD, 12)); contentPane.add(savingsDisplay); //Einfuegen und hinzufuegen des "Hinzufuegen" Buttons this.hinzufuegen = new JButton("Hinzuf\u00fcgen"); hinzufuegen.setBounds(660, 126, 100, 23); contentPane.add(hinzufuegen); //Einfuegen und hinzufuegen des "Erspartes loeschen" Buttons this.erspartesLoeschen = new JButton("Erspartes L\u00F6schen"); erspartesLoeschen.setBounds(660, 160, 150, 23); contentPane.add(erspartesLoeschen); //Einfuegen des Textfeldes fuer die Beschreibung der Ausgabe textExpensesName = new JTextField(); textExpensesName.setBounds(60, 221, 128, 20); textExpensesName.setToolTipText(""); contentPane.add(textExpensesName); textExpensesName.setColumns(10); //Einfuegen der Ueberschrifft fuer das Textfeld der Ausgaben Beschreibung ausgabenName = new JLabel(" Name"); ausgabenName.setBounds(10, 224, 46, 14); contentPane.add(ausgabenName); //Einfuegen der Ueberschrift fuer das Textfeld des Ausgabenbetrages ausgabenBetrag = new JLabel(" Betrag"); ausgabenBetrag.setBounds(10, 253, 46, 14); contentPane.add(ausgabenBetrag); //Einfuegen der Ueberschrift fuer das Textfeld des Budgetbetrages budgetBetrag = new JLabel(" Betrag"); budgetBetrag.setBounds(10, 100, 46, 14); contentPane.add(budgetBetrag); //Einfuegen einer Scrollleiste JScrollPane scrollPane_1 = new JScrollPane(); scrollPane_1.setBounds(347, 126, 136, 88); contentPane.add(scrollPane_1); //Einfuegen der Tabelle fuer die Ausgaben myTable = new JTable(); myTable.setColumnSelectionAllowed(true); myTable.setCellSelectionEnabled(true); myTable.setBorder(UIManager.getBorder("Tree.editorBorder")); myTable.setFont(new Font("Tahoma", Font.BOLD, 11)); myTable.setModel(new DefaultTableModel(new Object[][] {}, new String[] { "Name", "Kosten" }) { Class[] columnTypes = new Class[] { String.class, Integer.class }; public Class getColumnClass(int columnIndex) { return columnTypes[columnIndex]; } boolean[] columnEditables = new boolean[] { false, false }; public boolean isCellEditable(int row, int column) { return columnEditables[column]; } }); scrollPane_1.setViewportView(myTable); //Einfuegen der Actionlistener fuer die verschiedenen Buttons und Textfelder text1.addActionListener(this); text1.addKeyListener(this); text2.addActionListener(this); text2.addKeyListener(this); senden.addActionListener(this); senden.addKeyListener(this); berechne.addActionListener(this); berechne.addKeyListener(this); loeschen.addActionListener(this); loeschen.addKeyListener(this); exit.addActionListener(this); exit.addKeyListener(this); hinzufuegen.addActionListener(this); erspartesLoeschen.addActionListener(this); } @Override public void actionPerformed(ActionEvent ae) { if (ae.getSource() == this.exit) { exitButton(); } else if (ae.getSource() == this.loeschen) { leeren(); } else if(ae.getSource() == this.erspartesLoeschen) { loescheErspartes(); } else if (ae.getSource() == this.senden && (text1 != null && text2 != null)) { try { budget = Double.parseDouble(text1.getText()); } catch (Exception e) { showMessageDialog(null, "Sie muessen Ihr Budget eingeben!"); } budgetDispaly.setText(setBudgetView()); } else if (ae.getSource() == this.berechne && (text1 != null && text2 != null)) { try { DefaultTableModel tab = (DefaultTableModel) myTable.getModel(); tab.addRow(new Object[] { (textExpensesName.getText()), Double.parseDouble(text2.getText()) }); balance -= Double.parseDouble(text2.getText()); expenses += Double.parseDouble(text2.getText()); expensesDisplay.setText(setExpensesView()); balanceDisplay.setText(setBalanceView()); textExpensesName.setText(null); text2.setText(null); } catch (Exception e) { showMessageDialog(null, "Sie muessen Ihre Ausgabe eingeben!"); } } else if (ae.getSource() == this.hinzufuegen) { erspartesHinzufuegen(); } } private void loescheErspartes() { erspartes = 0.0; savingsDisplay.setText("0.0 \u20AC"); } private void erspartesHinzufuegen() { erspartes += (budget - expenses); budget = 0.0; expenses = 0.0; balance = 0.0; text1.setText(null); text2.setText(null); budgetDispaly.setText("0.0 \u20AC"); expensesDisplay.setText("0.0 \u20AC"); balanceDisplay.setText("0.0 \u20AC"); savingsDisplay.setText(Double.toString(erspartes) + " \u20AC"); textExpensesName.setText(null); ((DefaultTableModel) myTable.getModel()).setRowCount(0); } public static void exitButton() { System.exit(0); } public static void leeren() { text1.setText(""); text2.setText(""); budgetDispaly.setText("0.0 �"); expensesDisplay.setText("0.0 �"); balanceDisplay.setText("0.0 �"); textExpensesName.setText(""); budget = 0.0; expenses = 0.0; balance = 0.0; text1.setText(null); text2.setText(null); budgetDispaly.setText("0.0 \u20AC"); expensesDisplay.setText("0.0 \u20AC"); balanceDisplay.setText("0.0 \u20AC"); textExpensesName.setText(null); ((DefaultTableModel) myTable.getModel()).setRowCount(0); } public static String setBudgetView() { String result = budget + " €"; return result; } public static String setBalanceView() { String result = budget - expenses + " €"; return result; } public static String setExpensesView() { String result = "-" + expenses + " €"; return result; } @Override public void keyTyped(KeyEvent e) { } @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_DELETE) { leeren(); } if (e.getKeyCode() == KeyEvent.VK_F5) { exitButton(); } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } }