java文本編輯器,java文本編輯器設計思路

本文目錄一覽:

java語言寫一個文本編輯器的源代碼

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import javax.swing.event.*;

import java.util.*; //Date needed

import java.io.PrintWriter;

public class NotePad extends JFrame

{

JTextArea jta;

class newl implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jta.setText(“”);

}

}

class openl implements ActionListener

{ public void actionPerformed(ActionEvent e)

{

JFileChooser jf=new JFileChooser();

jf.showOpenDialog(NotePad.this);

}

}

//保存文件的監聽

class savel implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

JFileChooser jf = new JFileChooser();

jf.showSaveDialog(NotePad.this);

}

}

//列印的監聽 ?

class printl implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

// PrintWriter p = new PrintWriter(NotePad.this);

}

}

//退出記事本的監聽

class exitl implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

System.exit(0);//退出

}

}

//拷貝的監聽

class copyl implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jta.copy();

}

}

//粘貼的監聽

class pastel implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jta.paste();

}

}

//剪切的監聽

class cutl implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jta.cut();

}

}

//查找的監聽

//添加日期的監聽

class datel implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

Date d=new Date();

jta.append(d.toString());

}

}

//構造函數

public NotePad()

{

jta=new JTextArea(“”,24,40);

JScrollPane jsp=new JScrollPane(jta);

JMenuBar jmb=new JMenuBar();

JMenu mFile=new JMenu(“File”);

JMenu mEdit=new JMenu(“Edit”);

JMenuItem mNew=new JMenuItem(“New”,KeyEvent.VK_N);

mNew.addActionListener(new newl());

mFile.add(mNew);

JMenuItem mOpen=new JMenuItem(“Open”,KeyEvent.VK_O);

mOpen.addActionListener(new openl());

mFile.add(mOpen);

JMenuItem mSave=new JMenuItem(“Save”);

mSave.addActionListener(new savel());

mFile.add(mSave);

mFile.addSeparator(); //添加分割線

JMenuItem mPrint = new JMenuItem(“Print”);

mPrint.addActionListener(new printl());

mFile.add(mPrint);

mFile.addSeparator(); //添加分割線

JMenuItem mExit=new JMenuItem(“Exit”);

mExit.addActionListener(new exitl());

mFile.add(mExit);

mFile.setMnemonic(KeyEvent.VK_F);

//編輯菜單的子菜單的處理

JMenuItem jmi;

jmi=new JMenuItem(“Copy”);

jmi.addActionListener(new copyl());

mEdit.add(jmi);

jmi=new JMenuItem(“Cut”);

jmi.addActionListener(new cutl());

mEdit.add(jmi);

jmi=new JMenuItem(“Paste”);

jmi.addActionListener(new pastel());

mEdit.add(jmi);

mEdit.addSeparator(); //添加分割線

jmi=new JMenuItem(“Find”);

mEdit.add(jmi);

jmi=new JMenuItem(“FindNext”);

mEdit.add(jmi);

mEdit.addSeparator();

jmi=new JMenuItem(“Select All”);

mEdit.add(jmi);

jmi=new JMenuItem(“Date/Time”);

jmi.addActionListener(new datel());

mEdit.add(jmi);

jmb.add(mFile);

jmb.add(mEdit);

this.setJMenuBar(jmb);

this.getContentPane().add(jsp);

this.setSize(200,200);

this.setVisible(true);

}

//主函數,程序入口點

public static void main(String s[])

{

new NotePad();

}

}

使用文本編輯器和jdk創建並運行Java應用程序的基本步驟?

用文本編輯器編寫java代碼

用javac命令編譯代碼,得到.class文件

用java命令運行.class文件

Java文本編輯器 查找與替換功能如何實現?

最簡單的就是將文本內容作使用String處理

只替換一次 : String.replace(“需要替換的字元串”,”替換的字元串”)

替換所有匹配字元 : String.replaceAll(“需要替換的字元串”,”替換的字元串”)

