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文本编辑器的核心组件是`JTextArea`,这是一个可以显示和编辑多行文本的组件。我们可以使用`JScrollPane`来包裹`...
"最全面的Swing文本编辑器"是一个利用Java Swing构建的高级文本编辑器,旨在提供比标准记事本更丰富的功能,如插入图片、鼠标绘图等。这个编辑器可能是一个很好的示例,用于学习如何在Swing环境中扩展基本组件以实现...
总之,创建一个Java Swing文本编辑器涉及到多个技术层面,包括组件使用、事件处理、文件操作、文本格式化以及可能的扩展功能实现。通过深入理解和实践这些知识点,开发者可以构建出功能完备且用户友好的文本编辑器。
利用Java Swing提供的各种组件开发出一款具有一定实用功能的文本编辑器。该编辑器能完成的主要功能:菜单栏、工具栏、快显菜单以及文件、编辑、视图等菜单内的常用子项目。学习和掌握Java Swing的相关知识
《MyEditor:Swing界面构建的文本编辑器详解》 在计算机编程领域,文本编辑器是一种必不可少的工具,用于创建、查看和修改各种文本文件。本文将深入探讨名为"MyEditor"的文本编辑器,它基于Java Swing库构建,提供...
总的来说,使用Swing实现一个支持语法高亮的编辑器是一项挑战性的任务,需要深入理解GUI编程、文本处理和解析技术。但通过精心设计和适当利用已有资源,可以创建出功能强大、用户友好的代码编辑器。
Swing类型的多页面文本编辑器是Java编程领域中一个典型的桌面应用示例,它结合了Swing组件和Java丰富的文本处理能力,为用户提供了一个能够同时处理多个文本文档的环境。Swing是Java Foundation Classes (JFC)的一...
java使用图形用户界面swing实现,能够在linux 下运行的类似windows平台的文本编辑软件。这个应用程序实现了基本的文本编辑功能,包括新建、打开、保存、退出、粘贴等操作,并提供了帮助和关于信息的显示功能,拿来就...
在这个“文本编辑器(java)”项目中,开发者使用Java Swing或JavaFX库来构建GUI,这两个库提供了丰富的组件和API,可以方便地创建出具有现代感的用户界面。 GUI设计包括了各种元素,如菜单栏、工具栏、文本区域等...
简易文本编辑器是一种基础但实用的软件工具,用于创建、查看和编辑纯文本文件。它不包含复杂的格式化选项,通常被程序员、开发者以及需要快速处理简单文本的用户所使用。在本文中,我们将深入探讨简易文本编辑器的...
RSyntaxTextArea, 用于 Java Swing 应用程序的语法高亮,代码折叠文本编辑器 RSyntaxTextArea是 Java Swing 应用程序的一个可以自定义的语法高亮文本组件。 开箱即用,它支持 40 + 编程语言。代码折叠。搜索和替换...
【文本编辑器(Java编写的实用工具)】 在IT领域,文本编辑器是开发者们日常工作中不可或缺的工具,用于创建、查看和修改各种文本文件。本文将深入探讨一个由Java编程语言实现的实用文本编辑器,它模仿了Windows...
这个标题表明我们将讨论如何使用Java的Swing库来设计一个基本的文本编辑器。Swing是Java提供的一个用于构建图形用户界面(GUI)的工具包,它包含了各种组件,如按钮、菜单、文本框等,方便开发者创建桌面应用程序。 ...
在Java中,Swing提供了丰富的组件库,用于创建美观且功能强大的桌面应用程序,包括文本编辑器。本项目就是一个基于Swing构建的文本编辑器,允许用户进行文本编辑、保存等操作。 在Swing中,主要使用`javax.swing.*`...
Swing的一个核心特性是平台无关性,这意味着Java文本编辑器可以在任何支持Java运行环境的操作系统上运行,包括Windows、Linux和Mac OS等,实现了“一次编写,到处运行”的目标。 在源码中,我们可以看到Swing组件如...
文本编辑器是计算机科学领域中一个基础且至关重要的工具,它允许用户创建、修改和查看各种类型的文本文件,包括编程代码、文档、笔记等。在本主题中,“文本编辑器源码”指的是提供了编辑器功能的软件源代码,这通常...
在这个文本编辑器中,Swing组件如JFrame、JPanel、JTextArea、JButton等被用来创建窗口、面板、文本区域和按钮等元素。 3. **事件监听**:Swing使用事件监听机制处理用户的交互操作,如点击按钮、选择菜单项等。在...
Java简易文本编辑器是一款基于Java编程语言开发的轻量级应用程序,主要功能是提供文本的查看、编辑以及查找替换操作。这款编辑器旨在为用户提供一个简单易用的平台,进行基本的文字处理工作,如编写代码、记事或者...
在Java中实现文本编辑器涉及到多个核心概念和技术,包括Swing或JavaFX图形用户界面(GUI)库,事件处理,文件I/O操作以及文本处理算法。下面将详细介绍这些知识点。 1. **Swing或JavaFX**: - **Swing**:是Java的...