red-finance-manager-application
red-finance-manager-application
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
SwingUtilities.invokeLater(FinanceManager::createGUI);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 600);
frame.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
// Login section
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridx = 0;
gbc.gridy = 1;
frame.add(loginUserField, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
frame.add(loginPassField, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
frame.add(loginButton, gbc);
// Register section
gbc.gridx = 1;
gbc.gridy = 0;
gbc.gridy = 1;
frame.add(registerUserField, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
frame.add(registerPassField, gbc);
gbc.gridx = 1;
gbc.gridy = 3;
frame.add(registerButton, gbc);
gbc.gridx = 0;
gbc.gridy = 4;
gbc.gridx = 0;
gbc.gridy = 5;
frame.add(incomeSourceField, gbc);
gbc.gridx = 0;
gbc.gridy = 6;
gbc.gridx = 0;
gbc.gridy = 7;
frame.add(addIncomeButton, gbc);
gbc.gridx = 1;
gbc.gridy = 4;
gbc.gridx = 1;
gbc.gridy = 5;
frame.add(expenseCategoryField, gbc);
gbc.gridx = 1;
gbc.gridy = 6;
frame.add(expenseAmountField, gbc);
gbc.gridx = 1;
gbc.gridy = 7;
frame.add(addExpenseButton, gbc);
gbc.gridx = 0;
gbc.gridy = 8;
frame.add(reportButton, gbc);
gbc.gridx = 1;
gbc.gridy = 8;
frame.add(exportButton, gbc);
gbc.gridx = 0;
gbc.gridy = 9;
// Add listeners
addListeners();
frame.setVisible(true);
if (username.isEmpty() || password.isEmpty()) {
return;
if (getUser(username) != null) {
return;
loggedInUser = username;
} else {
}
private static void addIncome() {
if (loggedInUser == null) {
return;
if (loggedInUser == null) {
return;
reportArea.setText("Financial Report:\n");
if (user != null) {
}
private static void exportToTxt() {
} catch (IOException e) {
return null;
private static void updateUserData(String username, String category, String amount, boolean
isIncome) {
// Fully qualify the List class to ensure there is no conflict with java.awt.List
java.util.List<String> lines;
lines = reader.lines().collect(Collectors.toList());
} catch (IOException e) {
return;
if (data[0].equals(username)) {
} else {
writer.println(line);
} catch (IOException e) {
e.printStackTrace();
writer.print(data);
} catch (IOException e) {
e.printStackTrace();