replcaeAll支持使用正則表達式。

java必須用文本編輯器編寫源文件對嗎?

對的

1、編寫源文件

使用一個文本編輯器(如Edit或記事本)編寫源文件,不可使用非文本編輯器(如我word編輯器)。

將編寫好的源文件保存起來,源文件的擴展名必須是.java。

2、編譯源文件

使用Java編譯器(javac.exe)編譯源文件,得到位元組碼文件。

3、運行程序

使用Java SE 平台中的Java解釋器(java.exe)來解釋執行位元組碼文件。

求JAVA編寫的文本編輯器。

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class Notepad /*implements ActionListener , MouseListener , MouseMotionListener , WindowListener , ItemListener , KeyListener, TextListener */

{

//成員變數

private Frame mainFrame;//主框架

private MenuBar mb ; //菜單條

private Menu mFile , mEdit , mFormat , mHelp ; //菜單:文件,編輯,格式,幫助

private MenuItem miNew , miOpen , miSave , miSaveAs , miExit ;//文件菜單項:新建,打開,保存,另存為,退出

private MenuItem miCut , miCopy , miPaste , miDelete ;//編輯菜單項:剪切,複製,粘貼,刪除

private MenuItem miFont , miLowtoCapital, miCapitaltoLow ,miEncrypt , miDisencrypt;//格式菜單項:字體

private MenuItem miAboutNotepad;//幫助菜單項:關於記事本

private TextArea ta;//文本區

private String tempString;//臨時字元串,用於存儲需要複製粘貼的字元串

private boolean textValueChanged = false;

private int id_font ;//字體

String fileName = “”;//上次保存後的文件名和地址

//構造函數

public Notepad(){

//框架

mainFrame = new Frame (“Notepad v0.99 by Launching”);

mb = new MenuBar ();

ta = new TextArea (30 ,60);

ta.setFont( new Font ( “Times New Rome” , Font.PLAIN , 15));

ta.setBackground(new Color(0 , 250 , 200));

//菜單條

mFile = new Menu ( “File”);

mEdit = new Menu ( “Edit”);

mFormat = new Menu (“Format”);

mHelp = new Menu (“Help”);

//”文件”

miNew = new MenuItem (“New”);

miOpen = new MenuItem (“Open”);

miSave = new MenuItem (“Save”);

miSaveAs = new MenuItem (“Save as”);

miExit = new MenuItem (“Exit”);

//”編輯”

miCut = new MenuItem (“Cut”);

miCopy = new MenuItem (“Copy”);

miPaste = new MenuItem (“Paste”);

miDelete = new MenuItem (“Delete”);

//”格式”

miFont = new MenuItem (“Font”);

miLowtoCapital = new MenuItem(“Low to Capital”);

miCapitaltoLow = new MenuItem(“Capital to Low”);

miEncrypt = new MenuItem(“Encrypt”);

miDisencrypt = new MenuItem(“Disencrypt”);

//”幫助”

miAboutNotepad = new MenuItem (“About Notepad”);

//添加文件菜單項

mFile.add(miNew);

mFile.add(miOpen);

mFile.add(miSave);

mFile.add(miSaveAs);

mFile.add(miExit);

//添加編輯菜單項

mEdit.add(miCut);

mEdit.add(miCopy);

mEdit.add(miPaste);

mEdit.add(miDelete);

//添加格式菜單項

mFormat.add(miFont);

mFormat.add(miLowtoCapital);

mFormat.add(miCapitaltoLow);

mFormat.add(miEncrypt);

mFormat.add(miDisencrypt);

//添加幫助菜單項

mHelp.add(miAboutNotepad);

//菜單條添加菜單

mb.add(mFile);

mb.add(mEdit);

mb.add(mFormat);

mb.add(mHelp);

//框架添加菜單條

mainFrame.setMenuBar( mb );

//初始字元串賦為空

tempString = “”;

//添加文本區

mainFrame.add(ta, BorderLayout.CENTER);

mainFrame.setSize(800 , 500);

mainFrame.setLocation( 100 ,100);// 起始位置

mainFrame.setResizable(true);//不可更改大小

mainFrame.setVisible(true);

//mainFrame.pack();

//////////////////////////////////////////////////////////////////////////////////

////////////////////////////////增加監視器////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

//主框架

mainFrame.addWindowListener(new WindowAdapter (){ //關閉窗口

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

//文本區

ta.addKeyListener( new KeyAdapter(){

public void KeyTyped(KeyEvent e){

textValueChanged = true ; //鍵盤按鍵按下即導致文本修改

}

});

////////////////”文件”菜單://////////////////////

//新建

miNew.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

ta.replaceRange(“”, 0 , ta.getText().length()) ;//清空文本區的內容

fileName = “”;//文件名清空

}

});

//打開

miOpen.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e) {

FileDialog d=new FileDialog(mainFrame , “open file” , FileDialog.LOAD );//打開文件對話框

d.addWindowListener( new WindowAdapter(){ //關閉文件對話框窗口

public void windowClosing(WindowEvent ee){

System.exit(0);

}

});

d.setVisible(true);

File f = new File( d.getDirectory()+d.getFile() ); //建立新文件

fileName = d.getDirectory()+d.getFile();//得到文件名

char ch[] = new char [(int)f.length()];///用此文件的長度建立一個字元數組

try//異常處理

{

//讀出數據,並存入字元數組ch中

BufferedReader bw = new BufferedReader( new FileReader(f) );

bw.read(ch);

bw.close();

}

catch( FileNotFoundException fe ){

System.out.println(“file not found”);

System.exit(0);

}

catch( IOException ie){

System.out.println(“IO error”);

System.exit(0);

}

String s =new String (ch);

ta.setText(s);//設置文本區為所打開文件的內容

}

});

