自定义一个简易记事本窗口

package com.imooc.swing;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import jdk.nashorn.internal.scripts.JO;
public class NotepaidTest {
 public static void main(String[] args) {
  MyFrame mf = new MyFrame("小博记事本");
 }
}
class MyFrame extends JFrame{
 private JTextArea text = null;//多行文本框
 private JScrollPane s_pane = null;//带滚动条的面板
 private JMenuBar menubar = null;//菜单栏
 private JMenu menu_file =null;//文件菜单
 private JMenu menu_help = null;//帮助
 private JMenuItem menu_new = null;//新建
 private JMenuItem menu_open = null;//打开
 private JMenuItem menu_exit= null;//退出
 private JMenuItem menu_about = null;//关于
 
 public MyFrame(String titel) {
  super(titel);
  init();
  registerListener();
 }
 /**
  * 初始化相关组件
  */
 public void init() {
  menubar = new JMenuBar();
  menu_file = new JMenu("文件");
  menu_new  = new JMenuItem("新建");
  menu_open = new JMenuItem("打开");
  menu_exit = new JMenuItem("退出");
  menu_help = new JMenu("帮助");
  menu_about = new JMenuItem("关于");
  
   text = new JTextArea();//多行文本框,JTextField单行文本框
   s_pane = new JScrollPane(text);
   s_pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
   Container cPane = this.getContentPane();
   cPane.add(s_pane, BorderLayout.CENTER);
   this.setSize(500, 300);//设置窗口大小
   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口
   /**
    * 添加菜单
    */
   menu_file.add(menu_new);
   menu_file.add(menu_open);
   menu_file.add(menu_exit);
   menu_help.add(menu_about);
   menubar.add(menu_file);
   menubar.add(menu_help);
   /**
    * 把菜单栏添加到窗体里
    */
   this.setJMenuBar(menubar);
  
   /**
    * 设置窗口居中显示
    */
   //定义一个工具包
   Toolkit kit = Toolkit.getDefaultToolkit();
   Dimension screenSize = kit.getScreenSize();
   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 registerListener() {
  menu_new.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    newFile();
   }
  });
  menu_open.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    open_File();
    
   }
  });
  menu_exit.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    exit();
    
   }
  });
  menu_about.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    about();    
   }
  });
 }
 /**
  * 新建的功能
  */
 private void newFile() {
  if(!(text.getText().equals(""))) {
   int res = JOptionPane.showConfirmDialog(null, "是否保存?","提示信息",
     JOptionPane.YES_NO_OPTION);
   if(res == JOptionPane.YES_OPTION) {
    //文件保存对话框
    FileDialog fd = new FileDialog(this, "文件保存", FileDialog.SAVE);
    fd.setVisible(true);
   }else {
    text.setText("");//清空记事本
   }
  }
 }
 /**
  * 打开的功能
  */
 private void open_File() {
  FileDialog fd = new FileDialog(this,"打开文件",FileDialog.LOAD);
  fd.setVisible(true);
 }
 /**
  * 退出
  */
 private void exit() {
  newFile();
  System.exit(0);
 }
 /**
  * 关于
  */
 private void about() {
  
   new AboutDialog(MyFrame.this,"关于",true);
 }
}
/**
 * 创建一个关于对话框
 */
class AboutDialog extends JDialog{
 JLabel desc = null;
 JPanel panel = null;
 JButton btn = null;
 public AboutDialog(MyFrame frame,String titel,boolean modal) {
  super(frame, titel,modal);
  
  init();
  registerListener();
 }
 private void init() {
  desc = new JLabel();
  panel = new JPanel();
  btn = new JButton("ok");
  desc.setText("<html>这是一个自定义的记事本,处于初级阶段,还得<br/>大家多多指教。</html>");
  desc.setHorizontalAlignment(JLabel.CENTER);
  panel.add(btn);
  this.add(desc);//默认放在中间
  this.add(panel,BorderLayout.SOUTH);
  this.setSize(300, 200);
  Toolkit kit = Toolkit.getDefaultToolkit();
  Dimension screenSize = kit.getScreenSize();
  int screenWidth = screenSize.width;//获得屏幕宽度
   int screenHeight = screenSize.height;//获得屏幕高度
   int windowWidth = this.getWidth();//获得窗口宽度
   int windowHeight = this.getHeight();//获得窗口高度
   this.setLocation((screenWidth-windowWidth)/2,(screenHeight-windowHeight)/2);//设置窗口位置
  
  
 }
 private void registerListener() {
  btn.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    AboutDialog.this.dispose();//释放相关资源,关闭对话框
    
   }
  });
  AboutDialog.this.setVisible(true);
 }
 
 
}

猜你喜欢

转载自blog.csdn.net/xiaobo_666666/article/details/80151877