`
bluemusic
  • 浏览: 48856 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

swing 文本编辑器

阅读更多
package swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.ImageObserver;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;

import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;

public class MainFrame extends JFrame implements ActionListener {

	private static final long serialVersionUID = 295941050339534223L;
	
	Container contentPane;
	JPanel menuPanel,ctntPanel,labelPanel,centerPanel;
	JPanel filePanel,editPanel,outLookPanel,viewPanel,helpPanel;
	JMenuBar menuBar;
	JMenu fileMenu,editMenu,outLookMenu,viewMenu,helpMenu;
	JMenuItem newFile,open,save,anotherSave,pageSetup,print,quit;
	JMenuItem undo,cut,copy,paste,del,find,findNext,replace,turnto,selectAll,datetime;
	JMenuItem auto,font,status,helptheme,aboutNotepad;
	JTextArea textArea;
	JTabbedPane pane;
	File configFile;
	InputStream configIs;
	OutputStream configOs;
	Integer height;
	Integer width;
	Integer x;
	Integer y;
	Properties properties = new Properties();
	long clickTime = 0;
	
	public MainFrame() {
		super();
		
		configFile = new File("F:/HelloworldFactory/Helloworld/ThinkinJava/j2seTest/swing/config.properties");
		try {
			configIs = new FileInputStream(configFile);
			properties.load(configIs);
			
			System.out.println(properties.get("height"));
			System.out.println(properties.get("width"));
			
			height = Integer.parseInt(properties.get("height").toString().replace(".0", ""));
			width = Integer.parseInt(properties.get("width").toString().replace(".0", ""));
			x = Integer.parseInt(properties.get("X").toString());
			y = Integer.parseInt(properties.get("Y").toString());
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	public boolean checkClickTime() {
		long nowTime = (new Date()).getTime();
		if ( (nowTime - clickTime) < 300) {
			clickTime = nowTime;
			return true;
		}
		clickTime = nowTime;
		return false;
	}

	public void showContent(){
		//fileMenu
		newFile = newMenuItem(Name.XINJIAN);
		open = newMenuItem(Name.DAKAI);
		save = newMenuItem(Name.BAOCUN);
		anotherSave = newMenuItem(Name.LINGCUNWEI);
		pageSetup = newMenuItem(Name.YEMIANSHEZHI);
		print = newMenuItem(Name.DAYIN);
		quit = newMenuItem(Name.TUICHU);
		
		//editMenu
		undo = newMenuItem(Name.CHEXIAO);
		cut = newMenuItem(Name.JIANQIE);
		copy = newMenuItem(Name.FUZHI);
		paste = newMenuItem(Name.NIANTIE);
		del = newMenuItem(Name.SHANCHU);
		find = newMenuItem(Name.CHAZHAO);
		findNext = newMenuItem(Name.CHAZHAOXIAYIGE);
		replace = newMenuItem(Name.TIHUAN);
		turnto = newMenuItem(Name.ZHUANDAO);
		selectAll = newMenuItem(Name.QUANXUAN);
		datetime = newMenuItem(Name.SHIJIANRIQI);
		
		//outLookMenu
		auto = newMenuItem(Name.ZIDONGHUANHANG);
		font = newMenuItem(Name.ZITI);
		
		//viewMenu
		status = newMenuItem(Name.ZHUANGTAILAN);
//		status.setEnabled(false);
		
		//helpMenu
		helptheme = newMenuItem(Name.BANGZHUZHITI);
		aboutNotepad = newMenuItem(Name.GUANYUJISHIBEN);
		
		//tab
		pane = new JTabbedPane();
		
		fileMenu = new JMenu(Name.FILE_MENU);
		fileMenu.add(newFile);
		fileMenu.add(open);
		fileMenu.add(save);
		fileMenu.add(anotherSave);
		fileMenu.add(new JSeparator());
		fileMenu.add(pageSetup);
		fileMenu.add(print);
		fileMenu.add(new JSeparator());
		fileMenu.add(quit);
		
		editMenu = new JMenu(Name.EDIT_MENU);
		editMenu.add(undo);
		editMenu.add(new JSeparator());
		editMenu.add(cut);
		editMenu.add(copy);
		editMenu.add(paste);
		editMenu.add(del);
		editMenu.add(new JSeparator());
		editMenu.add(find);
		editMenu.add(findNext);
		editMenu.add(replace);
		editMenu.add(turnto);
		editMenu.add(new JSeparator());
		editMenu.add(selectAll);
		editMenu.add(datetime);

		outLookMenu = new JMenu(Name.OUTLOOK_MENU);
		outLookMenu.add(auto);
		outLookMenu.add(font);

		viewMenu = new JMenu(Name.VIEW_MENU);
		viewMenu.add(status);

		helpMenu = new JMenu(Name.HELP_MENU);
		helpMenu.add(helptheme);
		helpMenu.add(new JSeparator());
		helpMenu.add(aboutNotepad);
		
		
		textArea = new JTextArea();
		
		menuBar = new JMenuBar();
		menuBar.add(fileMenu);
		menuBar.add(editMenu);
		menuBar.add(outLookMenu);
		menuBar.add(viewMenu);
		menuBar.add(helpMenu);
		
		menuPanel = new JPanel(new GridLayout());
		menuPanel.add(menuBar);
		JScrollPane scrollPane = new JScrollPane(textArea);
		ctntPanel = new JPanel(new GridLayout());
		ctntPanel.add(scrollPane);
//		pane.addTab("编辑1",scrollPane);
		pane.addMouseListener(new MouseListener(){
			public void mouseReleased(MouseEvent e) {
				if(checkClickTime()){
					int index = pane.getSelectedIndex();
					System.out.println("hello:  " + index);
					if(index>=0)
					pane.removeTabAt(index);
				}
			}
			public void mouseClicked(MouseEvent e) {
				
			}
			public void mouseEntered(MouseEvent e) {}
			public void mouseExited(MouseEvent e) {}
			public void mousePressed(MouseEvent e) {}
		});
		
		centerPanel = new JPanel(new GridLayout());
		centerPanel.add(pane);
		
		contentPane.add(menuPanel,BorderLayout.NORTH);
		contentPane.add(centerPanel,BorderLayout.CENTER);
//		contentPane.add(labelPanel,BorderLayout.SOUTH);
		Toolkit tk=Toolkit.getDefaultToolkit();
		Image image=tk.createImage("F:/HelloworldFactory/Helloworld/ThinkinJava/j2seTest/swing/title.png"); /*image.gif是你的图标*/ 
		this.setIconImage(image);
		
//		contentPane.add(new JScrollPane(textArea),BorderLayout.CENTER);
	}
	
	public JMenuItem newMenuItem(String name){
		JMenuItem menuItem = new JMenuItem(name);
		menuItem.addActionListener(this);
		return menuItem;
	}
	
	public void init(){
		contentPane =  getContentPane(); 
		setContentPane(contentPane); 
		setTitle("CK  记事本 v0.1"); 
	}
	
	public void showFrame(){
		addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				super.windowClosing(e);
                dispose(); 
                
    			properties.setProperty("height", getSize().getHeight()+"");
    			properties.setProperty("width", getSize().getWidth()+"");
    			properties.setProperty("X", getX()+"");
    			properties.setProperty("Y", getY()+"");
    			
    			try {
    				configOs = new FileOutputStream(configFile);
					properties.store(configOs, "");
				} catch (IOException e1) {
					e1.printStackTrace();
				}
                System.exit(0); 
			}
		});
		pack();
		
        setSize(width, height);
        setLocation(x, y);
        setVisible(true); 
	}
	
	
	public void showAll(){
		init();
		showContent();
		showFrame();
	}
	
	public static void main(String[] args) {
		MainFrame frame = new MainFrame();
		frame.showAll();
	}

	@Override
	public void pack() {
		super.pack();
	}
	
	public void actionPerformed(ActionEvent e) {
		String action = e.getActionCommand();
		System.out.println(action);
		if(action.equals(Name.XINJIAN)){
			textArea.setText(null);
			pane.addTab("编辑",new JScrollPane(textArea));
			System.out.println("text area:  "+textArea.getText().length());
		}
		if(action.equals(Name.DAKAI)){
			JFileChooser fileChooser = new JFileChooser();
			fileChooser.showOpenDialog(this);
			if(fileChooser.getSelectedFile()==null){
				System.out.println("未选中文件");
			}else{
				File file = fileChooser.getSelectedFile();
				if(file.getName().endsWith(".txt")==true){
					FileOperation fo = new FileOperation();
					fo.readFile(file,textArea);
					pane.addTab(file.getAbsolutePath(),new JScrollPane(textArea));
				}else{
					JOptionPane.showMessageDialog(this, "暂只支持.txt");
				}
			}
		}
		if(action.equals(Name.BAOCUN)){
			
		}
		if(action.equals(Name.LINGCUNWEI)){
			JFileChooser fileChooser = new JFileChooser();
			fileChooser.showSaveDialog(this);
		}
		if(action.equals(Name.YEMIANSHEZHI)){
			//以后处理
		}
		if(action.equals(Name.DAYIN)){
			//以后处理
		}
		if(action.equals(Name.TUICHU)){
			dispose(); 
	        System.exit(0); 
		}
		if(action.equals(Name.ZIDONGHUANHANG)){
			auto.setText(Name.ZIDONGHUANHANG2);
			textArea.setLineWrap(true);
			status.setEnabled(false);
		}
		if(action.equals(Name.ZIDONGHUANHANG2)){
			auto.setText(Name.ZIDONGHUANHANG);
			textArea.setLineWrap(false);
			status.setEnabled(true);
		}
		if(action.equals(Name.ZITI)){
			System.out.println("1111");
			
		}
	}

}

 

分享到:
评论

相关推荐

    Swing文本编辑器

    在这个"Swing文本编辑器"项目中,我们将会探讨如何使用Swing来开发一个基本的文本编辑器。 Swing文本编辑器的核心组件是`JTextArea`,这是一个可以显示和编辑多行文本的组件。我们可以使用`JScrollPane`来包裹`...

    最全面的swing文本编辑器

    "最全面的Swing文本编辑器"是一个利用Java Swing构建的高级文本编辑器,旨在提供比标准记事本更丰富的功能,如插入图片、鼠标绘图等。这个编辑器可能是一个很好的示例,用于学习如何在Swing环境中扩展基本组件以实现...

    java swing文本编辑器

    总之,创建一个Java Swing文本编辑器涉及到多个技术层面,包括组件使用、事件处理、文件操作、文本格式化以及可能的扩展功能实现。通过深入理解和实践这些知识点,开发者可以构建出功能完备且用户友好的文本编辑器。

    基于JavaSwing文本编辑器

    利用Java Swing提供的各种组件开发出一款具有一定实用功能的文本编辑器。该编辑器能完成的主要功能:菜单栏、工具栏、快显菜单以及文件、编辑、视图等菜单内的常用子项目。学习和掌握Java Swing的相关知识

    MyEditor[swing界面-文本编辑器-功能实现版].rar

    《MyEditor:Swing界面构建的文本编辑器详解》 在计算机编程领域,文本编辑器是一种必不可少的工具,用于创建、查看和修改各种文本文件。本文将深入探讨名为"MyEditor"的文本编辑器,它基于Java Swing库构建,提供...

    Swing实现编辑器(支持语法高亮)

    总的来说,使用Swing实现一个支持语法高亮的编辑器是一项挑战性的任务,需要深入理解GUI编程、文本处理和解析技术。但通过精心设计和适当利用已有资源,可以创建出功能强大、用户友好的代码编辑器。

    swing类型多页面文本编辑器java源代码

    Swing类型的多页面文本编辑器是Java编程领域中一个典型的桌面应用示例,它结合了Swing组件和Java丰富的文本处理能力,为用户提供了一个能够同时处理多个文本文档的环境。Swing是Java Foundation Classes (JFC)的一...

    java swing实现文本编辑器

    java使用图形用户界面swing实现,能够在linux 下运行的类似windows平台的文本编辑软件。这个应用程序实现了基本的文本编辑功能,包括新建、打开、保存、退出、粘贴等操作,并提供了帮助和关于信息的显示功能,拿来就...

    文本编辑器(java)

    在这个“文本编辑器(java)”项目中,开发者使用Java Swing或JavaFX库来构建GUI,这两个库提供了丰富的组件和API,可以方便地创建出具有现代感的用户界面。 GUI设计包括了各种元素,如菜单栏、工具栏、文本区域等...

    简易文本编辑器........

    简易文本编辑器是一种基础但实用的软件工具,用于创建、查看和编辑纯文本文件。它不包含复杂的格式化选项,通常被程序员、开发者以及需要快速处理简单文本的用户所使用。在本文中,我们将深入探讨简易文本编辑器的...

    RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器.zip

    RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器 RSyntaxTextArea是 Java Swing 应用程序的一个可以自定义的语法高亮文本组件。 开箱即用,它支持 40 + 编程语言。代码折叠。搜索和替换...

    文本编辑器(java写的实用小程序)

    【文本编辑器(Java编写的实用工具)】 在IT领域,文本编辑器是开发者们日常工作中不可或缺的工具,用于创建、查看和修改各种文本文件。本文将深入探讨一个由Java编程语言实现的实用文本编辑器,它模仿了Windows...

    基于Swing应用程序设计:一个简易的文本编辑框

    这个标题表明我们将讨论如何使用Java的Swing库来设计一个基本的文本编辑器。Swing是Java提供的一个用于构建图形用户界面(GUI)的工具包,它包含了各种组件,如按钮、菜单、文本框等,方便开发者创建桌面应用程序。 ...

    swing写的文本编辑器

    在Java中,Swing提供了丰富的组件库,用于创建美观且功能强大的桌面应用程序,包括文本编辑器。本项目就是一个基于Swing构建的文本编辑器,允许用户进行文本编辑、保存等操作。 在Swing中,主要使用`javax.swing.*`...

    JAVA文本编辑器源码

    Swing的一个核心特性是平台无关性,这意味着Java文本编辑器可以在任何支持Java运行环境的操作系统上运行,包括Windows、Linux和Mac OS等,实现了“一次编写,到处运行”的目标。 在源码中,我们可以看到Swing组件如...

    文本编辑器源码

    文本编辑器是计算机科学领域中一个基础且至关重要的工具,它允许用户创建、修改和查看各种类型的文本文件,包括编程代码、文档、笔记等。在本主题中,“文本编辑器源码”指的是提供了编辑器功能的软件源代码,这通常...

    java文本编辑器源码

    在这个文本编辑器中,Swing组件如JFrame、JPanel、JTextArea、JButton等被用来创建窗口、面板、文本区域和按钮等元素。 3. **事件监听**:Swing使用事件监听机制处理用户的交互操作,如点击按钮、选择菜单项等。在...

    java简易文本编辑器

    Java简易文本编辑器是一款基于Java编程语言开发的轻量级应用程序,主要功能是提供文本的查看、编辑以及查找替换操作。这款编辑器旨在为用户提供一个简单易用的平台,进行基本的文字处理工作,如编写代码、记事或者...

    java文本编辑器

    在Java中实现文本编辑器涉及到多个核心概念和技术,包括Swing或JavaFX图形用户界面(GUI)库,事件处理,文件I/O操作以及文本处理算法。下面将详细介绍这些知识点。 1. **Swing或JavaFX**: - **Swing**:是Java的...

Global site tag (gtag.js) - Google Analytics