//保存

miSave.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e) {

if( fileName.equals(“”) ){ //如果文件沒有被保存過,即文件名為空

FileDialog d=new FileDialog(mainFrame , “save file” , FileDialog.SAVE );//保存文件對話框

d.addWindowListener( new WindowAdapter(){ //關閉文件對話框窗口

public void windowClosing(WindowEvent ee){

System.exit(0);

}

});

d.setVisible(true);

String s = ta.getText();//得到所輸入的文本內容

try//異常處理

{

File f = new File( d.getDirectory()+d.getFile());//新建文件

fileName = d.getDirectory()+d.getFile();//得到文件名

BufferedWriter bw = new BufferedWriter( new FileWriter (f));//輸入到文件中

bw.write(s , 0 , s.length());

bw.close();

}

catch(FileNotFoundException fe_){

System.out.println(“file not found”);

System.exit(0);

}

catch( IOException ie_)

{

System.out.println(” IO error”);

System.exit(0);

}

}

else //如果文件已經保存過

{

String s = ta.getText();//得到所輸入的文本內容

try//異常處理

{

File f = new File( fileName );//新建文件

BufferedWriter bw = new BufferedWriter( new FileWriter (f));//輸入到文件中

bw.write(s , 0 , s.length());

bw.close();

}

catch(FileNotFoundException fe_){

System.out.println(“file not found”);

System.exit(0);

}

catch( IOException ie_)

{

System.out.println(” IO error”);

System.exit(0);

}

}

}

});

//另存為

miSaveAs.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e) {

FileDialog d=new FileDialog(mainFrame , “save file” , FileDialog.SAVE );//保存文件對話框

d.addWindowListener( new WindowAdapter(){ //關閉文件對話框窗口

public void windowClosing(WindowEvent ee){

System.exit(0);

}

});

d.setVisible(true);

String s = ta.getText();//得到所輸入的文本內容

try//異常處理

{

File f = new File( d.getDirectory()+d.getFile());//新建文件

BufferedWriter bw = new BufferedWriter( new FileWriter (f));//輸入到文件中

bw.write(s , 0 , s.length());

bw.close();

}

catch(FileNotFoundException fe_){

System.out.println(“file not found”);

System.exit(0);

}

catch( IOException ie_)

{

System.out.println(” IO error”);

System.exit(0);

}

}

});

