gpt4 book ai didi

java - JEdi​​torPane - 制作制表符空间

转载 作者:行者123 更新时间:2023-11-30 07:36:55 34 4
gpt4 key购买 nike

我想知道是否有一种方法可以让 jeditorpane 中的制表符转换为空格,就像您在 IDE 中工作时看到的那样。我不想设置选项卡大小。我已经可以轻松做到这一点。

我想用空格替换制表符。因此,例如,如果我的选项卡长度为 5 个空格,我希望所有选项卡在创建时立即替换为 5 个空格。

有什么想法吗?

最佳答案

DocumentFilter 添加到 AbstractDocument 以在将文本插入到 Document 时用空格替换制表符。

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

简单的例子:

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

public class TabToSpaceFilter extends DocumentFilter
{
@Override
public void insertString(FilterBypass fb, int offset, String text, AttributeSet attributes)
throws BadLocationException
{
replace(fb, offset, 0, text, attributes);
}

@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attributes)
throws BadLocationException
{
// In case someone tries to clear the Document by using setText(null)

if (text == null)
text = "";

super.replace(fb, offset, length, text.replace("\t", " "), attributes);
}

private static void createAndShowGUI()
{
JTextArea textArea = new JTextArea(5, 20);
AbstractDocument doc = (AbstractDocument) textArea.getDocument();
doc.setDocumentFilter( new TabToSpaceFilter() );

JFrame frame = new JFrame("Integer Filter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout( new java.awt.GridBagLayout() );
frame.add( new JScrollPane(textArea) );
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}

public static void main(String[] args) throws Exception
{
EventQueue.invokeLater( () -> createAndShowGUI() );
}

}

关于java - JEdi​​torPane - 制作制表符空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103460/

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