Java写的一个还没有完成的记事本。没有IO。

因为还没有学到java的IO流,所以那部分功能还没有添加上。

在此做一下记录,后面学完IO流,继续把这个小项目完善。

package com.swing;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
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.JTextArea;
public class NotePadDemo {

	public static void main(String[] args) {
		new MyFrame("记事本");
		
		
	}

}
class MyFrame extends JFrame{
	
	//多行文本框JTextArea
	private JTextArea tv_area=null;
	private JScrollPane s_pane=null;//带滚动条的面板
	private JMenuBar mb=null;//菜单栏
	private JMenu m_file=null;//文件菜单
	private JMenu m_help=null;//帮助菜单
	private JMenuItem item_new=null;//菜单项--新建
	private JMenuItem item_open=null;//菜单项--打开
	private JMenuItem item_exit=null;//菜单项--退出
	private JMenuItem item_about=null;//菜单项--关于
	public MyFrame(String title){
		super(title);
		init();
		registerListener();
	}
	//初始化相关组件
	public void init(){
		tv_area=new JTextArea();
		s_pane=new JScrollPane(tv_area);
		//这里就是一个水平滑动条策略。后面needed表示有必要的时候出现。就是说当写的字数超过容量才会出现水平滑动条。
		s_pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		
		Container cpane = this.getContentPane();
		cpane.add(s_pane, BorderLayout.CENTER);
		this.setSize(500, 300);
		
		//初始化菜单
		mb=new JMenuBar();//菜单栏
		
		
		m_file=new JMenu("文件");
		item_new=new JMenuItem("新建");
		item_exit=new JMenuItem("退出");
		item_open=new JMenuItem("打开");
		m_file.add(item_new);
		m_file.add(item_exit);
		m_file.add(item_open);
		
		
		m_help = new JMenu("帮助");
		item_about=new JMenuItem("关于");
		m_help.add(item_about);
		
		mb.add(m_file);
		mb.add(m_help);
		//把菜单栏添加到窗体中
		this.setJMenuBar(mb);
		
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口的时候退出应用程序
		//设置窗口居中显示。
		//定义一个工具包,
		//(屏幕减去窗体)除以2的位置。
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenSize=kit.getScreenSize();//screenSize封装屏幕的宽度高度
		int screenWidth=screenSize.width;
		int screenHeight = screenSize.height;
		int windowWidth = this.getWidth();
		int windowHeight = this.getHeight();
		this.setLocation((screenWidth-windowWidth)/2,(screenHeight-windowHeight)/2);
		this.setVisible(true);
		
		
	}
	private void setLocation(double d, double e) {
		// TODO Auto-generated method stub
		
	}
	//给相关组件设置事件监听器
	public void registerListener(){
		item_new.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				newFile();
			}
		});
		item_open.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				openFile();
			}
		});
		//退出功能
		item_exit.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				exit();
			}
		});
		item_about.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				new AboutDialog(MyFrame.this, "关于记事本", true);
				//这里第三个参数为  是够为模式对话框,模式对话框:不关闭当前窗口无法操作其他的窗口  
				//非模式对话框  不关闭当前窗口也可操作其他窗口
			}
		});
	}
	//新建的功能  
	private void newFile(){
		if(!tv_area.getText().equals("")){
			int res=JOptionPane.showConfirmDialog(null, "是否保存?","提示信息",JOptionPane.YES_NO_OPTION);
			if(res==JOptionPane.YES_NO_OPTION){
				//文件保存对话框
				FileDialog fd=new FileDialog(this, "保存文件", FileDialog.SAVE);
				fd.setVisible(true);
			}else{
				tv_area.setText("");//清空记事本
			}
		}
	}
	//打开文件
	private void openFile(){
		FileDialog fd=new FileDialog(this, "打开文件", FileDialog.LOAD);
		fd.setVisible(true);
	}
	//退出
	private void exit(){
		newFile();
		System.exit(0);
	}
}


class AboutDialog extends JDialog{
	private JLabel desc=null;
	private JPanel panel=null;
	private JButton btn=null;
	
	public AboutDialog(Frame frame,String title,boolean modal){
		super(frame,title,modal);//这里第三个参数为  是否为模式对话框
		init();
		registerListener();
	}
	private void init(){
		desc = new JLabel();
		//settext里面支持html标签
		desc.setText("<html>这是一个记事本开发初期,还要<br/>大家多多指教</html>");
		desc.setHorizontalAlignment(JLabel.CENTER);
		panel=new JPanel();
		btn=new JButton("OK");
		panel.add(btn);
		this.add(desc);//默认放在边界布局管理器的中间
		this.add(panel,BorderLayout.SOUTH);
		this.setSize(300,200);
		
		
	}
	private void registerListener(){
		btn.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				AboutDialog.this.dispose();//退出对话框
			}
		});
		//这里是为了把弹出的对话框放在屏幕中间
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenSize=kit.getScreenSize();//screenSize封装屏幕的宽度高度
		int screenWidth=screenSize.width;
		int screenHeight = screenSize.height;
		int dialogWidth = this.getWidth();
		int dialogHeight = this.getHeight();
		this.setLocation((screenWidth-dialogWidth)/2,(screenHeight-dialogHeight)/2);
		
		this.setVisible(true);
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值