• 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

     

  • 相关阅读:
    翻转数组
    股神
    刮刮卡兑换
    军训队列
    击鼓传花
    上台阶
    @Service空指针异常 -JUNIT测试
    insert 配置信息
    url地址重叠
    shop = mapper.readValue(shopStr, Shop.class); shop=null的问题
  • 原文地址:https://www.cnblogs.com/AbsurdFantasy/p/4756071.html
Copyright © 2020-2023  润新知