2017-10-24 12 views
0

太字テキストをマークしてください。 これまでのところ、私はこのGUIを作成しました:enter image description hereは、私はスイングとJavaで単純なテキストエディタを作るしようとしているのJava SwingとのJEditorPane

現時点では、太字、斜体および下線は機能していません。私は何をwan'tはマウスでいくつかのテキストをハイライト表示すると、そのテキスト太字作るために例えば太字]ボタンをクリックすることができることです。しかし、私はそれを達成するために何をすべきか分かりません。

私のコードは、これまでのところです:

import javax.swing.*; 
import java.awt.*; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

public class MainFrame { 


    private JFrame frame; 
    //private JTextArea textArea; 
    private JEditorPane textArea; 


    MainFrame() { 
     frame = new JFrame("Simple Text Editor"); 

     MakeContentPane(); 
     MakeMenubar(); 

     frame.pack(); 
     frame.setVisible(true); 
     frame.setSize(800,400); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 


    public void MakeMenubar(){ 
     JMenuBar menubar = new JMenuBar(); 
     frame.setJMenuBar(menubar); 

     // create the File menu 
     JMenu fileMenu = new JMenu("File"); 
     menubar.add(fileMenu); 

     JMenu editMenu = new JMenu("Edit"); 
     menubar.add(editMenu); 

     JMenu aboutMenu = new JMenu("About"); // TODO: Create about popup windowd 
     menubar.add(aboutMenu); 

     JMenuItem quitItem = new JMenuItem("Quit"); 
     quitItem.addActionListener((e) -> System.exit(1)); 

     JMenuItem openItem = new JMenuItem("Open"); 
     openItem.addActionListener((e) -> Open()); 

     JMenuItem saveAsItem = new JMenuItem("Save"); 
     saveAsItem.addActionListener((e) -> SaveAs()); 

     fileMenu.add(openItem); 
     fileMenu.add(saveAsItem); 
     fileMenu.add(quitItem); 

     Action action = new StyledEditorKit.BoldAction(); 
     action.putValue(Action.NAME, "Bold"); 
     editMenu.add(action); 

    } 

    public void MakeContentPane() { 
     //textArea = new JTextArea(); 
     textArea = new JEditorPane("text/html", ""); 


     Container contentPane = frame.getContentPane(); 

     contentPane.setLayout(new BorderLayout()); 
     contentPane.add(textArea, BorderLayout.CENTER); 

     JButton boldItem = new JButton("Bold"); //TODO Create action 
     JButton italicItem = new JButton("Italic"); //TODO Create action 
     JButton underLineItem = new JButton("Underline"); //TODO Create action 

     JPanel buttons = new JPanel(); 
     buttons.setLayout(new GridLayout(1,3)); 
     buttons.add(boldItem); 
     buttons.add(italicItem); 
     buttons.add(underLineItem); 

     contentPane.add(buttons, BorderLayout.NORTH); 


    } 


    public void SaveAs() { 

     final JFileChooser SaveAs = new JFileChooser(); 
     SaveAs.setApproveButtonText("Save"); 
     int actionDialog = SaveAs.showOpenDialog(frame); 
     if (actionDialog != JFileChooser.APPROVE_OPTION) { 
      return; 
     } 

     File fileName = new File(SaveAs.getSelectedFile() + ".html"); 
     BufferedWriter outFile = null; 
     try { 
      outFile = new BufferedWriter(new FileWriter(fileName)); 

      textArea.write(outFile); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      if (outFile != null) { 
       try { 
        outFile.close(); 
       } catch (IOException e) { 

       } 
      } 
     } 
    } 

    public void Open(){ 
     // TODO: Create method to open files 
     final JFileChooser SaveAs = new JFileChooser(); 
    } 


    public static void main(String[] args) { 
     MainFrame frame = new MainFrame(); 

    } 



} 

答えて

2

がJEditorPaneのを使用しないでください、それはHTMLのためです。

代わりに単純なテキストのJTextPaneを使用して、エディタキットで提供されるデフォルトのアクションを使用してテキストに属性を適用できます。

たStyledEditorKit

は太字、斜体が付属して、あなたが使用できるアクションを強調しています。たとえば:

JButton bold = new JButton(new StyledEditorKit.BOLD_ACTION); 

は、より多くの情報とあなたが始めるために働い例えばText Component Features上のSwingのチュートリアルからのセクションをお読みください。

+0

本当にありがとうございました!しかし、テキストを選択してボタンでアクションを選択できるようにするには、mouselistenerをセットアップするのがうまくいきません。これは大きな問題です –

+0

MouseListenerで何もしません。チュートリアルを読む! 2分でチュートリアルを読むことはできません。 – camickr

+0

Point taken .... –

関連する問題