⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jishiben.java

📁 程序人员在编程过程中如果遇到相关问题可以来这里进行参考
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * JiShiBen.java
 *
 * Created on 2007年12月23日, 下午2:51
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package jishiben;

/**
 *
 * @author Administrator
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.text.Document;
import javax.swing.event.*;
import javax.swing.event.DocumentListener;
public class JiShiBen extends JFrame implements ActionListener
{  
    private JFileChooser fileChooser = new JFileChooser();//文件选择对话框
    private File fileName;
     private JColorChooser  color=new JColorChooser();
    private JMenuBar m_MenuBar;//定义菜单栏
    private JMenu menuFile,menuEdit,geShi,m_Edit_Paste;//定义菜单项
    private JMenuItem mi_File_New,mi_File_Open,mi_File_Save,mi_File_LSave,mi_File_Exit,mi_Edit_Copy,mi_Edit_Cut;//定义菜单子项
    private JMenuItem pi_New,pi_Del,pi_Pro;   //弹出窗口子项(新建/删除/属性)
    private JMenuItem mi_Paste_All,mi_Paste_Part; //m_Edit_Paste菜单子项
    private JMenuItem foreColor,backColor;
    private JButton newBtn,openBtn,saveBtn,cutBtn,copyBtn,pasteBtn;
   
    //private JToolBar toolBar;
    private JTextArea text ;
   
    private Color color2;

    private Color color1;
   private JLabel  statusBar ;//状态栏对象
   private JPanel  tools;
   private String placeHolder="";
   private  String font;
    private  int m;
    private boolean isChange = false;// 检测文档变化
   Document document;
   String[] items={"宋体","楷体","隶书","魏碑","黑体"};
  String[] a={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"};
   private JComboBox comFont;
   private JComboBox comSize;
   
//   DBTextDataBinder dBTextDataBinder1 = new DBTextDataBinder();
    public JiShiBen()
    {
        super("小小记事本");//设置当前容器标题
       
        m_MenuBar=new JMenuBar(); //创建菜单条
        this.setJMenuBar(m_MenuBar);//把菜单条加入整个JFrame容器
       //创建文件及其子菜单
       menuFile=new JMenu("文件(F)");//创建文件菜单项,
       menuFile.setMnemonic('F');//设置菜单子项的快捷键
       mi_File_New=new JMenuItem("新建");//创建菜单子项并指定快捷键
       mi_File_Open=new JMenuItem("打开");//创建菜单子项并指定快捷键
       mi_File_Save=new JMenuItem("保存");
        mi_File_LSave=new JMenuItem("另存为");
        menuFile.addSeparator();
       mi_File_Exit=new JMenuItem("退出");
       mi_File_Exit.setMnemonic('x');//设置菜单子项的快捷键
       mi_File_Open.setActionCommand("打开");//再设置命令名
       mi_File_Exit.setActionCommand("退出");//以便动作响应程序调用
       
       menuFile.add(mi_File_New);//把菜单子项加入菜单项
       menuFile.add(mi_File_Open);//把菜单子项加入菜单项
       menuFile.add(mi_File_Save);//把菜单子项加入菜单项
       menuFile.add(mi_File_LSave);
       menuFile.addSeparator();//加一条横向分割线
       menuFile.add(mi_File_Exit);
       
       m_MenuBar.add(menuFile);//将菜单项加入菜单栏

      //创建编辑菜单项,创建菜单子项并指定快捷键
      menuEdit=new JMenu("编辑");//创建菜单项,创建菜单子项并指定快捷键
       mi_Edit_Copy=new JMenuItem("复制");
       mi_Edit_Cut=new JMenuItem("剪切");//创建选择菜单子项
       m_Edit_Paste=new JMenu("粘贴");//创建子菜单项
       mi_Paste_All=new JMenuItem("全部粘贴");//创建二级菜单项
       mi_Paste_Part=new JMenuItem("部分粘贴");
      
     // mi_Edit_Cut.addItemListener(this);//检测盒菜单子项产生选择事件
       m_Edit_Paste.add(mi_Paste_Part);//为二级菜单加入菜单子项
       m_Edit_Paste.add(mi_Paste_All);//为二级菜单加入菜单子项
      
       menuEdit.add(mi_Edit_Copy);
       menuEdit.add(mi_Edit_Cut);
       menuEdit.addSeparator();
       menuEdit.add(m_Edit_Paste);//把二级菜单加入菜单项
       m_MenuBar.add(menuEdit);
       //创建格式菜单
       geShi=new JMenu("格式(G)");
        geShi.setMnemonic('G');//设置菜单子项的快捷键
         foreColor=new JMenuItem("字体颜色");
         backColor=new JMenuItem("背景颜色");
         geShi.add(foreColor);
          geShi.add(backColor);
          m_MenuBar.add(geShi);//将菜单项加入菜单栏
     //创建弹出窗口
       final JPopupMenu popM=new JPopupMenu();//创建弹出窗口
      pi_New=new JMenuItem("新建");//为弹出窗口创建菜单子项
     
      popM.add(pi_New);//为弹出菜单加入菜单子项
         
       pi_Del=new JMenuItem("删除");
       
       popM.add(pi_Del);
       pi_Pro=new JMenuItem("属性");
      
       popM.add(pi_Pro);
      
 //将菜单子项注册给监听器
 
  //测试用的方法
 MenuItemEventHandler menuItemHandler = new MenuItemEventHandler();
       mi_File_New.addActionListener(menuItemHandler);//使菜单子项响应动作事件
       mi_File_Open.addActionListener(menuItemHandler);//使菜单子项响应动作事件
       mi_File_Save.addActionListener(menuItemHandler);//使菜单子项响应动作事件
       mi_File_LSave.addActionListener(menuItemHandler);//使菜单子项响应动作事件
       mi_File_Exit.addActionListener(menuItemHandler);//使菜单子项响应动作事件 
       mi_Edit_Cut.addActionListener(menuItemHandler);
       mi_Edit_Copy.addActionListener(menuItemHandler);
       mi_Paste_Part.addActionListener(menuItemHandler);
       mi_Paste_All.addActionListener(menuItemHandler);
       foreColor.addActionListener(menuItemHandler);
        backColor.addActionListener(menuItemHandler);
       pi_Del.addActionListener(menuItemHandler);
       pi_Pro.addActionListener(menuItemHandler);
       pi_New.addActionListener(menuItemHandler);//使菜单子项响应动作事件
      
  //saveAsItem.addActionListener(menuItemHandler);
 //pageSetItem.addActionListener(menuItemHandler);
 //printItem.addActionListener(menuItemHandler);
 // undoItem.addActionListener(menuItemHandler);
 //redoItem.addActionListener(menuItemHandler);
 // findItem.addActionListener(menuItemHandler);
 //findNextItem.addActionListener(menuItemHandler);
 //replaceItem.addActionListener(menuItemHandler);
 //goToLineItem.addActionListener(menuItemHandler);
/// selectAllItem.addActionListener(menuItemHandler);
 //timeItem.addActionListener(menuItemHandler);
 //autoNextLineItem.addActionListener(menuItemHandler);
 //fontItem.addActionListener(menuItemHandler);
// helpItem.addActionListener(menuItemHandler);
// aboutItem.addActionListener(menuItemHandler);

 
 
       //创建文本区域和状态条
        Container c=getContentPane();
        c.setLayout(new BorderLayout());
        statusBar=new JLabel("状态提示:");//状态栏对象
        text = new JTextArea();//创建文本区域
        text.setLineWrap(true);//自动换行
        c.add(new JScrollPane(text),BorderLayout.CENTER);
        c.add(statusBar,BorderLayout.SOUTH);
         //字体字号组合框
       comFont=new JComboBox(items);
      comFont.setSelectedItem("宋体");
      
      comSize=new JComboBox(a);
      comSize.setSelectedItem("16");
        
         
    comFont.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
       font=(String)comFont.getSelectedItem();
        text.setFont(new Font(font,Font.PLAIN,m));
      }
    });	
    //字号组合框
     
    comSize.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
      m=comSize.getSelectedIndex();
        text.setFont(new Font(font,Font.PLAIN,m));
      }
    });	
    
       //监听鼠标事件,弹出快捷菜单
        text.addMouseListener(new MouseAdapter(){
       	public void mouseReleased(MouseEvent e){
       		if(e.isPopupTrigger()){
       			popM.show(text,e.getX(),e.getY());
       		}
       	}
       	
        });
          
    //创建工具栏按钮并注册给监听者
     ImageIcon newIcon=new ImageIcon("images/new.gif");
     newBtn=new JButton(newIcon);
     openBtn=new JButton(new ImageIcon("images/open.gif"));
     saveBtn=new JButton(new ImageIcon("images/save.gif"));
     JToolBar toolBar=new JToolBar("常用工具",SwingConstants.HORIZONTAL);
     newBtn.setToolTipText("新建文件");
     openBtn.setToolTipText("打开文件");
     saveBtn.setToolTipText("保存文件");
     toolBar.add(newBtn);
     toolBar.add(saveBtn);
      toolBar.add(openBtn);
      toolBar.addSeparator();
     JToolBar toolBar1=new JToolBar("编辑工具",SwingConstants.HORIZONTAL);
     cutBtn=new JButton(new ImageIcon("images/cut.gif"));
     cutBtn.setToolTipText("剪切");
     toolBar1.add(cutBtn);
    copyBtn=new JButton(new ImageIcon("images/copy.gif"));
     copyBtn.setToolTipText("复制");
    toolBar1.add(copyBtn); 
      
      pasteBtn=new JButton(new ImageIcon("images/paste.gif"));
      toolBar1.add(pasteBtn);
      pasteBtn.setToolTipText("粘贴");
      JToolBar toolBar2=new JToolBar("文字工具",SwingConstants.HORIZONTAL);
      toolBar2.add(comFont);
      toolBar2.add(comSize);
      toolBar2.addSeparator();
      JPanel p=new JPanel(new FlowLayout(FlowLayout.LEFT));
      p.add(toolBar);
      p.add(toolBar1);
      p.add(toolBar2);
      c.add(p,BorderLayout.NORTH);
      //将按钮注册给动作事件的监听者
     openBtn.addActionListener(this);
     newBtn.addActionListener(this);
     cutBtn.addActionListener(this);
     copyBtn.addActionListener(this);
     pasteBtn.addActionListener(this);
     saveBtn.addActionListener(this);
   //得到文档对象并注册给文档事件的监听者,监听文档改变事件 
    // document = text.getDocument();
    // document.addDocumentListener(this);
  
     //设置事件监听器,监听游标,动态显示行数和列数  

     text.addCaretListener(new CaretListener()
       {
         public void caretUpdate(CaretEvent e)
         {
           try
           {
              int pos = text.getCaretPosition();
              //Gets the position of the text insertion caret(游标) for this text component
               //获取行数
              int lineOfC = text.getLineOfOffset(pos) + 1;
             //Translates an offset into the components text to a line number. 
              
               //获取列数
              int col = pos - text.getLineStartOffset(lineOfC - 1) + 1;
              // Determines the offset of the start of the given line.
              statusBar.setText("当前光标位置       " + lineOfC + " 行  , " + col + " 列  ");
            }
            catch(Exception ex)
            {
              statusBar.setText("      无法获得当前光标位置");
            }
         }
       });


  //监听文档内容是否发生变化
text.getDocument().addDocumentListener(
new DocumentListener() {
public void changedUpdate(DocumentEvent de) {
    isChange = true;
}
public void insertUpdate(DocumentEvent de) {
    isChange = true;
}
public void removeUpdate(DocumentEvent de) {
    isChange = true;
   }
  }
 );

 }
  //辅助方法:测试JTextArea中文本是否有变化
    private boolean hasChange() {
 return isChange;
    }

  
     //内部方法:响应菜单事件
 private void newPerformed() {
 int value = -1;
 if(hasChange()) //若文件已更改
  if(fileName != null && fileName.exists()) {//文件名不为空并且文件名存在
     String[] buttonTexts = {"保存", "不保存", "取消"};
     value = JOptionPane.showOptionDialog(this, "源程序已经改变,请确认是否保存!", "保存更改?", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, buttonTexts, buttonTexts[0]);
     if(value == JOptionPane.YES_OPTION)
        savePerformed();
     else if(value == JOptionPane.NO_OPTION) {//不保存,初始化当前编辑器
       // fileName = null;
       // text.setText("");
       // setTitle("程序编辑器");
       // return;
        }
     else if(value == JOptionPane.CANCEL_OPTION)
        return;
  }
  else {     //若文件名不存在,则另存,初始化当前编辑器
     saveAsPerformed();
    // fileName = null;
    // text.setText("");
    // setTitle("程序编辑器");
    // return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -