我正在尝试使用swing在java中创建一个简单的文本编辑器。
到目前为止,我已经创建了这个GUI:
大胆,斜体和下划线目前无效。我不想做的是能够用鼠标突出显示一些文本,然后单击粗体按钮作为示例,使文本粗体。但我不知道该怎么办才能做到这一点。
到目前为止我的代码是:
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();
}
}
答案 0 :(得分:2)
不要使用JEditorPane,即用于HTML。
而是使用带有简单文本的JTextPane
,然后您可以使用编辑器工具包提供的默认操作将属性应用于文本。
StyledEditorKit带有您可以使用的粗体,斜体和下划线操作。例如:
JButton bold = new JButton( new StyledEditorKit.BOLD_ACTION );
阅读Text Component Features上Swing教程中的部分,了解更多信息和一个工作示例,以帮助您入门。