The following miniEditor uses Swing components:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.io.File;
javax.swing.JFrame frame;
java.awt.Canvas canvas;
JTextArea txtArea;
JButton open;
JButton save;
JButton saveAs;
JButton clearBtn;
File file;
final int _wndW = 600;
final int _wndH = 600;
void clearAction(){
String s = "";
txtArea.setText(s);
}
void saveAs(){
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showSaveDialog(frame);
if(option == JFileChooser.APPROVE_OPTION){
file = fileChooser.getSelectedFile();
println("file = ",file);
} else {
println("SaveAs canceled.");
exit();
}
try {
String content = txtArea.getText();
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file) ;
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
} catch (IOException e) {
//e.printStackTrace();
JOptionPane.showMessageDialog(saveAs, e);
}
}
void openBtn() {
open = new JButton("Open");
open.setBounds(20, 10, 80, 24);
frame.add(open);
// **** Open Action **** //
open.addActionListener( new ActionListener() {
void actionPerformed(ActionEvent event) {
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showOpenDialog(fileChooser);
if (option == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
try {
BufferedReader buffer = new BufferedReader(new FileReader(file));
String s1 = "", s2 = "";
while ((s1 = buffer.readLine())!= null) {
s2 += s1 + "\n";
}
txtArea.setText(s2);
buffer.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(open,e);
}
}
}
}
);
open.repaint();
}
void saveBtn() {
save = new JButton("Save");
save.setBounds(110, 10, 80, 24);
frame.add(save);
// **** Save Action **** //
save.addActionListener( new ActionListener() {
void actionPerformed(ActionEvent event) {
println("Save hit.", file);
if (file != null) {
try {
String content = txtArea.getText();
FileWriter fw = new FileWriter(file) ;
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
} catch (IOException e) {
// e.printStackTrace();
JOptionPane.showMessageDialog(save,e);
}
} else {
saveAs(); // file has no name; show save dialog to give it one.
}
}
}
);
save.repaint();
}
void saveAsBtn() {
saveAs = new JButton("SaveAs...");
saveAs.setBounds(200, 10, 80, 24);
frame.add(saveAs);
// **** SaveAs Action **** //
saveAs.addActionListener( new ActionListener() {
void actionPerformed(ActionEvent event) {
println("SaveAs hit.");
saveAs();
}
}
);
saveAs.repaint();
}
void clearBtn() {
clearBtn = new JButton("Clear");
clearBtn.setBounds(290, 10, 80, 24);
frame.add(clearBtn);
// **** Clear Action **** //
clearBtn.addActionListener( new ActionListener() {
void actionPerformed(ActionEvent event) {
println("Clear hit.");
clearAction();
}
}
);
clearBtn.repaint();
}
void textArea() {
txtArea = new JTextArea();
JScrollPane scrlPane = new JScrollPane(txtArea);
scrlPane.setBounds(10, 40, _wndW-20, _wndH - 80);
frame.add(scrlPane);
txtArea.setEditable(true);
// txtArea.setFont(new Font("Menlo", Font.BOLD, 16));
txtArea.setLineWrap(true);
txtArea.setWrapStyleWord(true);
txtArea.repaint();
}
void buildWnd() {
textArea();
openBtn();
saveBtn();
saveAsBtn();
clearBtn();
}
void setup() {
frame = (javax.swing.JFrame) ((processing.awt.PSurfaceAWT.SmoothCanvas) surface.getNative()).getFrame();
canvas = (processing.awt.PSurfaceAWT.SmoothCanvas) ((processing.awt.PSurfaceAWT)surface).getNative();
frame.setBounds(500, 300, _wndW, _wndH);
frame.remove(canvas);
surface.setTitle("miniEditor");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
buildWnd(); // Builds components on EventDispatchThread
}
}
);
}