java待办事务实时提醒_java - 待办事项列表程序方面的问题 - 堆栈内存溢出

该博客讨论了一个Java待办事项列表程序,程序使用JSON进行数据存储和读取。在关闭窗口时,程序应保存待办事项到JSON文件,但在打开时未读取数据。作者遇到的问题是方面方法似乎没有运行,导致控制台没有显示预期的消息。
摘要由CSDN通过智能技术生成

package revo.todo.RevoToDo.adapters;

import java.awt.event.WindowAdapter;

public class MyWindowAdapter extends WindowAdapter{

@Override

public void windowClosing(java.awt.event.WindowEvent windowEvent) {

System.exit(0);

}

}

package revo.todo.RevoToDo.aspects;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.List;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.json.simple.JSONObject;

import org.json.simple.parser.JSONParser;

import org.json.simple.parser.ParseException;

import revo.todo.RevoToDo.App;

import revo.todo.RevoToDo.Window;

@Aspect

public class JSONAspect {

/*

* Json save

*/

@Before("execution(* revo.todo.RevoToDo.adapters.MyWindowAdapter.windowClosing(..))")

@SuppressWarnings("unchecked")

public void saveToJson(){

System.out.println("saveToJson()");

Window window = App.getContext().getBean(Window.class);

try{

JSONObject json = new JSONObject();

json.put("todo", window.getTodoList());

//Write JSON file

try (FileWriter file = new FileWriter("data.json")) {

file.write(json.toJSONString());

file.flush();

} catch (IOException e) {

e.printStackTrace();

}

}catch(Exception e){System.out.println("JSON Save Error!");e.printStackTrace();}

}

/*

* JSon read

*/

@Before("execution(* revo.todo.RevoToDo.Window.setVisible(..))")

@SuppressWarnings("unchecked")

public void readFromJSon(){

System.out.println("readFromJson()");

Window window = App.getContext().getBean(Window.class);

JSONParser jsonParser = new JSONParser();

try (FileReader reader = new FileReader("data.json"))

{

//Read JSON file

Object obj = jsonParser.parse(reader);

JSONObject data = (JSONObject) obj;

window.setTodoList((List) data.get("todo"));

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (ParseException e) {

e.printStackTrace();

}

}

}

package revo.todo.RevoToDo;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextArea;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.PropertySource;

import org.springframework.stereotype.Component;

import revo.todo.RevoToDo.adapters.MyWindowAdapter;

import revo.todo.RevoToDo.buttons.RemoveButton;

import revo.todo.RevoToDo.buttons.SubmitButton;

@Component

@PropertySource("classpath:app.properties")

public class Window extends JFrame{

/*

* Serial

*/

private static final long serialVersionUID = -3775184725107046658L;

/*

* Data

*/

private JLabel label;

private JTextArea inputArea;

private List todoList = new ArrayList();

/*

* Constructor

*/

public Window(@Value("${name} on ${version}") String title, @Value("${window_width}") int width, @Value("${window_height}") int height, @Value("${submit_button}") String submitName,@Value("${remove_button}") String removeName,@Value("${textarea_columns}") int cols){

super(title);

setSize(new Dimension(width, height));

setLayout(new GridLayout(2,1));

JPanel showPanel = new JPanel();

JPanel inputPanel = new JPanel();

label = new JLabel("TODO:
");

showPanel.add(label);

inputArea = new JTextArea();

inputArea.setColumns(cols);

inputPanel.add(inputArea);

inputPanel.add( new SubmitButton(submitName));

inputPanel.add( new RemoveButton(removeName));

getContentPane().add(showPanel);

getContentPane().add(inputPanel);

addWindowListener(new MyWindowAdapter());

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

/*

* Getters & Setters

*/

public JLabel getLabel() {

return label;

}

public void setLabel(JLabel label) {

this.label = label;

}

public JTextArea getInputArea() {

return inputArea;

}

public void setInputArea(JTextArea inputArea) {

this.inputArea = inputArea;

}

public List getTodoList() {

return todoList;

}

public void setTodoList(List todoList) {

this.todoList = todoList;

}

}

为什么不起作用? 我没有在控制台中看到任何消息,方面方法未运行。 有人可以解决吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值