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

 

原文地址:https://www.cnblogs.com/AbsurdFantasy/p/4756071.html