首先做出来的效果是这样的
实现的功能 基本功能: (1)新建文件 (2)打开文件 (3)保存文件 (4)退出文件 (5)字数统计 (6)用户密码登录 (7)颜色的选择和背景
一下是代码和注释部分, |
第一部分PublicJFrame
package windows; import java.awt.Image; import javax.swing.JFrame; public class PublicJframe extends JFrame { public PublicJframe() { Image icon=new JFrame().getToolkit().getImage("images/icon.png"); this.setIconImage(icon); setLocation(200,50); setResizable(false); } public static void main(String[] args) { // TODO Auto-generated method stub new PublicJframe(); } } |
第二部分用户Data
package Date; public final class data { public static final String[][] user={ {"1","123","用户1"}, {"2","456","用户2"}}; }//这里是为用户登录时,添加的用户密码和id |
第三部分login实现
package windows; import java.awt.Color; import java.awt.Container; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.Label; import java.awt.Panel; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.text.AbstractDocument.Content; import org.omg.PortableInterceptor.USER_EXCEPTION; import Date.data; public class login extends PublicJframe { private static final Image ImageIcon = null; private JLabel yhm; private JLabel mima; private JTextField txt_zh; private JPasswordField txt_mima; private JTextField mm; private JButton bt_login; private JButton bt_cz; private JButton dl; private JButton cz; login() { // this.getContentPane().setLayout(null);//获取容器 设置为空布局 JFrame frame = new JFrame(); JPanel panel = new JPanel() { public void paintComponent(Graphics g) { ImageIcon icon = new ImageIcon("images/123.jpg"); // 图片随窗体大小而变化 g.drawImage(icon.getImage(), 0, 0, frame.getSize().width, frame.getSize().height, frame); } }; Image icon=new JFrame().getToolkit().getImage("images/icon.png"); frame.setIconImage(icon); panel.setOpaque(false); frame.add(panel); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setResizable(false); panel.setLayout(null); frame.setTitle("记事本-测试版本"); panel.setBackground(Color.CYAN); frame.setVisible(true); panel.setVisible(true); frame.setBounds(500, 250, 280, 240); panel.setBounds(500, 250, 280, 240); JLabel yhm = new JLabel("账号:"); yhm.setBounds(new Rectangle(60, 90, 40, 20)); panel.add(yhm); JLabel mima = new JLabel("密码:"); mima.setBounds(new Rectangle(60, 120, 40, 20)); panel.add(mima); JTextField txt_zh = new JTextField();// 账号框 txt_zh.setBounds(new Rectangle(100, 90, 120, 20)); panel.add(txt_zh); txt_zh.requestFocus(); // JPasswordField txt_mima = new JPasswordField();// 密码框 // txt_mima.setBounds(new Rectangle(100, 120, 120, 20)); // panel.add(txt_mima); JTextField mm = new JTextField();// 密码框 mm.setBounds(new Rectangle(100, 120, 120, 20)); panel.add(mm); JButton dl = new JButton("登录", new ImageIcon("images/login.jpg")); dl.setBounds(new Rectangle(70, 160, 70, 20)); panel.add(dl); JButton cz = new JButton("重置", new ImageIcon("images/cz.jpg")); cz.setBounds(new Rectangle(150, 160, 70, 20)); panel.add(cz); // 登录按钮事件 dl.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String numeber=txt_zh.getText().toString(); String pwd=mm.getText().toString(); int i; boolean flag=false; //用于记录登录是否成功的标记变量 String nickname=""; for(i=0;i<Date.data.user.length;i++) { if(numeber.equals(Date.data.user[i][0])){ if(pwd.equals(Date.data.user[i][1])){ nickname=Date.data.user[i][2]; flag=true; break; } } // System.out.println(numeber+pwd); } if(flag) { txt_zh.requestFocus(); // System.out.println(name); JOptionPane.showMessageDialog(login.this, "密码正确,正在进入...."); new Txtz(); frame.dispose(); } else { txt_zh.setText(""); mm.setText(""); txt_zh.requestFocus(); JOptionPane.showMessageDialog(null, "密码错误,请重新输入...."); } } }); // 重置按钮事件 cz.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { txt_zh.requestFocus(); txt_zh.setText(""); mima.setText(""); JOptionPane.showMessageDialog(null, "已经清空"); return; } }); } public static void main(String[] args) { new login(); } } |
第四部分txt的创建和实现
package windows; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Image; import java.awt.LayoutManager; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.DataInputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.StreamCorruptedException; import java.util.Calendar; import java.util.GregorianCalendar; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.table.DefaultTableModel; import javax.swing.text.View; import windows.login; public class Txtz extends PublicJframe { // private static final Component View = null; private JMenuItem newfile; private JMenuItem help; private JMenuItem save; private JMenuItem exit; private JScrollPane gdt; int flag=0; int length=0; private JMenuItem c1; private JMenuItem c2; private JMenuItem c3; private JMenuItem c4; private JMenuItem c5; private JMenuItem c6; private JMenuItem qcbg; private JMenuItem tjbg; private JTextArea gd; Txtz() { JFrame frame = new JFrame(); //frame.getContentPane().setLayout(new GridLayout(1, 2)); frame.getContentPane().setLayout(null); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); Image icon=new JFrame().getToolkit().getImage("images/icon.png"); frame.setIconImage(icon); frame.setTitle("记事本"); frame.setVisible(true); frame.setResizable(false); frame.setBounds(400, 160, 650, 460); frame.setBackground(Color.black); JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenu menu = new JMenu("文件"); JMenu about = new JMenu("作者"); JMenu zh = new JMenu("我要表达自己的心意"); /* 1代表已经保存过了 * 2代表没有保存 0为初始值 */ menuBar.add(menu); menuBar.add(about); menuBar.add(zh); JMenuItem wyzh = new JMenuItem("我要表达自己的心意"); JMenuItem newfile = new JMenuItem("新建文件"); JMenuItem openfile=new JMenuItem("打开文件"); JMenuItem help = new JMenuItem("作者"); JMenuItem save = new JMenuItem("保存文件"); JMenuItem exit = new JMenuItem("退出文件"); //2.我要表达自己的心意 wyzh.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub // JPanel wxzf=new JPanel(); // wxzf.setVisible(true); // wxzf.setBounds(50, 50, 60, 60); JOptionPane.showMessageDialog(frame, null, "我要表达自己的心意", JOptionPane.OK_OPTION, new ImageIcon("images/wx.jpg")); } }); //3.时间 //JLabel label3=new JLabel(); //本来想用一个线程来计算时间,后来没有实现 GregorianCalendar sj=new GregorianCalendar(); int weak=sj.get(Calendar.DAY_OF_WEEK); int hour=sj.get(Calendar.HOUR_OF_DAY); int minute=sj.get(Calendar.MINUTE); int second=sj.get(Calendar.SECOND); String a=("当前时间为: "+hour+":"+minute+":"+second+" "+"周"+weak); JMenu tiMenu=new JMenu("点击查看当前时间↓"); JMenuItem tJMenuItem=new JMenuItem(a); //时间 menu.add(newfile);// 新建文件 menu.add(openfile);//打开文件 menu.add(save);// 保存 menu.add(exit);// 退出 about.add(help);// 帮助 zh.add(wyzh); tiMenu.add(tJMenuItem); menuBar.add(tiMenu); help.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub JOptionPane.showMessageDialog(frame, "此软件是 天津现代职业技术学院,2016级 软件1班,杨大枫所做,qq1607160602,\n\n\n 2018/5/19"); } }); /* * 4.记事本gd * */ JLabel zs=new JLabel(); zs.setBounds(10, 385, 200, 25); frame.add(zs); JTextArea gd = new JTextArea(); JScrollPane scrollPane = new JScrollPane(gd); scrollPane.setBounds(0, 0, 650, 390); //gd.setOpaque(false); gd.setBackground(Color.white); gd.requestFocus(true); gd.setLineWrap(true); gd.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置其字体样式属性 gd.setForeground(Color.WHITE); // gd.setBorder(new EmptyBorder(5,5,5,5)); gd.setOpaque(false); scrollPane.setOpaque(false); scrollPane.getViewport().setOpaque(false); /*这部分是一个表格 可以自动显示文本的名称 (未实现) String[]Columns={"记事本名称","创建时间"}; String[][]VALUE={{"A1","B1"},{"A2","B2"},{"A3","B3"}}; JTable table=new JTable(VALUE, Columns); JScrollPane scrollPane1 = new JScrollPane(table); scrollPane1.setBounds(325, 0, 325, 390); table.setSelectionBackground(Color.black); table.setSelectionForeground(Color.white); table.getTableHeader().setBackground(new Color(0x2d7e89)); table.setBackground(new Color(0xDCEBED)); table.getTableHeader().setForeground(Color.white); table.getTableHeader().setFont(new Font("宋体", Font.BOLD,14)); table.setFont(new Font("微软雅黑", Font.BOLD,13)); table.setForeground(Color.red); //table.isCellEditable(int row, int Columns); 表格重写双击不能被编辑 未能实现 //frame.add(scrollPane, GridLayout(2, 2)); //frame.add(scrollPane1, GridLayout(2, 2)); frame.add(scrollPane1); */ frame.add(scrollPane); gd.addCaretListener(new CaretListener() { @Override public void caretUpdate(CaretEvent arg0) { length=gd.getText().toString().length(); zs.setText("当前一共: "+length+" 字"); } }); // 新建文件 newfile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { flag=0; gd.setText(""); gd.requestFocus(); } }); JPanel panel = new JPanel() {//绘图为panel添加背景图片 public void paintComponent(Graphics g) { ImageIcon icon = new ImageIcon("images/cat1.jpg"); // 图片随窗体大小而变化 g.drawImage(icon.getImage(), 0, 0, frame.getSize().width, frame.getSize().height,frame); } }; frame.add(panel); panel.setBounds(0, 0, 650, 390); panel.setVisible(true); /* // 保存文本↓ * */ save.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File("dictories",".")); int result = chooser.showSaveDialog(Txtz.this); if (result == JFileChooser.APPROVE_OPTION) { try { DataOutputStream dos = new DataOutputStream(new FileOutputStream(chooser.getSelectedFile())); JOptionPane.showMessageDialog(frame, null, "杨大枫先生提醒:亲爱哒", JOptionPane.OK_OPTION, new ImageIcon("images/savexl.jpg")); dos.writeUTF((String)gd.getText()); } catch (FileNotFoundException e2) { e2.printStackTrace(); } catch (IOException e3) { } } flag=1;//保存过为1 return ; } }); /* * 保存文件↑ */ /* // 打开文本↓ * */ openfile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File("dictories",".")); int result = chooser.showOpenDialog(Txtz.this); if (result == JFileChooser.APPROVE_OPTION) { try { DataInputStream dis = new DataInputStream(new FileInputStream(chooser.getSelectedFile())); String text=""; text=dis.readUTF(); JOptionPane.showMessageDialog(frame, null, "text已经打开!", JOptionPane.OK_OPTION, new ImageIcon("images/openxl.jpg")); gd.setText(text.toString());//转为字符串,输出到文本框里 } catch (FileNotFoundException e4) { e4.printStackTrace(); } catch (IOException e5) { } } } }); /* * 打开文件↑ */ //1.退出按钮的触发 exit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { if(flag==1) { int result=JOptionPane.showConfirmDialog(Txtz.this, "是否要退出?", "温馨提示!", JOptionPane.YES_OPTION, JOptionPane.NO_OPTION); if(result==JOptionPane.YES_OPTION) { Txtz.this.dispose();//关闭后台资源 frame.dispose(); }else if(result==JOptionPane.NO_OPTION) { JOptionPane.showMessageDialog(Txtz.this, "已经取消"); } }else { int r1=JOptionPane.showConfirmDialog(Txtz.this, "您还没有保存,是否要保存当前文本?", "温馨提示!", JOptionPane.YES_OPTION, JOptionPane.NO_OPTION); if(r1==JOptionPane.YES_OPTION) { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File("dictories",".")); int result = chooser.showSaveDialog(Txtz.this); if (result == JFileChooser.APPROVE_OPTION) { try { DataOutputStream dos = new DataOutputStream(new FileOutputStream(chooser.getSelectedFile())); JOptionPane.showMessageDialog(frame, null, "杨大枫先生提醒:亲爱哒", JOptionPane.OK_OPTION, new ImageIcon("images/savexl.jpg")); dos.writeUTF((String)gd.getText()); } catch (FileNotFoundException e2) { e2.printStackTrace(); } catch (IOException e3) { } flag=1; } }; } } }); //背景颜色 JMenu color=new JMenu("颜色"); JMenu bgtp=new JMenu("背景图片"); JMenu bg=new JMenu("背景颜色"); c1=new JMenuItem("香色"); c2=new JMenuItem("莺色"); c3=new JMenuItem("緑青色"); c4=new JMenuItem("黑色"); c5=new JMenuItem("红绯"); c6=new JMenuItem("无色"); qcbg=new JMenuItem("不显示"); tjbg=new JMenuItem("显示"); c1.setBackground(new Color(142, 116, 55)); c2.setBackground(new Color(135, 132, 59)); c3.setBackground(new Color(64, 131, 94)); c4.setBackground(new Color(19, 12, 14)); c5.setBackground(new Color(239, 65, 54)); c6.setBackground(Color.WHITE); bg.add(c1); bg.add(c2); bg.add(c3); bg.add(c4); bg.add(c5); bg.add(c6); bgtp.add(qcbg); bgtp.add(tjbg); color.add(bg); color.add(bgtp); menuBar.add(color); bg.setEnabled(false); c1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub gd.setBackground(new Color(142, 116, 55));//香色 gd.requestFocus(); } }); c2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub gd.setBackground(new Color(135, 132, 59));//莺色 gd.requestFocus(); } }); c3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub gd.setBackground(new Color(64, 131, 94));//緑青色 gd.requestFocus(); } }); c4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { gd.setBackground(new Color(19, 12, 14));//黑色 gd.requestFocus(); } }); c5.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubgd.setBackground(new Color(19, 12, 14));//黑色 gd.setBackground(new Color(239, 65, 54));//红绯 gd.requestFocus(); } }); c6.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubgd.setBackground(new Color(19, 12, 14));//白色 gd.setBackground(Color.WHITE);//白色 gd.requestFocus(); } }); qcbg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub panel.setVisible(false); bg.setEnabled(true ); gd.setOpaque(true); } }); tjbg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub panel.setVisible(true); bg.setEnabled(false); gd.setOpaque(false); } }); } private Border EmptyBorder(int i, int j, int k, int l) { // TODO Auto-generated method stub return null; } private LayoutManager GridLayout(int i, int j) { // TODO Auto-generated method stub return null; } public static void main(String[] args) { new Txtz(); } } |
原创,禁止转载,下面是源码
链接:https://pan.baidu.com/s/15qB1vE39GuyDbS4a3BFuSw 密码:2l6z