//退出

miExit.addActionListener( new ActionListener(){ ///退出程序

public void actionPerformed(ActionEvent e){

System.exit(0);

}

});

////////////////”編輯”菜單:////////////////////

//剪切

miCut.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

tempString = ta.getSelectedText(); ///得到要複製的內容,暫存在tempString中

StringBuffer tmp = new StringBuffer ( ta.getText());//臨時存儲文本

int start = ta.getSelectionStart(); //得到要刪除的字元串的起始位置

int len = ta.getSelectedText().length(); //得到要刪除的字元串的長度

tmp.delete( start , start+len); ///刪除所選中的字元串

ta.setText(tmp.toString());//用新文本設置原文本

}

});

//複製

miCopy.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

tempString = ta.getSelectedText(); ///得到要複製的內容,暫存在tempString中

}

});

//粘貼

miPaste.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

StringBuffer tmp = new StringBuffer ( ta.getText());//臨時存儲文本

int start = ta.getSelectionStart(); //得到要粘貼的位置

tmp.insert(start , tempString);//查入要粘貼的內容

ta.setText(tmp.toString());//用新文本設置原文本

}

});

//刪除

miDelete.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

StringBuffer tmp = new StringBuffer ( ta.getText());//臨時存儲文本

int start = ta.getSelectionStart(); //得到要刪除的字元串的起始位置

int len = ta.getSelectedText().length(); //得到要刪除的字元串的長度

tmp.delete( start , start+len); ///刪除所選中的字元串

ta.setText(tmp.toString());//用新文本設置原文本

}

});

////////////////”格式”菜單:////////////////////

//字體

miFont.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

final Dialog d = new Dialog ( mainFrame , “Font”);//新建對話框

d.setLocation( 250 ,250);// 起始位置

d.setLayout( new BorderLayout());//表格布局

//////////////////////////上部分面板

Label l_font = new Label (“font”);//font標籤

Panel p_1 = new Panel();

p_1.add(l_font);

p_1.setVisible(true);

//////////////////////////中部分面板

List font_list = new List (6 , false);//字體列表

//添加字體項目

font_list.add(“Plain”);///普通字體

font_list.add(“Bold”); ///粗體

font_list.add(“Italic”);//斜體

font_list.addItemListener( new MyItemListener_font() ); //字體增加監視器

Panel p_2 = new Panel();

p_2.add(font_list);

p_2.setVisible(true);

//////////////////////////下部分面板

Button ok = new Button (“OK”);

ok.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

d.dispose();

}

});

ok.setSize( new Dimension (20 , 5) );

Panel p_3 = new Panel();//下部分面板

p_3.add(ok);

p_3.setVisible(true);

//添加三個面板

d.add(p_1 , BorderLayout.NORTH);

d.add(p_2 , BorderLayout.CENTER);

d.add(p_3 , BorderLayout.SOUTH);

d.pack();

d.addWindowListener( new WindowAdapter(){ //關閉對話框窗口

public void windowClosing(WindowEvent ee){

d.dispose();

}

});

d.setVisible(true);

}

});

//小寫字母轉大寫

miLowtoCapital.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

String s = ta.getText();//得到所輸入的文本內容

StringBuffer temp = new StringBuffer(“”);

for(int i = 0 ; is.length() ; i++){

if((int)s.charAt(i)=97 (int)s.charAt(i)=122 ){

temp.append((char)((int)s.charAt(i)-32));

}

else

temp.append(s.charAt(i));

}

s = new String(temp);

ta.setText(s);

}

});

//大寫字母轉小寫

miCapitaltoLow.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

