import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import java.net.*;
public class WordProcessor
{
JFrame frame;
JPanel panel;
JTextPane textPane;
JScrollPane scrollPane;
JPopupMenu menu;
JMenuBar menuBar;
JButton btnBold, btnItalic, btnUnderline, btnLeft, btnCenter, btnRight, btnFont, btnColor;
JFileChooser fileChooser;
File file;
String fontName;
int fontSize;
Color fontColor;
public static void main(String[] args)
{
new WordProcessor();
}
public WordProcessor()
{
// Create the frame
frame = new JFrame("Word Processor");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create the main panel
panel = new JPanel(new BorderLayout());
frame.add(panel);
// Create the textPane
textPane = new JTextPane();
textPane.setBackground(Color.WHITE);
textPane.setSelectionColor(Color.BLUE);
textPane.setSelectedTextColor(Color.WHITE);
// Create the scrollpane
scrollPane = new JScrollPane(textPane);
panel.add(scrollPane, BorderLayout.CENTER);
// Create the popup menu
menu = new JPopupMenu();
menu.add(new JMenuItem("Cut")).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textPane.cut();
}
});
menu.add(new JMenuItem("Copy")).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textPane.copy();
}
});
menu.add(new JMenuItem("Paste")).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textPane.paste();
}
});
textPane.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
// Create the menubar
menuBar = new JMenuBar();
menuBar.add(new JMenu("File")).add(new JMenuItem("New")).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textPane.setText("");
}
});
menuBar.add(new JMenuItem("Open")).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileChooser = new JFileChooser();
int returnVal = fileChooser.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
file = fileChooser.getSelectedFile();
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
String str = new String(data, "UTF-8");
textPane.setText(str);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
menuBar.add(new JMenuItem("Save")).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (file == null) {
fileChooser = new JFileChooser();
int returnVal = fileChooser.showSaveDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
}
}
try {
FileOutputStream fos = new FileOutputStream(file);
String str = textPane.getText();
fos.write(str.getBytes());
fos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
frame.setJMenuBar(menuBar);
// Create the toolbar
JToolBar toolBar = new JToolBar();
btnBold = new JButton("B");
btnBold.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setBold(attr, !StyleConstants.isBold(attr));
doc.setCharacterAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnItalic = new JButton("I");
btnItalic.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setItalic(attr, !StyleConstants.isItalic(attr));
doc.setCharacterAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnUnderline = new JButton("U");
btnUnderline.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setUnderline(attr, !StyleConstants.isUnderline(attr));
doc.setCharacterAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnLeft = new JButton("Left");
btnLeft.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_LEFT);
doc.setParagraphAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnCenter = new JButton("Center");
btnCenter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnRight = new JButton("Right");
btnRight.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_RIGHT);
doc.setParagraphAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnFont = new JButton("Font");
btnFont.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FontDialog fontDialog = new FontDialog(frame, fontName, fontSize);
fontDialog.setVisible(true);
fontName = fontDialog.getFontName();
fontSize = fontDialog.getFontSize();
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setFontFamily(attr, fontName);
StyleConstants.setFontSize(attr, fontSize);
doc.setCharacterAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
btnColor = new JButton("Color");
btnColor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ColorDialog colorDialog = new ColorDialog(frame, fontColor);
colorDialog.setVisible(true);
fontColor = colorDialog.getColor();
StyledDocument doc = (StyledDocument) textPane.getDocument();
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setForeground(attr, fontColor);
doc.setCharacterAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd() - textPane.getSelectionStart(), attr, true);
}
});
toolBar.add(btnBold);
toolBar.add(btnItalic);
toolBar.add(btnUnderline);
toolBar.add(btnLeft);
toolBar.add(btnCenter);
toolBar.add(btnRight);
toolBar.add(btnFont);
toolBar.add(btnColor);
panel.add(toolBar, BorderLayout.NORTH);
// Show the frame
frame.setVisible(true);
}
}