笔记本(Java版)

package Text3;

public class App {
public static void main(String[] args) {

new NoteJFrame(-1,"","");
}
}

package Text3;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class UpdateJFrame extends JFrame implements ActionListener {
//定义标题输入框
JTextField titleText = new JTextField();

//定义内容的输入区域
JTextArea contentText = new JTextArea();

//定义修改按钮
JButton update = new JButton("修改");

//定义取消按钮
JButton cancel = new JButton("取消");

public UpdateJFrame(){
//初始化界面
initFrame();

//初始化组件
initView();

//让界面展示出来
this.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if(obj == update){
System.out.println("修改按钮被点击了");
}else if(obj == cancel){
System.out.println("取消按钮被点击了");
}
}

private void initView() {
//定义最上面的每日一记
JLabel title = new JLabel("每日一记");
title.setBounds(220, 20, 584, 50);
title.setFont(new Font("宋体", Font.BOLD, 32));
this.getContentPane().add(title);

//定义文字:标题
JLabel subject = new JLabel("标题");
subject.setBounds(70,90,100,30);
subject.setFont(new Font("宋体",Font.PLAIN,16));
this.getContentPane().add(subject);

//定义文字:内容
JLabel content = new JLabel("内容");
content.setBounds(70,140,100,30);
content.setFont(new Font("宋体",Font.PLAIN,16));
this.getContentPane().add(content);


//设置标题的输入框
titleText.setBounds(120,90,426,30);
titleText.setFont(new Font("宋体",Font.PLAIN,16));
this.getContentPane().add(titleText);

//设置内容的输入框
contentText.setBounds(120,140,426,300);
contentText.setFont(new Font("宋体",Font.PLAIN,16));
this.getContentPane().add(contentText);

//设置保存按钮
// update.setBounds(132,466,140,40);
// update.setFont(new Font("宋体",Font.PLAIN,24));
// update.addActionListener(this);
// this.getContentPane().add(update);

//设置取消按钮
cancel.setBounds(312,466,140,40);
cancel.setFont(new Font("宋体",Font.PLAIN,24));
cancel.addActionListener(this);
this.getContentPane().add(cancel);

}


//对添加界面的一些设置
private void initFrame() {
//设置界面的宽高
this.setSize(600, 600);
//设置界面的标题
this.setTitle("每日一记(添加日记)");
//设置界面置顶
this.setAlwaysOnTop(true);
//设置界面居中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//取消默认的居中放置,只有取消了才会按照XY轴的形式添加组件
this.setLayout(null);
//设置背景颜色
this.getContentPane().setBackground(new Color(212,212,212));
}
}

package Text3;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AddJFrame extends JFrame implements ActionListener {

//定义标题输入框
JTextField numberText = new JTextField();
JTextField titleText = new JTextField();

//定义内容的输入区域
JTextArea contentText = new JTextArea();

//定义保存按钮
JButton save = new JButton("保存");

//定义取消按钮
JButton cancel = new JButton("取消");

//接受数组,表格
Object[][] tabledatas = null;
Object[] tableTitles = null;

public AddJFrame(Object[][] tabledatas , Object[] tableTitles) {
this.tabledatas = tabledatas;
this.tableTitles = tableTitles;

//初始化界面
initFrame();

//初始化组件
initView();

//让界面展示出来
this.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj == save) {
System.out.println("保存按钮被点击了");
this.setVisible(false);
addContain();
// new NoteJFrame();

} else if (obj == cancel) {
System.out.println("取消按钮被点击了");
//清空内容
titleText.setText("");
contentText.setText("");
//转换界面
this.setVisible(false);
new NoteJFrame(-1 ,"" ,"" , tabledatas , tableTitles);
}
}

private void addContain() {
//获取文本框的值
String text = numberText.getText();
int number = Integer.parseInt(text);
String title = titleText.getText();
String content = contentText.getText();

// System.out.println(number+" "+title+" "+content);
//将值输入NoteJFrame()
new NoteJFrame(number , title , content);
}

