/* * SimpleEditor.java * * Created on 2010/06/18, 15:30 */ /** * * @author 4109146y */ import java.io.*; import javax.swing.*; import javax.swing.undo.*; import javax.swing.event.*; import java.nio.file.*; public class SimpleEditor extends javax.swing.JFrame { /** Creates new form SimpleEditor */ public SimpleEditor() { initComponents(); setSize(600,420); // jTextArea.getDocument().addUndoableEditListener(new UM_Listener()); jTextArea.getDocument().addUndoableEditListener(new javax.swing.event.UndoableEditListener() { public void undoableEditHappened(javax.swing.event.UndoableEditEvent e) { //行われた編集(文字の追加や削除)をUndoManagerに登録 uM.addEdit(e.getEdit()); } }); //jTextArea1.setLayout(new java.awt.FlowLayout()); jFileChooser1.setFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("テキストファイル", "txt")); jFileChooser1.addChoosableFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("HTMLファイル", "html", "htm")); jFileChooser1.setSelectedFile(new java.io.File(java.text.DateFormat.getDateInstance( java.text.DateFormat.FULL).format(new java.util.Date())+".txt"));//日付をファイル名に設定 } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // //GEN-BEGIN:initComponents private void initComponents() { jFileChooser1 = new javax.swing.JFileChooser(); jColorChooser1 = new javax.swing.JColorChooser(); buttonGroup1 = new javax.swing.ButtonGroup(); browserDialog = new javax.swing.JDialog(); googleButton = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jTextArea = new javax.swing.JTextArea(); jToolBar2 = new javax.swing.JToolBar(); newFileButton = new javax.swing.JButton(); openFileButton = new javax.swing.JButton(); saveFileButton = new javax.swing.JButton(); cutButton = new javax.swing.JButton(); copyButton = new javax.swing.JButton(); pasteButton = new javax.swing.JButton(); undoButton = new javax.swing.JButton(); redoButton = new javax.swing.JButton(); searchButton = new javax.swing.JButton(); searchTextField = new javax.swing.JTextField(); replaceButton = new javax.swing.JButton(); replaceTextField = new javax.swing.JTextField(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jMenuBar1 = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); newFIleMenuItem = new javax.swing.JMenuItem(); openFileMenuItem = new javax.swing.JMenuItem(); saveFIleMenuItem = new javax.swing.JMenuItem(); nameAsMenuItem = new javax.swing.JMenuItem(); printMenuItem = new javax.swing.JMenuItem(); editMenu = new javax.swing.JMenu(); undoMenuItem = new javax.swing.JMenuItem(); redoMenuItem = new javax.swing.JMenuItem(); cutMenuItem = new javax.swing.JMenuItem(); copyMenuItem = new javax.swing.JMenuItem(); pasteMenuItem = new javax.swing.JMenuItem(); formatMenu = new javax.swing.JMenu(); fontMenu = new javax.swing.JMenu(); fontSizeMenu = new javax.swing.JMenu(); largeRadioButtonMenuItem = new javax.swing.JRadioButtonMenuItem(); midRadioButtonMenuItem = new javax.swing.JRadioButtonMenuItem(); smallRadioButtonMenuItem = new javax.swing.JRadioButtonMenuItem(); fontStyleMenu = new javax.swing.JMenu(); boldCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem(); italicCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem(); lineWrapMenuItem = new javax.swing.JMenuItem(); bgColorMenuItem = new javax.swing.JMenuItem(); fgColorMenuItem = new javax.swing.JMenuItem(); signMenuItem = new javax.swing.JMenuItem(); fontMenuItem = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); vesionMenuItem = new javax.swing.JMenuItem(); browserMenuItem = new javax.swing.JMenuItem(); jFileChooser1.setCurrentDirectory(null); googleButton.setText("グーグル"); googleButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { googleButtonActionPerformed(evt); } }); browserDialog.getContentPane().add(googleButton, java.awt.BorderLayout.CENTER); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jScrollPane1.setVerifyInputWhenFocusTarget(false); jTextArea.setColumns(20); jTextArea.setFont(new java.awt.Font("HG丸ゴシックM-PRO", 0, 12)); // NOI18N jTextArea.setRows(5); jTextArea.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { jTextAreaKeyTyped(evt); } }); jScrollPane1.setViewportView(jTextArea); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); newFileButton.setText("新規"); newFileButton.setFocusable(false); newFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); newFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); newFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newFileActionPerformed(evt); } }); jToolBar2.add(newFileButton); openFileButton.setText("開く"); openFileButton.setFocusable(false); openFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); openFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); openFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { openFileActionPerformed(evt); } }); jToolBar2.add(openFileButton); saveFileButton.setText("保存"); saveFileButton.setFocusable(false); saveFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); saveFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); saveFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveFileActionPerformed(evt); } }); jToolBar2.add(saveFileButton); cutButton.setText("カット"); cutButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cutActionPerformed(evt); } }); jToolBar2.add(cutButton); copyButton.setText("コピー"); copyButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { copyActionPerformed(evt); } }); jToolBar2.add(copyButton); pasteButton.setText("ペースト"); pasteButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pasteActionPerformed(evt); } }); jToolBar2.add(pasteButton); undoButton.setText("Undo"); undoButton.setFocusable(false); undoButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); undoButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); undoButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { undoActionPerformed(evt); } }); jToolBar2.add(undoButton); redoButton.setText("Redo"); redoButton.setFocusable(false); redoButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); redoButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); redoButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { redoActionPerformed(evt); } }); jToolBar2.add(redoButton); searchButton.setText("検索"); searchButton.setFocusable(false); searchButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); searchButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); searchButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { searchActionPerformed(evt); } }); jToolBar2.add(searchButton); jToolBar2.add(searchTextField); replaceButton.setText("置換"); replaceButton.setFocusable(false); replaceButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); replaceButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); replaceButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { replaceActionPerformed(evt); } }); jToolBar2.add(replaceButton); jToolBar2.add(replaceTextField); getContentPane().add(jToolBar2, java.awt.BorderLayout.NORTH); jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.LINE_AXIS)); jLabel1.setText("文字数"); jPanel1.add(jLabel1); getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END); fileMenu.setText("ファイル"); newFIleMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); newFIleMenuItem.setText("新規ファイル"); newFIleMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newFileActionPerformed(evt); } }); fileMenu.add(newFIleMenuItem); openFileMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); openFileMenuItem.setText("ファイルを開く"); openFileMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { openFileActionPerformed(evt); } }); fileMenu.add(openFileMenuItem); saveFIleMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); saveFIleMenuItem.setText("上書き保存"); saveFIleMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveFileActionPerformed(evt); } }); fileMenu.add(saveFIleMenuItem); nameAsMenuItem.setText("名前をつけて保存"); nameAsMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { nameAsMenuItemActionPerformed(evt); } }); fileMenu.add(nameAsMenuItem); printMenuItem.setText("印刷"); printMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { printMenuItemActionPerformed(evt); } }); fileMenu.add(printMenuItem); jMenuBar1.add(fileMenu); editMenu.setText("編集"); undoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); undoMenuItem.setText("Undo"); undoMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { undoActionPerformed(evt); } }); editMenu.add(undoMenuItem); redoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, java.awt.event.InputEvent.CTRL_MASK)); redoMenuItem.setText("Redo"); redoMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { redoActionPerformed(evt); } }); editMenu.add(redoMenuItem); cutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); cutMenuItem.setText("カット"); cutMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cutActionPerformed(evt); } }); editMenu.add(cutMenuItem); copyMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); copyMenuItem.setText("コピー"); copyMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { copyActionPerformed(evt); } }); editMenu.add(copyMenuItem); pasteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); pasteMenuItem.setText("ペースト"); pasteMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pasteActionPerformed(evt); } }); editMenu.add(pasteMenuItem); jMenuBar1.add(editMenu); formatMenu.setText("書式"); fontMenu.setText("書体"); fontSizeMenu.setText("フォントサイズ"); buttonGroup1.add(largeRadioButtonMenuItem); largeRadioButtonMenuItem.setText("大"); largeRadioButtonMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { largeRadioButtonMenuItemActionPerformed(evt); } }); fontSizeMenu.add(largeRadioButtonMenuItem); buttonGroup1.add(midRadioButtonMenuItem); midRadioButtonMenuItem.setSelected(true); midRadioButtonMenuItem.setText("中"); midRadioButtonMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { midRadioButtonMenuItemActionPerformed(evt); } }); fontSizeMenu.add(midRadioButtonMenuItem); buttonGroup1.add(smallRadioButtonMenuItem); smallRadioButtonMenuItem.setText("小"); smallRadioButtonMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { smallRadioButtonMenuItemActionPerformed(evt); } }); fontSizeMenu.add(smallRadioButtonMenuItem); fontMenu.add(fontSizeMenu); fontStyleMenu.setText("スタイル"); boldCheckBoxMenuItem.setText("太字"); boldCheckBoxMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fontStyleActionPerformed(evt); } }); fontStyleMenu.add(boldCheckBoxMenuItem); italicCheckBoxMenuItem.setText("斜体"); italicCheckBoxMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fontStyleActionPerformed(evt); } }); fontStyleMenu.add(italicCheckBoxMenuItem); fontMenu.add(fontStyleMenu); formatMenu.add(fontMenu); lineWrapMenuItem.setText("折り返し"); lineWrapMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { lineWrapMenuItemActionPerformed(evt); } }); formatMenu.add(lineWrapMenuItem); bgColorMenuItem.setText("背景色"); bgColorMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bgColorMenuItemActionPerformed(evt); } }); formatMenu.add(bgColorMenuItem); fgColorMenuItem.setText("文字色"); fgColorMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fgColorMenuItemActionPerformed(evt); } }); formatMenu.add(fgColorMenuItem); signMenuItem.setText("署名"); signMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { signMenuItemActionPerformed(evt); } }); formatMenu.add(signMenuItem); fontMenuItem.setText("フォント"); fontMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fontMenuItemActionPerformed(evt); } }); formatMenu.add(fontMenuItem); jMenuBar1.add(formatMenu); helpMenu.setText("ヘルプ"); vesionMenuItem.setText("ヴァージョン情報"); vesionMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { vesionMenuItemActionPerformed(evt); } }); helpMenu.add(vesionMenuItem); browserMenuItem.setText("ブラウザ"); browserMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { browserMenuItemActionPerformed(evt); } }); helpMenu.add(browserMenuItem); jMenuBar1.add(helpMenu); setJMenuBar(jMenuBar1); pack(); }// //GEN-END:initComponents private void signMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_signMenuItemActionPerformed jTextArea.append("放送大学 客員教授\n山崎 秀記\nyamasaki.hideki@r.hit-u.ac.jp"); }//GEN-LAST:event_signMenuItemActionPerformed private void fgColorMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fgColorMenuItemActionPerformed jTextArea.setForeground(jColorChooser1.showDialog(this,"文字色",java.awt.Color.black)); }//GEN-LAST:event_fgColorMenuItemActionPerformed private void bgColorMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bgColorMenuItemActionPerformed jTextArea.setBackground(jColorChooser1.showDialog(this,"背景色",java.awt.Color.white)); }//GEN-LAST:event_bgColorMenuItemActionPerformed private void printMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_printMenuItemActionPerformed try{ jTextArea.print(); }catch(Exception e){ javax.swing.JOptionPane.showMessageDialog(this,"印刷エラー","簡易エディタ",javax.swing.JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_printMenuItemActionPerformed private void saveFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveFileActionPerformed if (file != null) writeTo(file,jTextArea); else nameAsMenuItemActionPerformed(evt); }//GEN-LAST:event_saveFileActionPerformed private void newFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newFileActionPerformed setTitle("Simple Editor:無題.txt"); file=null; jTextArea.setText(""); }//GEN-LAST:event_newFileActionPerformed private void nameAsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nameAsMenuItemActionPerformed if (jFileChooser1.showSaveDialog(this)==javax.swing.JFileChooser.APPROVE_OPTION) { file=jFileChooser1.getSelectedFile(); setTitle("Simple Editor:"+file.getName()); writeTo(file,jTextArea); } }//GEN-LAST:event_nameAsMenuItemActionPerformed private void openFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openFileActionPerformed if (jFileChooser1.showOpenDialog(this)==javax.swing.JFileChooser.APPROVE_OPTION) { java.io.File file=jFileChooser1.getSelectedFile(); setTitle("Simple Editor:"+file.getName()); readFrom(file,jTextArea); } }//GEN-LAST:event_openFileActionPerformed private void vesionMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vesionMenuItemActionPerformed javax.swing.JOptionPane.showMessageDialog(this, "Version 1.0\n Created by Yamasaki Hideki \n 2010/6/25", "簡易エディタ", javax.swing.JOptionPane.INFORMATION_MESSAGE); }//GEN-LAST:event_vesionMenuItemActionPerformed private void lineWrapMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lineWrapMenuItemActionPerformed jTextArea.setLineWrap(! jTextArea.getLineWrap()); }//GEN-LAST:event_lineWrapMenuItemActionPerformed private void pasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteActionPerformed jTextArea.paste(); }//GEN-LAST:event_pasteActionPerformed private void copyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyActionPerformed jTextArea.copy(); }//GEN-LAST:event_copyActionPerformed private void cutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cutActionPerformed jTextArea.cut(); }//GEN-LAST:event_cutActionPerformed private void undoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_undoActionPerformed if (uM.canUndo()) uM.undo(); }//GEN-LAST:event_undoActionPerformed private void redoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_redoActionPerformed if (uM.canRedo()) uM.redo(); }//GEN-LAST:event_redoActionPerformed private void largeRadioButtonMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_largeRadioButtonMenuItemActionPerformed jTextArea.setFont(new java.awt.Font( jTextArea.getFont().getFontName(), jTextArea.getFont().getStyle(), 24//jTextArea1.getFont().getSize() )); }//GEN-LAST:event_largeRadioButtonMenuItemActionPerformed private void fontStyleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fontStyleActionPerformed int style=java.awt.Font.PLAIN; if (boldCheckBoxMenuItem.isSelected()) style+=java.awt.Font.BOLD; if (italicCheckBoxMenuItem.isSelected()) style+=java.awt.Font.ITALIC; jTextArea.setFont(new java.awt.Font( jTextArea.getFont().getFontName(), style,//jTextArea1.getFont().getStyle(), jTextArea.getFont().getSize() )); }//GEN-LAST:event_fontStyleActionPerformed private void midRadioButtonMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_midRadioButtonMenuItemActionPerformed jTextArea.setFont(new java.awt.Font( jTextArea.getFont().getFontName(), jTextArea.getFont().getStyle(), 12//jTextArea1.getFont().getSize() )); }//GEN-LAST:event_midRadioButtonMenuItemActionPerformed private void smallRadioButtonMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_smallRadioButtonMenuItemActionPerformed jTextArea.setFont(new java.awt.Font( jTextArea.getFont().getFontName(), jTextArea.getFont().getStyle(), 9//jTextArea1.getFont().getSize() )); }//GEN-LAST:event_smallRadioButtonMenuItemActionPerformed private void googleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_googleButtonActionPerformed java.awt.Desktop desktop = java.awt.Desktop.getDesktop(); try { desktop.browse(new java.net.URI("http://www.google.co.jp")); } catch (Exception e) { e.printStackTrace(); } }//GEN-LAST:event_googleButtonActionPerformed private void browserMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browserMenuItemActionPerformed browserDialog.setSize(200,100); browserDialog.setVisible(true);//browserDialogの表示 }//GEN-LAST:event_browserMenuItemActionPerformed private void searchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchActionPerformed String target=searchTextField.getText();// targetは検索文字列。入力用にsearchTextField を例えばツールバーに配置しておく int i=jTextArea.getText().indexOf(target,jTextArea.getCaretPosition());// i は検索文字列のカーソル位置より後で最初の出現位置 if(i>=0) { jTextArea.select(i, i+target.length());//検索文字列を選択 jTextArea.requestFocus();//jTextArea1にフォーカスを置くと選択部分が反転表示される } }//GEN-LAST:event_searchActionPerformed private void replaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_replaceActionPerformed jTextArea.replaceSelection(replaceTextField.getText());//選択されている文字列の置換 //jTextArea1.setText(jTextArea1.getText().replaceAll(searchTextField.getText(),replaceTextField.getText()));//すべて置換 }//GEN-LAST:event_replaceActionPerformed private void fontMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fontMenuItemActionPerformed //http://stackoverflow.com/questions/2120228/java-swing-font-chooser のJFontChooserを利用する JFontChooser fontChooser = new JFontChooser(); if (fontChooser.showDialog(this) == JFontChooser.OK_OPTION) jTextArea.setFont(fontChooser.getSelectedFont()); }//GEN-LAST:event_fontMenuItemActionPerformed private void jTextAreaKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextAreaKeyTyped String txt=jTextArea.getText();//このイベント発生時に入力文字はテキストエリアに設定されていない Character c=evt.getKeyChar();//cは入力文字 if(!Character.isISOControl(c)) txt+=c;//cが制御文字でなければカウントする jLabel1.setText("文字数="+txt.replaceAll("[  \n]", "").length());//空白、全角空白、改行を除いてカウント }//GEN-LAST:event_jTextAreaKeyTyped /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new SimpleEditor().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuItem bgColorMenuItem; private javax.swing.JCheckBoxMenuItem boldCheckBoxMenuItem; private javax.swing.JDialog browserDialog; private javax.swing.JMenuItem browserMenuItem; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JButton copyButton; private javax.swing.JMenuItem copyMenuItem; private javax.swing.JButton cutButton; private javax.swing.JMenuItem cutMenuItem; private javax.swing.JMenu editMenu; private javax.swing.JMenuItem fgColorMenuItem; private javax.swing.JMenu fileMenu; private javax.swing.JMenu fontMenu; private javax.swing.JMenuItem fontMenuItem; private javax.swing.JMenu fontSizeMenu; private javax.swing.JMenu fontStyleMenu; private javax.swing.JMenu formatMenu; private javax.swing.JButton googleButton; private javax.swing.JMenu helpMenu; private javax.swing.JCheckBoxMenuItem italicCheckBoxMenuItem; private javax.swing.JColorChooser jColorChooser1; private javax.swing.JFileChooser jFileChooser1; private javax.swing.JLabel jLabel1; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea; private javax.swing.JToolBar jToolBar2; private javax.swing.JRadioButtonMenuItem largeRadioButtonMenuItem; private javax.swing.JMenuItem lineWrapMenuItem; private javax.swing.JRadioButtonMenuItem midRadioButtonMenuItem; private javax.swing.JMenuItem nameAsMenuItem; private javax.swing.JMenuItem newFIleMenuItem; private javax.swing.JButton newFileButton; private javax.swing.JButton openFileButton; private javax.swing.JMenuItem openFileMenuItem; private javax.swing.JButton pasteButton; private javax.swing.JMenuItem pasteMenuItem; private javax.swing.JMenuItem printMenuItem; private javax.swing.JButton redoButton; private javax.swing.JMenuItem redoMenuItem; private javax.swing.JButton replaceButton; private javax.swing.JTextField replaceTextField; private javax.swing.JMenuItem saveFIleMenuItem; private javax.swing.JButton saveFileButton; private javax.swing.JButton searchButton; private javax.swing.JTextField searchTextField; private javax.swing.JMenuItem signMenuItem; private javax.swing.JRadioButtonMenuItem smallRadioButtonMenuItem; private javax.swing.JButton undoButton; private javax.swing.JMenuItem undoMenuItem; private javax.swing.JMenuItem vesionMenuItem; // End of variables declaration//GEN-END:variables private File file=null; //UndoManager uM の生成 private UndoManager uM = new UndoManager(); //Undo可能Eventを、発生時にuMに記録するイベントリスナーUM_Listenerを定義 private class UM_Listener implements UndoableEditListener { public void undoableEditHappened(UndoableEditEvent e){ uM.addEdit(e.getEdit()); //編集操作の記録 } } private void writeTo(File f,JTextArea ta){ try{ PrintWriter pw =new PrintWriter(f); pw.print(ta.getText()); pw.close(); }catch(Exception e){JOptionPane.showMessageDialog(this, "IOエラー","簡易エディタ",JOptionPane.ERROR_MESSAGE); } } private void readFrom(java.io.File f,javax.swing.JTextArea ta){ try{ java.io.BufferedReader br=new java.io.BufferedReader(new java.io.FileReader(f)); jTextArea.setText(br.readLine()); for(String rl; (rl=br.readLine())!=null; //読み込んだ行 rl が null でない間は jTextArea.append("\n"+rl)){ } //rl をjTextArea1 に追加 br.close(); // jTextArea.setText(new String(Files.readAllBytes(Paths.get(f.getAbsolutePath())))); // java.io.FileInputStream fr=new java.io.FileInputStream(f); // byte[] b = new byte[(int) f.length()]; // fr.read(b); // jTextArea.setText(new String(b)); // fr.close(); }catch(Exception e){JOptionPane.showMessageDialog(this, "IOエラー","簡易エディタ",JOptionPane.ERROR_MESSAGE); } } }