Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / Swing

Simple texteditor with Java Swing

4.71/5 (5 votes)
3 Dec 2015CPOL 29.6K   763  
A usecase for Java beginner

Using Java to Build a Simple Text Editor Application

  • Create menu, contextual menu
  • Using toolbox component
  • Using JTextPane
  • Understand JFileChooser, JColorChooser

Background

  • Basic Java UI component
  • Read/write file

Code

Load all system font on font combobox:

Java
private void loadFont() {
GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
// get all font name 
String[] fontNames = gEnv.getAvailableFontFamilyNames();
// load to combobox
ComboBoxModel model = new DefaultComboBoxModel(fontNames);
jcbFont.setModel(model);
}?

When user selects font and size, we will be setting font and size for textpane component:

Java
private void jcbFontActionPerformed(java.awt.event.ActionEvent evt) {
// Change font of text
jTextPane1.setFont(new Font(jcbFont.getSelectedItem().toString(),
Font.PLAIN, Integer.parseInt(jcbSelectSize.getSelectedItem().toString())));
}
 
private void jcbSelectSizeActionPerformed(java.awt.event.ActionEvent evt) {
// Select size of text
String getSize = jcbSelectSize.getSelectedItem().toString();
Font f = jTextPane1.getFont();
// setting new size
jTextPane1.setFont(new Font(f.getFontName(),
f.getStyle(), Integer.parseInt(getSize)));
}

JColorChooser API of Java swing helps us get a color from system color dialog, using code below for ActionPerformed event of color button.

Java
private void btnSelectColorActionPerformed(java.awt.event.ActionEvent evt) {
Color jColor = selectColor;
// open color dialog and select Color
if ((jColor = JColorChooser.showDialog(this, "Select color", jColor)) != null) {
selectColor = jColor;
// set text color
jTextPane1.setForeground(selectColor);
}
}

RTFEditorKit Can Help to Reading Formatted Text on JTextPane and Write Down File System with Rich Text Format

When user clicks on Save button or save as menu:

Java
private void save() {
JFileChooser file = new JFileChooser();
TextFilter filter = new TextFilter();
file.setFileFilter(filter);
String fileName = "";
// show save file dialog
if (file.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
// get full path of selected file
fileName = file.getSelectedFile().getAbsolutePath();
// get meta of text
StyledDocument doc = (StyledDocument) jTextPane1.getDocument();
// convert to richtext format
RTFEditorKit kit = new RTFEditorKit();
BufferedOutputStream out;
try {
out = new BufferedOutputStream(new FileOutputStream(fileName));
// save content to file
kit.write(out, doc, doc.getStartPosition().getOffset(), doc.getLength());
out.flush();
out.close();
} catch (Exception e) {
System.out.println("Err:" + e.toString());
}
 
} else {
return;
}
}

Handing button Open file or menu Open file as:

Java
private void open() {
JFileChooser file = new JFileChooser();
TextFilter filter = new TextFilter();
file.setFileFilter(filter);
String fileName = "";
// show open file dialog
if (file.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
fileName = file.getSelectedFile().getAbsolutePath();
} else {
return;
}
// using richtext format
RTFEditorKit rtf = new RTFEditorKit();
try {
// load file into jTextPane
FileInputStream fi = new FileInputStream(fileName);
rtf.read(fi, jTextPane1.getDocument(), 0);
fi.close();
} catch (Exception e) {
System.out.println("err:" + e.toString());
}
}?

Points of Interest

This is just demo Java beginner.

Maybe, see step by step video ==>> here <<==

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)