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.

425 lines
13 KiB

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());
}
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
}
}