zoukankan      html  css  js  c++  java
  • Java Swing 记事本代码

     记事本代码分为4个部分:

    1.顶部点击可展开的菜单如何生成?
    2.当点击了顶部菜单的某一个子菜单,在程序中如何判断点击了哪个子菜单?【正在写】
    3.那个供你输入文字并且可以滚动的文本框如何生成?
    4.点击了子菜单的各种操作是如何实现的【正在写】

       #1.如何实现记事本中“编辑”菜单中的 剪切,复制,粘贴,删除,全选 功能

       #2.如何将一个按钮放置到弹出框框的任意位置? 

     

    请点击超链接,学习每个部分,并完成文章最后的作业。

    以下是记事本代码:

      1 package swing;//记事本源代码
      2 import java.awt.*;
      3 import java.awt.event.*;
      4 import java.io.*;
      5 
      6 import javax.swing.*;
      7 
      8 public class Run implements ActionListener{
      9     private JFrame frame=new JFrame("新记事本");
     10     private JTextArea jta=new JTextArea();
     11     private String result="";
     12     private boolean flag=true;
     13     private File f;
     14     private JButton jb=new JButton("开始");//开始菜单在运行的时候没看到啊???在哪里
     15     private JTextField jtf=new JTextField(15);
     16     private JTextField jt=new JTextField(15);
     17     private JButton jbt=new JButton("替换为");
     18     private JButton jba=new JButton("全部替换");
     19     private Icon ic=new ImageIcon("D:\java课堂笔记\GUI\11.gif");
     20     //这是它设置的默认路劲???可是我电脑上只有 CEF盘啊
     21     private String value;
     22     private int start=0;
     23     private JFrame jf=new JFrame("查找");
     24     private JFrame jfc=new JFrame("替换");
     25 
     26     @Override
     27     public void actionPerformed(ActionEvent e) {
     28         String comm=e.getActionCommand();
     29         System.out.println("comm="+comm);
     30         if("新建".equals(comm)){//"新建".equals(comm)什么意思,后面的都不懂了???
     31             if(!(frame.getTitle().equals("新记事本"))){
     32                     if(!flag){
     33                         write();
     34                         newNew();
     35                     }else{
     36                         JFileChooser jfc=new JFileChooser("D:\java课堂笔记");
     37                              int returnVal = jfc.showDialog(null,"保存为");
     38                              if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性
     39                                         f=jfc.getSelectedFile();
     40                                         flag=false;
     41                                         write();
     42                                 }
     43                         }
     44             }else if(!(jta.getText().isEmpty())){
     45                 JFileChooser jfc=new JFileChooser("D:\java课堂笔记");
     46                  int returnVal = jfc.showDialog(null,"保存为");
     47                  if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性
     48                             f=jfc.getSelectedFile();
     49                             flag=false;
     50                             write();
     51                             newNew();
     52                     }
     53                 }else{
     54                 newNew();
     55                 }
     56         }else if("打开".equals(comm)){
     57             JFileChooser jfc=new JFileChooser("D:\java课堂笔记");
     58             jfc.setDialogType(JFileChooser.OPEN_DIALOG);
     59              int returnVal = jfc.showOpenDialog(null);
     60              if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性
     61                     f=jfc.getSelectedFile();
     62                     frame.setTitle(f.getName());
     63                     result=read();
     64                     flag=false;
     65                     value=result;
     66                     jta.setText(result);
     67                 }
     68         }else if("保存".equals(comm)){
     69             JFileChooser jfc=new JFileChooser("D:\java课堂笔记");
     70             if(flag){
     71                  int returnVal = jfc.showDialog(null,"保存为");
     72                  if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性
     73                             f=jfc.getSelectedFile();
     74                             flag=false;
     75                             write();
     76                     }
     77             }else{
     78                 write();
     79             }                        
     80         }else if("另存".equals(comm)){
     81             JFileChooser jfc=new JFileChooser("D:\java课堂笔记");
     82              int returnVal = jfc.showDialog(null,"另存");
     83              if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性
     84                         f=jfc.getSelectedFile();
     85                         write();
     86                 }
     87         }else if("退出".equals(comm)){
     88             System.exit(0);
     89         }else if("撤销".equals(comm)){
     90             jta.setText(value);
     91         }else if("剪切".equals(comm)){
     92             value=jta.getText();
     93             jta.cut();
     94         }else if("复制".equals(comm)){
     95             jta.copy();
     96         }else if("粘贴".equals(comm)){
     97             value=jta.getText();
     98             jta.paste();
     99         }else if("删除".equals(comm)){
    100             value=jta.getText();
    101             jta.replaceSelection(null);
    102         }else if("全选".equals(comm)){    
    103             jta.selectAll();
    104         }else if("查找".equals(comm)){
    105             value=jta.getText();
    106             jf.add(jtf,BorderLayout.CENTER);
    107             jf.add(jb,BorderLayout.SOUTH);
    108             
    109             jf.setLocation(300,300);
    110             jf.pack();
    111             jf.setVisible(true);
    112             jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    113         }else if("替换".equals(comm)){
    114             value=jta.getText();
    115             GridLayout gl=new GridLayout(3,3);
    116             JLabel jl1=new JLabel("查找内容:");
    117             JLabel jl2=new JLabel("替换为:");
    118             jfc.setLayout(gl);
    119             jfc.add(jl1);
    120             jfc.add(jtf);
    121             jfc.add(jb);
    122             jfc.add(jl2);
    123             jfc.add(jt);
    124             jfc.add(jbt);
    125             JLabel jl3=new JLabel();
    126             JLabel jl4=new JLabel();
    127             jfc.add(jl3);
    128             jfc.add(jl4);
    129             jfc.add(jba);
    130             
    131             jfc.setLocation(300,300);
    132             jfc.pack();
    133             jfc.setVisible(true);
    134             jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    135         }else if("版本".equals(comm)){
    136             JDialog jd=new JDialog(frame,"关于对话框");
    137             jd.setSize(200,200);
    138             JLabel l=new JLabel("哈哈哈哈哈哈哈哈哈哈呵呵呵呵呵呵呵呵呵呵呵呵呵");
    139             jd.add(l,BorderLayout.CENTER);
    140             jd.setLocation(100,200);
    141             jd.setSize(300,300);
    142             jd.setVisible(true);
    143 //            jd.pack();
    144             jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    145         }else if("开始".equals(comm)||"下一个".equals(comm)){
    146              String temp=jtf.getText();
    147             int s=value.indexOf(temp,start);
    148             if(value.indexOf(temp,start)!=-1){
    149                 jta.setSelectionStart(s);
    150                 jta.setSelectionEnd(s+temp.length());
    151                 jta.setSelectedTextColor(Color.GREEN);
    152                 start=s+1;
    153                 jb.setText("下一个");
    154 //                value=value.substring(s+temp.length());//不能截取字串
    155             }else {
    156                 JOptionPane.showMessageDialog(jf, "查找完毕!", "提示", 0, ic);
    157                 jf.dispose();
    158             }
    159         }else if("替换为".equals(comm)){
    160             String temp=jtf.getText();
    161             int s=value.indexOf(temp,start);
    162             if(value.indexOf(temp,start)!=-1){
    163                 jta.setSelectionStart(s);
    164                 jta.setSelectionEnd(s+temp.length());
    165                 jta.setSelectedTextColor(Color.GREEN);
    166                 start=s+1;
    167                 jta.replaceSelection(jt.getText());
    168             }else {
    169                 JOptionPane.showMessageDialog(jf, "查找完毕!", "提示", 0, ic);
    170                 jf.dispose();
    171             }
    172         }else if("全部替换".equals(comm)){
    173             String temp=jta.getText();
    174             temp=temp.replaceAll(jtf.getText(), jt.getText());
    175             jta.setText(temp);
    176             
    177         }
    178     }
    179     public String read(){
    180         String temp="";
    181         try {
    182             FileInputStream fis = new FileInputStream(f.getAbsolutePath());
    183             byte[] b=new byte[1024];
    184             while(true){
    185                 int num=fis.read(b);
    186                 if(num==-1)break;
    187                 temp=temp+new String(b,0,num);
    188             }
    189             fis.close();
    190         } catch (Exception e1) {
    191             e1.printStackTrace();
    192         }
    193         return temp;
    194     }
    195     
    196     public void write(){
    197         try {
    198             FileOutputStream fos=new FileOutputStream(f);
    199             fos.write(jta.getText().getBytes());
    200             fos.close();
    201         } catch (Exception e) {
    202             e.printStackTrace();
    203         }
    204     }
    205     public void newNew(){
    206         frame.dispose();
    207         new Run();
    208         flag=true;
    209     }
    210     public Run(){
    211         JMenuBar jmb=new JMenuBar();
    212         String[] menuLab={"文件","编辑","帮助"};
    213         String[][] menuItemLab={{"新建","打开","保存","另存","退出"},
    214                 {"撤销","剪切","复制","粘贴","删除","全选","查找","替换"},
    215                 {"版本"}};
    216         for(int i=0;i<menuLab.length;i++){
    217             JMenu menu=new JMenu(menuLab[i]);
    218             jmb.add(menu);
    219             for(int j=0;j<menuItemLab[i].length;j++){
    220                 JMenuItem jmi=new JMenuItem(menuItemLab[i][j]);
    221                 menu.add(jmi);
    222                 jmi.addActionListener(this);
    223             }
    224         }
    225         frame.setJMenuBar(jmb);        
    226         jta.setLineWrap(true);//自动换行
    227         JScrollPane jsp=new JScrollPane(jta);//滚动窗口面板
    228         frame.add(jsp);
    229         
    230         jb.addActionListener(this);
    231         jbt.addActionListener(this);
    232         jba.addActionListener(this);
    233                 
    234         frame.setLocation(200,50);
    235         frame.setSize(620,660);
    236         frame.setVisible(true);
    237         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    238     }
    239     public static void main(String[] args) {
    240         new Run();
    241     }
    242 }
    View Code

     

  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/AbsurdFantasy/p/4756071.html
Copyright © 2011-2022 走看看