private void initView() {
//定义最上面的每日一记
JLabel title = new JLabel("每日一记");
title.setBounds(220, 0, 584, 50);
title.setFont(new Font("宋体", Font.BOLD, 32));
this.getContentPane().add(title);

//定义文字:编号
JLabel number = new JLabel("编号");
number.setBounds(70, 55, 100, 15);
number.setFont(new Font("宋体", Font.PLAIN, 16));
this.getContentPane().add(number);

//定义文字:标题
JLabel subject = new JLabel("标题");
subject.setBounds(70, 90, 100, 30);
subject.setFont(new Font("宋体", Font.PLAIN, 16));
this.getContentPane().add(subject);

//定义文字:内容
JLabel content = new JLabel("内容");
content.setBounds(70, 140, 100, 30);
content.setFont(new Font("宋体", Font.PLAIN, 16));
this.getContentPane().add(content);

//设置编号输入框
numberText.setBounds(120, 55, 426, 15);
numberText.setFont(new Font("宋体", Font.PLAIN, 16));
this.getContentPane().add(numberText);

//设置标题的输入框
titleText.setBounds(120, 90, 426, 30);
titleText.setFont(new Font("宋体", Font.PLAIN, 16));
this.getContentPane().add(titleText);

//设置内容的输入框
contentText.setBounds(120, 140, 426, 300);
contentText.setFont(new Font("宋体", Font.PLAIN, 16));
this.getContentPane().add(contentText);

//设置保存按钮
save.setBounds(132, 466, 140, 40);
save.setFont(new Font("宋体", Font.PLAIN, 24));
save.addActionListener(this);
this.getContentPane().add(save);

//设置取消按钮
cancel.setBounds(312, 466, 140, 40);
cancel.setFont(new Font("宋体", Font.PLAIN, 24));
cancel.addActionListener(this);
this.getContentPane().add(cancel);

}


//对添加界面的一些设置
private void initFrame() {
//设置界面的宽高
this.setSize(600, 600);
//设置界面的标题
this.setTitle("每日一记(添加日记)");
//设置界面置顶
this.setAlwaysOnTop(true);
//不可调节尺寸
this.setResizable(false);
//设置界面居中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//取消默认的居中放置,只有取消了才会按照XY轴的形式添加组件
this.setLayout(null);
//设置背景颜色
this.getContentPane().setBackground(new Color(212, 212, 212));
}


}

package Text3;

import java.io.Serial;
import java.io.Serializable;

public class GameInfo implements Serializable {


@Serial
private static final long serialVersionUID = -2938469517508112511L;
Object[][] tabledatas = null;
int len = 0;

public GameInfo() {

}

public GameInfo(Object[][] tabledatas, int len) {

this.tabledatas = tabledatas;
this.len = len;
}

public void setTabledatas(Object[][] tabledatas) {
this.tabledatas = tabledatas;
}

public Object[][] getTabledatas() {
return tabledatas;
}

public void setLen(int len) {
this.len = len;
}

public int getLen() {
return len;
}

public String toString() {
return "GameInfo{date = " + tabledatas + ", len = " + len + "}";
}
}

package Text3;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class NoteJFrame extends JFrame implements ActionListener {

//增加表格数组
static Object[][] tabledatas = new Object[][]{{"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""},
{"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""},
{"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""},
{"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""}, {"", "", ""},};
static Object[][] tabledatas2 = null;
//定义表格的标题
Object[] tableTitles = new Object[]{"编号", "标题", "正文"};


//创建三个按钮
JButton add = new JButton("添加");
JButton update = new JButton("修改");
JButton delete = new JButton("删除");

//创建表格组件
JTable table;

//创建菜单的导入和导出
JMenu exportItem = new JMenu("导出");
JMenu importItem = new JMenu("导入");
JMenuItem save1 = new JMenuItem("笔记1(空)");
JMenuItem save2 = new JMenuItem("笔记2(空)");
JMenuItem save3 = new JMenuItem("笔记3(空)");
JMenuItem load1 = new JMenuItem("读档1(空)");
JMenuItem load2 = new JMenuItem("读档2(空)");
JMenuItem load3 = new JMenuItem("读档3(空)");

//获取添加的文本,标号,标题
int number = 0;
String title = "";
String content = "";

//增加滚动表格
JScrollPane jScrollPane;

//删除例
DefaultTableModel dtm;

// JTable jt;
public NoteJFrame(int number, String title, String content) {
this.number = number;
this.title = title;
this.content = content;

//初始化界面
initFrame();
//初始化菜单
initJmenuBar();
//初始化组件
initView();
//加入数据
addText();
//让界面显示出来
this.setVisible(true);
}

public NoteJFrame(int number, String title, String content, Object[][] tabledatas, Object[] tableTitles) {
this.number = number;
this.title = title;
this.content = content;
this.tabledatas = tabledatas;
this.tableTitles = tableTitles;

System.out.println(number + title + content);
//初始化界面
initFrame();
//初始化菜单
initJmenuBar();
//初始化组件
initView();

// //加入数据
// addText();
//让界面显示出来
this.setVisible(true);
}


private void addText() {
if (number == -1 || number <= 0) {
return;
}
for (int i = 0; i < 3; i++) {
if (i == 0) {
table.setValueAt(number, number - 1, i);
tabledatas[number - 1][i] = number;
} else if (i == 1) {
table.setValueAt(title, number - 1, i);
// System.err.println(table.getValueAt(number - 1, i));
tabledatas[number - 1][i] = title;
} else {
table.setValueAt(content, number - 1, i);
tabledatas[number - 1][i] = content;
}
}
}

@Override
public void actionPerformed(ActionEvent e1) {
//获取当前那个组件被点击
Object obj = e1.getSource();
String actionCommand = e1.getActionCommand();
if (obj == add) {
System.out.println("添加按钮被点击");
this.setVisible(false);
// table.setValueAt("hh",1,1);
// System.out.println(table.getValueAt(1,1));
new AddJFrame(tabledatas, tableTitles);
} else if (actionCommand.equals("删除")) {
try {
dtm.removeRow(table.getSelectedRow());
// System.out.println("测试一");
//记录数组的长度
int length = tabledatas.length;
length--;

//增加寄存容器
tabledatas2 = new Object[tabledatas.length][tabledatas[0].length];

for (int i = 0; i < tabledatas.length; i++) {
for (int j = 0; j < tabledatas[i].length; j++) {
tabledatas2[i][j] = tabledatas[i][j];
}
}
// System.out.println("测试二");
//清空数组
tabledatas = null;

tabledatas = new Object[length][tabledatas2[0].length];

//加入删减数组
for (int i = 0; i < length; i++) {
for (int j = 0; j < tabledatas2[0].length; j++) {
tabledatas[i][j] = tabledatas2[i][j];

}
}
// System.out.println("测试三");
//清空数组
tabledatas2 = null;

// for (int i = 0; i < tabledatas.length; i++) {
// for (int j = 0; j < tabledatas[0].length; j++) {
//
// System.out.println(tabledatas[i][j]);
// }
// }
// System.out.println("测试四");
} catch (Exception w) {
JOptionPane.showMessageDialog(this, "请选中一行");
}
} else if (obj == update) {
System.out.println("修改按钮被点击");
int i = table.getSelectedRow();
System.out.println(i + "零");
} else if (obj == save1 || obj == save2 || obj == save3) {
System.out.println("菜单的导出功能");

//获取obj名称
JMenuItem item = (JMenuItem) obj;
int index = item.getText().charAt(2) - '0';
// System.out.println(index);

int length = tabledatas.length;
// System.out.println(length);

System.out.println(tabledatas[0][0] + "一");

GameInfo gi = new GameInfo(tabledatas, length);
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\develop\\ideawenjian\\info1\\day06\\src\\Text3\\save\\save" + index + ".data"));
oos.writeObject(gi);
oos.flush();
oos.close();

} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println(tabledatas[0][0] + "二");

item.setText("存档" + index + "(已存)");
} else if (obj == load1 || obj == load2 || obj == load3) {
System.out.println("菜单的导入功能");

JMenuItem item = (JMenuItem) obj;
int index = item.getText().charAt(2) - '0';
// System.out.println(index);

// int length = tabledatas.length;
// System.out.println(length);

GameInfo gi = null;
File file = new File("D:\\develop\\ideawenjian\\info1\\day06\\src\\Text3\\save\\save" + index + ".data");
if (file.length() == 0) {
showJDialog("无此存档");
return;
}
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
gi = (GameInfo) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
tabledatas = gi.getTabledatas();
item.setText("存档" + index + "(已存)" + gi.getLen() + "列数据");
System.out.println(tabledatas[0][0] + "二");

//定义表格组件
//并给表格设置标题和内容
dtm = new DefaultTableModel((Object[][]) tabledatas, (Object[]) tableTitles);
table = new JTable(dtm);
table.setBounds(40, 70, 504, 380);

//创建可滚动的组件,并把表格组件放在滚动组件中间
//好处:如果表格中数据过多,可以进行上下滚动
jScrollPane = new JScrollPane(table);
jScrollPane.setBounds(40, 70, 504, 380);
this.getContentPane().add(jScrollPane);

// table.repaint();
// jScrollPane.repaint();
// this.repaint();
// initView();
}
}

//初始化组件
private void initView() {
//定义最上面的每日一记
JLabel title = new JLabel("每日一记");
title.setBounds(220, 20, 584, 50);
title.setFont(new Font("宋体", Font.BOLD, 32));
this.getContentPane().add(title);

//定义表格的内容
//二维数组中的每一个一维数组,是表格里面的一行数据

//定义表格组件
//并给表格设置标题和内容
dtm = new DefaultTableModel((Object[][]) tabledatas, (Object[]) tableTitles);
table = new JTable(dtm);
table.setBounds(40, 70, 504, 380);

//创建可滚动的组件,并把表格组件放在滚动组件中间
//好处:如果表格中数据过多,可以进行上下滚动
jScrollPane = new JScrollPane(table);
jScrollPane.setBounds(40, 70, 504, 380);
this.getContentPane().add(jScrollPane);

//给三个按钮设置宽高属性,并添加点击事件
add.setBounds(40, 466, 140, 40);
update.setBounds(222, 466, 140, 40);
delete.setBounds(404, 466, 140, 40);

add.setFont(new Font("宋体", Font.PLAIN, 24));
update.setFont(new Font("宋体", Font.PLAIN, 24));
delete.setFont(new Font("宋体", Font.PLAIN, 24));

//设置颜色
add.setBackground(Color.LIGHT_GRAY);
update.setBackground(Color.LIGHT_GRAY);
delete.setBackground(Color.LIGHT_GRAY);

add.addActionListener(this);
update.addActionListener(this);
delete.addActionListener(this);


this.getContentPane().add(add);
// this.getContentPane().add(update);
this.getContentPane().add(delete);
}

//初始化菜单
private void initJmenuBar() {
//创建整个的菜单对象
JMenuBar jMenuBar = new JMenuBar();
//创建菜单上面的两个选项的对象 (功能 关于我们)
JMenu functionJMenu = new JMenu("功能");

//把5个存档,添加到saveJMenu中
exportItem.add(save1);
exportItem.add(save2);
exportItem.add(save3);

importItem.add(load1);
importItem.add(load2);
importItem.add(load3);

functionJMenu.add(exportItem);
functionJMenu.add(importItem);

//绑定点击事件
// exportItem.addActionListener(this);
// importItem.addActionListener(this);
save1.addActionListener(this);
save2.addActionListener(this);
save3.addActionListener(this);
load1.addActionListener(this);
load2.addActionListener(this);
load3.addActionListener(this);

//将菜单里面的两个选项添加到菜单当中

jMenuBar.add(functionJMenu);

//给菜单设置颜色
// jMenuBar.setBackground(new Color(230,230,230));
jMenuBar.setBackground(Color.LIGHT_GRAY);

getData();
//给整个界面设置菜单
this.setJMenuBar(jMenuBar);


}

//数据同步
private void getData() {

GameInfo gi = new GameInfo();
File files = new File("D:\\develop\\ideawenjian\\info1\\day06\\src\\Text3\\save");

//遍历文件夹
File[] list = files.listFiles();
for (File file : list) {

// System.out.println(file.getName().charAt(4));
int index = file.getName().charAt(4) - '0';
// System.out.println(index);

if (file.length() == 0) {
continue;
}
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\develop\\ideawenjian\\info1\\day06\\src\\Text3\\save\\save" +
index + ".data"));
gi = (GameInfo) ois.readObject();
ois.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
exportItem.getItem(index - 1).setText("存档" + index + "(已存)");
importItem.getItem(index - 1).setText("存档" + index + "(已存)" + gi.getLen() + "列数据");
}

}


//初始化界面
private void initFrame() {
//设置界面的宽高
this.setSize(600, 600);
//设置界面的标题
this.setTitle("每日一记");
//设置界面置顶
this.setAlwaysOnTop(true);
//设置界面居中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//取消默认的居中放置,只有取消了才会按照XY轴的形式添加组件
this.setLayout(null);
//不可调节尺寸
this.setResizable(false);
//设置背景颜色
this.getContentPane().setBackground(new Color(212, 212, 212));
}

//只创建一个弹框对象
JDialog jDialog = new JDialog();

//因为展示弹框的代码,会被运行多次
//所以,我们把展示弹框的代码,抽取到一个方法中。以后用到的时候,就不需要写了
//直接调用就可以了。
//展示弹框
public void showJDialog(String content) {
if (!jDialog.isVisible()) {
//给弹框设置大小
jDialog.setSize(200, 150);
//让弹框置顶
jDialog.setAlwaysOnTop(true);
//让弹框居中
jDialog.setLocationRelativeTo(null);
//弹框不关闭永远无法操作下面的界面
jDialog.setModal(true);

//创建Jlabel对象管理文字并添加到弹框当中
JLabel warning = new JLabel(content);
warning.setBounds(0, 0, 200, 150);
jDialog.getContentPane().add(warning);

//让弹框展示出来
jDialog.setVisible(true);
}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值