gpt4 book ai didi

java - 有没有办法过滤/搜索 HTMLEditorKit 中的内容?

转载 作者:行者123 更新时间:2023-11-30 10:31:44 25 4
gpt4 key购买 nike

我有一个普通的 HTMLEditorKit() 对象:

        historyKit = new HTMLEditorKit();
historyDoc = new HTMLDocument();
history = new JEditorPane("text/html", "");
JScrollPane historyScrollPane = new JScrollPane(history);
historyPanel.add(historyScrollPane, "cell 0 0 1 2,grow");
history.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null,
null, null));

我将它用作某种“日志”,因此它会根据此对象进行更新:

public class Logger {

public static ArrayList<String[]> log = new ArrayList<String[]>();

public static void update(String s) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy | HH:mm:ss");
String historyText = "<b>" + sdf.format(new Date()) + "</b>: " + s;
String[] sArray = { sdf.format(new Date()), s };
log.add(sArray);
append(historyText);
}

public static void append(String s) {
MainFrame.history.setEditorKit(MainFrame.historyKit);
MainFrame.history.setDocument(MainFrame.historyDoc);
try {
MainFrame.historyKit.insertHTML(MainFrame.historyDoc,
MainFrame.historyDoc.getLength(), s, 0, 0, null);
} catch (BadLocationException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

问题是,我相信“遍历”数据结构以根据某些 JTextField 过滤内容比“遍历”组件本身(在这种情况下,模型,我想)。是否有一种众所周知的过滤文档的方法,使用文本字段作为“搜索字段”?

最佳答案

I'm using the HTML kit so that I can highlight different parts of the text

JTextPane 可以使用不同的字体、颜色等。

这是一个简单的例子,可以帮助您入门:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;

public class TextPaneAttributes extends JPanel
{

public TextPaneAttributes()
{
setLayout( new BorderLayout() );

JTextPane textPane = new JTextPane();
textPane.setText( "one\ntwo\nthree\nfour\nfive\nsix\nseven\neight" );

StyledDocument doc = textPane.getStyledDocument();

// Define some character and paragraph attribute sets

SimpleAttributeSet keyWord = new SimpleAttributeSet();
StyleConstants.setBold(keyWord, true);

SimpleAttributeSet green = new SimpleAttributeSet();
StyleConstants.setForeground(green, Color.GREEN);

SimpleAttributeSet center = new SimpleAttributeSet();
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);

SimpleAttributeSet left = new SimpleAttributeSet();
StyleConstants.setAlignment(left, StyleConstants.ALIGN_LEFT);

// Change attributes on some existing text

doc.setCharacterAttributes(0, 3, keyWord, false);
doc.setCharacterAttributes(8, 5, green, true);
doc.setParagraphAttributes(20, 1 , center, false);

// Add some text with attributes

try
{
doc.insertString(doc.getLength(), "\nNormal text", null);
doc.insertString(doc.getLength(), "\nGreen text centered", green);
doc.setParagraphAttributes(doc.getLength(), 1 , center, false);
doc.insertString(doc.getLength(), "\nKeyword text", keyWord);
doc.setParagraphAttributes(doc.getLength(), 1 , left, false);

// Newly typed text at the end of the document will inherit the
// "keyword" attributes unless we remove the attributes

textPane.setCaretPosition(doc.getLength());
textPane.getInputAttributes().removeAttributes(keyWord);
}
catch(Exception e) {}

// Add text pane to frame

JScrollPane scrollPane = new JScrollPane( textPane );
scrollPane.setPreferredSize( new Dimension( 200, 250 ) );
add( scrollPane );

// Create a Button panel

JPanel buttons = new JPanel();
add(buttons, BorderLayout.PAGE_END);

// Add a Bold button

JButton bold = new JButton( new StyledEditorKit.BoldAction() );
buttons.add( bold );

// Add Right Alignment button

JButton right = new JButton( new StyledEditorKit.AlignmentAction("Align Right", StyleConstants.ALIGN_RIGHT) );
buttons.add( right );
}

private static void createAndShowGUI()
{
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TextPaneAttributes());
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}

public static void main(String[] args)
{
EventQueue.invokeLater( () -> createAndShowGUI() );
/*
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
*/
}
}

阅读 Text Component Features 上的 Swing 教程部分获取更多信息和示例。

关于java - 有没有办法过滤/搜索 HTMLEditorKit 中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43059544/

25 4 0