gpt4 book ai didi

java - Java/Swing 中的高级 RTFEditorKit

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:48 26 4
gpt4 key购买 nike

我已经使用 JTextPane 和 AdvancedRTFEditorKit 在 java/swing 中创建了一个编辑器,我从这里找到了它(使用它而不是 RTFEditorKit,因为它已过时),但是如果你可以说这是一个问题,那么我有一个“问题”,使用 AdvancedRTFEditorKit 我只能打开我用它创建的文件,例如我无法打开 .txt、.java、.cpp、.c,我只能打开我使用创建的文件我的编辑。这正常吗?或者我做错了什么?还有其他人使用过 AdvancedRTFEditorKit 吗?

谢谢大家,很高兴很快就能看到答案!

我使用过这个 RTF 编辑器套件:click here!

这里是 SSCCE...

 package sscceeditor;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.text.BadLocationException;
import rtf.AdvancedRTFDocument;
import rtf.AdvancedRTFEditorKit;

class ExampleFrame extends JFrame{
private JMenuBar bar = new JMenuBar();
private JMenu fileMenu = new JMenu("File");
private JMenuItem saveItem = new JMenuItem("Save");
private JMenuItem loadItem = new JMenuItem("Load");
private JTextPane txtPane = new JTextPane(new AdvancedRTFDocument());;
private JScrollPane scroller = new JScrollPane(txtPane);
private JFileChooser chooser = new JFileChooser();
private AdvancedRTFEditorKit rtfKit = new AdvancedRTFEditorKit();

//ctor begins...
public ExampleFrame(){
super("Example Editor");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 400);
this.setLocationRelativeTo(null);

saveItem.addActionListener(new SaveHandler());
loadItem.addActionListener(new LoadHandler());


//set the kit...
txtPane.setEditorKit(rtfKit);

//create the menu...
fileMenu.add(saveItem);
fileMenu.add(loadItem);
bar.add(fileMenu);
this.setJMenuBar(bar);

//create the main panel...
JPanel mainPane = new JPanel();
mainPane.setLayout(new BorderLayout());
mainPane.add(BorderLayout.CENTER , scroller);

this.setContentPane(mainPane);

}//end of ctor.

//inner event handler classes...
class SaveHandler implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
int response = chooser.showSaveDialog(ExampleFrame.this);

if(response == JFileChooser.APPROVE_OPTION){

try(BufferedWriter bw = new BufferedWriter(
new FileWriter(chooser.getSelectedFile().getPath())))
{
txtPane.setText("");

rtfKit.write(bw, txtPane.getDocument() , 0 , txtPane.getDocument().getLength());

bw.close();
}catch(IOException | BadLocationException ex){
System.err.println(ex);
}


}
}//end of method.

}

class LoadHandler implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
int response = chooser.showOpenDialog(ExampleFrame.this);

if(response == JFileChooser.APPROVE_OPTION){

try(BufferedReader bw = new BufferedReader(
new FileReader(chooser.getSelectedFile().getPath())))
{
txtPane.setText("");

rtfKit.read(bw, txtPane.getDocument() , 0 );

bw.close();
}catch(IOException | BadLocationException ex){
System.err.println(ex);
}


}
}//end of method.

}


}//end of class ExampleFrame.


public class SSCCEeditor {

public static void main(String... args) {
SwingUtilities.invokeLater(new Runnable(){

@Override
public void run() {
new ExampleFrame().setVisible(true);
}

});
}
}

最佳答案

要打开常用的 txt 文件,您可以使用

getDocument().remove(0, getDocument().getLength());
getDocument().insertString(0,theFileContent, new SimpleAttributeSet());

关于java - Java/Swing 中的高级 RTFEditorKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com