String s = ta.getText();//得到所輸入的文本內容

StringBuffer temp = new StringBuffer(“”);

for(int i = 0 ; is.length() ; i++){

if((int)s.charAt(i)=65 (int)s.charAt(i)=90 ){

temp.append((char)((int)s.charAt(i)+32));

}

else

temp.append(s.charAt(i));

}

s = new String(temp);

ta.setText(s);

}

});

//加密

miEncrypt.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

String s = ta.getText();//得到所輸入的文本內容

StringBuffer temp = new StringBuffer(“”);

for(int i = 0 ; is.length() ; i++){

if(s.charAt(i)=40 s.charAt(i)=125){

if(i%2==0){

temp.append((char)(s.charAt(i) + 1 ));

}

else

temp.append((char)(s.charAt(i) – 1 ));

}

else

temp.append(s.charAt(i));

}

s = new String(temp);

ta.setText(s);

}

});

//解密

miDisencrypt.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

String s = ta.getText();//得到所輸入的文本內容

StringBuffer temp = new StringBuffer(“”);

for(int i = 0 ; is.length() ; i++){

if(s.charAt(i)=40 s.charAt(i)=125){

if(i%2==0){

temp.append((char)(s.charAt(i) – 1 ));

}

else

temp.append((char)(s.charAt(i) + 1 ));

}

else

temp.append(s.charAt(i));

}

s = new String(temp);

ta.setText(s);

}

});

////////////////”幫助”菜單:////////////////////

//關於記事本

miAboutNotepad.addActionListener( new ActionListener(){

public void actionPerformed(ActionEvent e){

final Dialog d = new Dialog ( mainFrame , “AboutNotepad”);//新建對話框

TextArea t = new TextArea(“\nwelcome to use Notepad ” + “\n\n” + “Copyright@Launching ” + “\n\n” + “free software” + “\n\n” + “v0.99”);//添加標籤

t.setSize( new Dimension ( 5 , 5));

t.setEditable(false);

d.setResizable(false);//不可調整大小

d.add(t);

d.pack();

d.addWindowListener( new WindowAdapter(){ //關閉對話框窗口

public void windowClosing(WindowEvent ee){

d.dispose();

}

});

d.setLocation( 100 ,250);// 起始位置

d.setVisible(true);

}

});

}

class MyItemListener_font implements ItemListener { //字體監聽器

public void itemStateChanged(ItemEvent e) {

id_font = ((java.awt.List)e.getSource()).getSelectedIndex();

switch( id_font){

case 0:{

ta.setFont(new Font(“Times New Roman”, Font.PLAIN ,ta.getFont().getSize()) );//普通文字

break;

}

case 1:{

ta.setFont(new Font(“Times New Roman” , Font.BOLD ,ta.getFont().getSize()) );//粗體文字

break;

}

case 2:{

ta.setFont(new Font(“Times New Roman” , Font.ITALIC ,ta.getFont().getSize()) );//斜體文字

break;

}

}

}

}

/////////////////////////////////////////主函數///////////////////////////////////////////////////

public static void main(String arg[]){

Notepad test = new Notepad(); ///創建記事本

}

//////////////////////////////////////////////////////////////////////////////////////////////////

}

java文本編輯器FileEditor

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

public class f1 extends Frame implements ActionListener

{

private MenuBar menubar=new MenuBar();

private Menu filemenu=new Menu(“文件”);

private Menu editmenu=new Menu(“編輯”);

private Menu formmenu=new Menu(“格式”);

private MenuItem[] itemf=new MenuItem[4];

private MenuItem[] iteme=new MenuItem[6];

private MenuItem[] items=new MenuItem[2];

private TextArea tf=new TextArea();

public int a=0,b=0,c=0,style=Font.PLAIN,size=15;

public String s1=”red:”+a+” “+”green:”+b+” “+”blue”+c,

s2=”宋體”;

public

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182219.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:19
下一篇 2024-11-24 06:19

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論