`

我学的第一个代码量较大的GUI方面的java源程序

    博客分类:
  • java
阅读更多
/****************************************
*程序文件名称:TextFindReplace.java
*功能:字符串的查找与替换
*****************************************/
 import java.awt.*;
 import java.awt.event.*;
 
 public class TextFindReplace implements MouseListener,WindowListener{
 	private Frame frObj;
 	private TextArea taObj;
 	private TextField tfObj1,tfObj2;
 	private Button buttonObj1;
 	private Button buttonObj2;
 	private Button buttonObj3;
 	private Panel pObj1,pObj2,pObj3,pObj4,pObj5;
 	private Label labObj1,labObj2,labObj3;
 	boolean boolObj=false;
 	Dialog  diaObj;
 	Label   textLab;
 	Button  butObj2=new Button("OK");
 	
 	public static void main(String[] args){
 		TextFindReplace examObj=new TextFindReplace();
 		examObj.create();//通过使用成员方法进行实例化各对象等操作.
 		} 
 	public void create(){
 		frObj=new Frame("文本的查找与替换");
 		taObj=new TextArea();
 		tfObj1=new TextField();
 		tfObj2=new TextField();
 		buttonObj1=new Button("Find");
 		buttonObj2=new Button("Replace");
 		buttonObj3=new Button("Exit");
 		labObj1=new Label("文本区域:");
 		labObj2=new Label("待查找或替换前的字符串:");
 		labObj3=new Label("替换后的字符串:");
 		pObj1=new Panel();
 		pObj2=new Panel();
 		pObj3=new Panel();
 		pObj4=new Panel();
 		pObj5=new Panel();
 		pObj1.setLayout(new BorderLayout());//先设置布局,再添加和组件
 		pObj1.add("North",labObj1);
 		pObj1.add("Center",taObj);//BorderLayout中"CENTER"大小会随窗口的大小改变
 		
 		pObj2.setLayout(new BorderLayout());
 		pObj2.add("North",labObj2);
 		pObj2.add("Center",tfObj1);
 		
 		pObj3.setLayout(new BorderLayout());
 		pObj3.add("North",labObj3);
 		pObj3.add("Center",tfObj2);
 		
 		pObj4.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));
 		pObj4.add(buttonObj1);//(20,20)?前者指对象间水平间距,后者指对象距上边界的距离
 		pObj4.add(buttonObj2);
 		pObj4.add(buttonObj3);
 		
 		pObj5.setLayout(new GridLayout(3,1));//(3,1)3行,1列的等大小布局
 		pObj5.add(pObj2);		
 		pObj5.add(pObj3);
 		pObj5.add(pObj4);
 		
 		frObj.setLayout(new GridLayout(1,2));
 		frObj.add(pObj1);
 		frObj.add(pObj5);
 		
 		buttonObj1.addMouseListener(this);//监听者this指当前对象buttonObj1
 		buttonObj2.addMouseListener(this);//监听者为实现了相应接口的类对象
 		buttonObj3.addMouseListener(this);
 		
 		frObj.addWindowListener(this);
 		frObj.setSize(400,260);
 		frObj.setVisible(true);
 		
 		diaObj=new Dialog(frObj);//***参数是Frame对象***实现Frame和Dialog之间的通信
 		diaObj.setLayout(new FlowLayout(FlowLayout.CENTER,40,20));
 		textLab=new Label("");
 		diaObj.add(textLab);
 		diaObj.add(butObj2);
 		butObj2.addMouseListener(this);
 		diaObj.setSize(200,100);
 		//diaObj2使用默认false,而不用diaObj2.setVisible(false);且下方已有:diaObj.show();		
 			}
 		
 		public void mouseClicked(MouseEvent e){
 			Button butObj=(Button)(e.getSource());//***(Button)(e.getSource())***
 			if(butObj.getLabel()=="Exit")         //***通过getLabel()可获得Button上的文本***
 				{	
 					System.exit(0);//关闭窗口
 					
 				}
 			if(butObj.getLabel()=="Find"||butObj.getLabel()=="Replace")
 				{
 					String strObj1=taObj.getText();//***通过getText()可获得TextArea或TextField中的文本内容***
 					String strObj2=tfObj1.getText();
 					int matchNum=0;
 					int cursorPos=taObj.getCaretPosition();//***通过getCaretPosition()可获得TextArea等中的光标位置***
 					matchFun classObj=new matchFun();//***自定义类matchFun***
 					if(butObj.getLabel()=="Find")
 						{
 							matchNum=classObj.strFind(strObj1,strObj2,cursorPos);
 							textLab.setText("共找到"+matchNum+"处");
 							diaObj.show();//隐藏,触发,计算,设值,显示
 						}
 					if(butObj.getLabel()=="Replace")
 						{
 							String strObj3=tfObj2.getText();
 							matchNum=classObj.strReplace(strObj1,strObj2,strObj3,cursorPos);
 							textLab.setText("共替换到"+matchNum+"处");
 							StringBuffer taText=classObj.repStr;//***
 							taObj.setText(taText.toString());//***
 							diaObj.show();//***
 						}
 					
 				}
 			if(butObj.getLabel()=="OK")
 				{diaObj.hide();
 				 frObj.show(); 				
 				}
 			}
 		public void mouseEntered(MouseEvent e){}//***具体的使用方法及其效果?
 		public void mouseExited(MouseEvent e){}
 		public void mousePressed(MouseEvent e){}
 		public void mouseReleased(MouseEvent e){}
 		public void windowClosing(WindowEvent e ){//***用于窗口控制
 			System.exit(0);
 			}
 		public void windowOpened(WindowEvent e){}
 		public void windowIconified(WindowEvent e){}//***具体的使用方法及其效果?
 		public void windowDeiconified(WindowEvent e){}
 		public void windowClosed(WindowEvent e){}
 		public void windowActivated(WindowEvent e){}
 		public void windowDeActivated(WindowEvent e){}
 	}
 
 /*类matchFun用于处理有关字符串查找和替换算法*/
 class matchFun{
	StringBuffer repStr;
	public int strFind(String s1,String s2,int pos)
		{
		int i,j,k=0;
		i=pos;
		j=0;
		while(i<s1.length()&&j<s2.length())
			{
				if(s1.charAt(i)==s2.charAt(j))
				{
					++i;++j;
					if(j==s2.length())
					{
						k+=1;
						i=i-j+1;
						j=0;
					}
				}
				else{i=i-j+1;j=0;}
			}
		return k;
		}
	public int strReplace(String s1,String s2,String s3,int pos){
		int i,j,k=0;
		i=pos;
		j=0;
		repStr=new StringBuffer(s1);//***为了使用replacea()方法,且repStr被申明为实例量。
		while(i<repStr.length()&&j<s2.length())
		{
				if(repStr.charAt(i)==s2.charAt(j))
				{	++i;++j;
					if(j==s2.length())
					{
						k=k+1;
						repStr.replace(i-j,i,s3);//***replace(i-j,i,s3),i-j:起始位置,i:结束位置,s3:替换字符串
						j=0;
					}
				}
				else{i=i-j+1;j=0;}
			}
		return k;
		}
 	}
分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    java课件(完整版)+完整源程序代码

    这个“java课件(完整版)+完整源程序代码”提供的内容涵盖了从Java语言基础到高级特性的全面教程,包括源代码实例,非常适合初学者和进阶学习者深入理解Java编程。 1. **第1章 - Java概述** Java的设计目标是"一次...

    java反编译GUI

    1. **JD-GUI**:这是一个独立的GUI工具,可以直接打开并查看单个Java类的源代码。JD-GUI显示了反编译的结果,便于快速浏览和分析代码。 2. **JAD**:Java反汇编器,也提供了GUI版本。JAD不仅可以反编译类,还可以...

    JAVA语言程序设计-第十二章 高级用户界面GUI设计

    在本章节"JAVA语言程序设计-第十二章 高级用户界面GUI设计"中,我们将深入探讨Java如何创建美观且功能丰富的图形用户界面(GUI)。GUI是计算机软件中与用户进行交互的一种方式,使得非程序员也能轻松操作应用程序。...

    java源码包2

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    java源码包3

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    三级联动java源代码

    5. **异步处理**:如果数据量较大,更新下拉框内容可能需要一定时间,这时可以考虑使用异步处理,避免阻塞主线程,提高用户体验。Java 8引入了`CompletableFuture`,可以方便地进行异步编程。 6. **数据绑定**:...

    jd-gui 0.3.5 Java反编译工具

    虽然反编译不能完全恢复原始的源代码,但它可以提供一个接近原始代码的表示,帮助开发者理解程序的执行逻辑。 **jd-gui工具的特点与使用** jd-gui是一款图形用户界面(GUI)的Java反编译工具,其主要特点包括: 1...

    jd-gui绿色版 java反编译工具

    Java反编译是开发者在分析或逆向工程Java应用程序时常用的一种技术,它允许我们将已编译的.class文件转换回可读的源代码形式。"jd-gui绿色版"是一款非常实用的Java反编译工具,它以其轻量级、无需安装、绿色安全以及...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    java反编译_gui

    Java反编译是软件开发过程中一个重要的技术环节,主要用于查看和理解Java字节码,将已编译的.class文件转换回可读性较高的源代码形式。在Java开发中,这通常用于逆向工程、学习开源库的工作原理或者调试无法获取源...

    java源码包4

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

    java swing小程序

    这个“java swing小程序”压缩包很可能包含了一些示例代码,可以帮助初学者或者开发者更好地理解和掌握Java Swing的相关知识。下面将详细讨论Java Swing的主要组件、特性以及如何通过这些小程序进行学习。 Java ...

    4747 Java语言程序设计(一)

    #### 第一章 Java语言基础 **1.1 JAVA语言的主要特点及执行过程** - **主要特点**: - **跨平台性**:编写一次,到处运行(Write Once, Run Anywhere)是Java的核心优势之一。Java通过JVM实现了这一特性。 - **...

    三种反编译工具jd-gui,xjad,cavaj

    反编译工具能够将已编译的Java字节码(.class文件)转换回可读的源代码,便于理解程序的工作原理。本文将详细介绍三种常用的Java反编译工具:jd-gui、xjad以及cavaj,并探讨它们的特点和应用场景。 1. **jd-gui** ...

    jd-gui-win-1.6.6解压即用

    "jd-gui-win-1.6.6"是一款专为Windows系统设计的JD-GUI软件,它提供了一个直观的图形用户界面,使Java程序员能够快速地反编译并查看.class文件,从而揭示隐藏在二进制代码背后的源代码逻辑。 JD-GUI的主要特点和...

    java代码反编译非常好用的工具

    这些工具不仅能够快速地将字节码转换回可读的Java源代码,还提供了方便的界面,便于开发者查看和分析代码结构。 JD-GUI是一款独立的图形化应用程序,可以直接打开.class文件并显示其源代码。它支持拖放操作,方便...

    反编译工具 jd-gui.exe

    对于调试和分析第三方库或者无法获取源代码的程序,jd-gui.exe是一个非常有用的工具。 然而,需要注意的是,反编译行为可能涉及到版权和法律问题。在没有得到原始作者许可的情况下,对商业软件进行反编译可能会违反...

Global site tag (gtag.js) - Google Analytics