|
||||||
| Java Tutorials Tutorials and Code for Java |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
|
||||
|
Simple Text Editor
Good day CC !
Today, early in the morning I made my first notepad clone... with less options and solutions ! So today I am going to show you ! How to make a less of a notepad in java ! Packages we will need Code:
import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.text.*; Code:
class TextEditor extends JFrame {
Code:
private JTextArea area = new JTextArea(20,120);
private JFileChooser dialog = new JFileChooser(System.getProperty("user.dir"));
private String currentFile = "Untitled";
private boolean changed = false;
Also if you are unfamiliar with JFileChooser, then try to read more about the swing lib in Javas API page. Also by changed it will represent our flag of when things in our area changes. Constructor Part #1 Code:
public TextEditor() {
area.setFont(new Font("Monospaced",Font.PLAIN,12));
JScrollPane scroll = new JScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
add(scroll,BorderLayout.CENTER);
JMenuBar JMB = new JMenuBar();
setJMenuBar(JMB);
JMenu file = new JMenu("File");
JMenu edit = new JMenu("Edit");
JMB.add(file); JMB.add(edit);
Constructor Part #2 Code:
file.add(New);file.add(Open);file.add(Save);
file.add(Quit);file.add(SaveAs);
file.addSeparator();
for(int i=0; i<4; i++)
file.getItem(i).setIcon(null);
edit.add(Cut);edit.add(Copy);edit.add(Paste);
edit.getItem(0).setText("Cut out");
edit.getItem(1).setText("Copy");
edit.getItem(2).setText("Paste");
While adding we also position them in a correct order with our for loop and set every icon to null. Constructor Part #3 Code:
JToolBar tool = new JToolBar();
add(tool,BorderLayout.NORTH);
tool.add(New);tool.add(Open);tool.add(Save);
tool.addSeparator();
JButton cut = tool.add(Cut), cop = tool.add(Copy),pas = tool.add(Paste);
cut.setText(null); cut.setIcon(new ImageIcon("cut.gif"));
cop.setText(null); cop.setIcon(new ImageIcon("copy.gif"));
pas.setText(null); pas.setIcon(new ImageIcon("paste.gif"));
Save.setEnabled(false);
SaveAs.setEnabled(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
area.addKeyListener(k1);
setTitle(currentFile);
setVisible(true);
}
Our Save and SaveAs functions will represent the standard every time we launch the application...hence it's false... Listener Code:
private KeyListener k1 = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
changed = true;
Save.setEnabled(true);
SaveAs.setEnabled(true);
}
};
Action #1 Code:
Action Open = new AbstractAction("Open", new ImageIcon("open.gif")) {
public void actionPerformed(ActionEvent e) {
saveOld();
if(dialog.showOpenDialog(null)==JFileChooser.APPROVE_OPTION) {
readInFile(dialog.getSelectedFile().getAbsolutePath());
}
SaveAs.setEnabled(true);
}
};
Action #2 Code:
Action Save = new AbstractAction("Save", new ImageIcon("save.gif")) {
public void actionPerformed(ActionEvent e) {
if(!currentFile.equals("Untitled"))
saveFile(currentFile);
else
saveFileAs();
}
};
![]() Action #3 Code:
Action SaveAs = new AbstractAction("Save as...") {
public void actionPerformed(ActionEvent e) {
saveFileAs();
}
};
Action #4 Code:
Action Quit = new AbstractAction("Quit") {
public void actionPerformed(ActionEvent e) {
saveOld();
System.exit(0);
}
};
![]() Action Maping Code:
ActionMap m = area.getActionMap(); Action Cut = m.get(DefaultEditorKit.cutAction); Action Copy = m.get(DefaultEditorKit.copyAction); Action Paste = m.get(DefaultEditorKit.pasteAction); Methods #1 Code:
private void saveFileAs() {
if(dialog.showSaveDialog(null)==JFileChooser.APPROVE_OPTION)
saveFile(dialog.getSelectedFile().getAbsolutePath());
}
Methods #2 Code:
private void saveOld() {
if(changed) {
if(JOptionPane.showConfirmDialog(this, "Would you like to save "+ currentFile +" ?","Save",JOptionPane.YES_NO_OPTION)== JOptionPane.YES_OPTION)
saveFile(currentFile);
}
}
Method #3 Code:
private void readInFile(String fileName) {
try {
FileReader r = new FileReader(fileName);
area.read(r,null);
r.close();
currentFile = fileName;
setTitle(currentFile);
changed = false;
}
catch(IOException e) {
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(this,"Editor can't find the file called "+fileName);
}
}
Method #4 Code:
private void saveFile(String fileName) {
try {
FileWriter w = new FileWriter(fileName);
area.write(w);
w.close();
currentFile = fileName;
setTitle(currentFile);
changed = false;
Save.setEnabled(false);
}
catch(IOException e) {
}
}
The main Code:
public static void main(String[] arg) {
new TextEditor();
}
}
Hope you enjoyed to follow this tutorial as I created it for you guys ! Cheers ! Output. ![]() IconPictures JTEditor.rar
__________________
![]() Hatsune Miku ~❤❤❤ 初音ミク。~❤❤❤ |
|
||||
|
Re: Simple Text Editor
Nicely done! +rep
__________________
CodeCall Blog | CodeCall Wiki | Shareware Programming is a branch of mathematics. My CodeCall Blog | My Personal Blog |
|
||||
|
Re: Simple Text Editor
Very cool! The ending result is awesome. +rep
__________________
Questions and Answers | Online News and Social Bookmarking | Code and Text Collaboration General Chat Forum |
|
||||
|
Re: Simple Text Editor
nice lookin app!
ill +rep you when it lets me
__________________
im a code-warrior, see my avatarwho said arabs cant dance? and who said arabs cant drive??! |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| javascript error in text editor | Divya | JavaScript and CSS | 1 | 08-04-2009 10:08 AM |
| Backup current text in textbox after x amount of time | Grue | Visual Basic Programming | 4 | 06-11-2009 12:29 PM |
| Text editor for teaching a novice? | Cicero480 | Software Development Tools | 13 | 04-05-2009 02:39 AM |
| C++ Text Editor Development | Natsuki | C and C++ | 7 | 03-26-2008 07:58 AM |
| How to style fonts of a text in a simple page? | c0de | Tutorials | 3 | 09-15-2007 11:08 PM |
All times are GMT -5. The time now is 09:58 AM.
Amrosama.cc
Arekbulski.cc
Debtboy.cc
Guest.cc
Jaan.cc
James.cc
Mathx.cc
Tsz.cc
Vswe.cc