Java 在 JTextPane 上设置缩进大小

2023-12-04

我想设置制表符 \t 的大小JTextPane宽度为 4 个空格。

经过一番谷歌搜索后,我发现了一些东西,我将在这里包含我所尝试过的东西以及它们失败的原因。

如何在 JEditorPane 中设置选项卡大小?

JTextPane不是一个普通的文档。

Java JTextpane 选项卡大小

Eclipse 引发了一些错误:

Type mismatch: cannot convert from javax.swing.text.AttributeSet to 
 javax.print.attribute.AttributeSet

and

The method setParagraphAttributes(javax.swing.text.AttributeSet, boolean) in the type JTextPane is not applicable for the 
 arguments (javax.print.attribute.AttributeSet, boolean)

http://www.java2s.com/Code/Java/Swing-JFC/TextPaneSample.htm

本页讨论样式JTextPane。我从中改编的代码如下:

MutableAttributeSet set = new SimpleAttributeSet(pane.getParagraphAttributes());
StyleConstants.setLeftIndent(set, 40);
StyleConstants.setRightIndent(set, 40);

我想将 JTextPane 中制表符 \t 的大小设置为 4 个空格宽。

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

public class TextPaneTabs
{
    public static void setTabs( final JTextPane textPane, int charactersPerTab)
    {
        FontMetrics fm = textPane.getFontMetrics( textPane.getFont() );
//          int charWidth = fm.charWidth( 'w' );
        int charWidth = fm.charWidth( ' ' );
        int tabWidth = charWidth * charactersPerTab;
//      int tabWidth = 100;

        TabStop[] tabs = new TabStop[5];

        for (int j = 0; j < tabs.length; j++)
        {
            int tab = j + 1;
            tabs[j] = new TabStop( tab * tabWidth );
        }

        TabSet tabSet = new TabSet(tabs);
        SimpleAttributeSet attributes = new SimpleAttributeSet();
        StyleConstants.setTabSet(attributes, tabSet);
        int length = textPane.getDocument().getLength();
        textPane.getStyledDocument().setParagraphAttributes(0, length, attributes, false);
    }

    private static void createAndShowUI()
    {
        JTextPane textPane = new JTextPane();
        textPane.setText("12345678\n\t1\t2\t3aaaaa\t4\t5\t6\t7\t8\n\t1\t2\t3\t4\t5\t6\t7\t8\n\t\t12345678");
        JScrollPane scrollPane = new JScrollPane( textPane );
        scrollPane.setPreferredSize( new Dimension(700, 100 ) );

        // Change the tab size to 4 characters

        setTabs( textPane, 4 );

        JFrame frame = new JFrame("SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( scrollPane );
        frame.setLocationByPlatform( true );
        frame.pack();
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

当然,当使用 JTextPane 的默认字体时,空格的宽度不是很宽,因此实际的选项卡不会那么大。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 在 JTextPane 上设置缩进大小 的相关文章

  • 检索和设置 IntelliJ IDEA 插件开发的拆分窗口设置

    我正在编写一个 IntelliJ IDEA 插件 用于保存打开选项卡的会话 称为选项卡会话 https github com alp82 idea tabsession 这个问题是后续问题IntelliJ IDEA 插件开发 保存选项卡组
  • 如何安装 C++ 的 VOCE?

    我正在尝试安装 VOCE api 它是为 C 和 Java 构建的语音识别 API 这是我第二次使用外部 C 库 也是第一次使用 Java C api 语音链接 http voce sourceforge net http voce sou
  • Java 的 System.arraycopy() 对于小数组有效吗?

    是Java的System arraycopy 对于小数组来说是高效的 或者它是本机方法这一事实是否使其可能比简单的循环和函数调用效率低得多 本机方法是否会因跨越某种 Java 系统桥梁而产生额外的性能开销 稍微扩展一下 Sid 所写的内容
  • 为什么 DragHandler exportAsDrag 禁用我的 MouseMotionListener?

    我想实现一个简单的 JComponent 拖放 并带有 O Reilly Swing Hacks 的预览 我的问题是 如果 TransferHandler 启动 Drag MouseMotionListener 停止执行 mouseDrag
  • 如何在JUnit测试中将MockWebServer端口设置为WebClient?

    我在用着spring boot with WebClient 它被自动装配为一个 bean 问题 写一个junit集成测试 我必须使用okhttpMockWebServer 该模拟始终在随机端口上启动 例如localhost 14321 N
  • JPA 为每个项目选择最新实例

    假设我有一个会议实体 每次会议都有一个与会者和一个会议日期 在我的会议表中 我可能为每个与会者举行多个会议 每个会议都有不同的日期 我需要一个 JPA 查询 该查询将为所有与会者仅选择最新的会议 例如 如果我的桌子看起来像这样 Meetin
  • 将位于 jar 中的文件读取为 java.io.File 对象

    与此类似的问题已发布 但似乎没有一个答案对我的情况有帮助 我正在编写一个程序包 它使用 Google 的凭据来获取 Google Apps 用户 为此 我使用服务帐户 因此为了检索凭据 我需要提供 除其他外 一个 p12 签名文件 Cred
  • splitByWholeSeparatorPreserveAllTokens 和 split 之间的区别

    有什么区别StringUtils splitByWholeSeparatorPreserveAllTokens and String split With splitByWholeSeparatorPreserveAllTokens 我们可
  • java“类文件包含错误的类”错误

    我正在尝试制作一个控制台应用程序来测试我的网络服务 我成功部署了一个网络服务http localhost 8080 WS myWS http localhost 8080 WS myWS我用 wsimport 制作了代理类 wsimport
  • Log4j 未使用属性文件找到自定义附加程序

    我正在尝试使用以下 XML 属性文件在 Eclipse 插件项目中配置 log4j 其中包括一个名为 EclipseLoggingAppender 的自定义附加程序
  • Apache HttpClient 执行时会在所有 HTTP 5XX 错误上抛出 IOException 吗?

    The Apache HttpClient 文档 http hc apache org httpcomponents client ga httpclient apidocs org apache http client HttpClien
  • Restful WS 中的 WSDL 等价物是什么?如果没有,消费者如何生成所需的客户端类?

    比如说 我在java中有生产者 在 net中有消费者 生产者有一个方法 需要 员工作为方法参数并在数据库中创建员工 对于基于 SOAP 的 ws dot net 客户端将调用 WSDL 并创建存根 包括 dot net 中的员工数据表示 现
  • 捕获 XSS(跨站脚本)攻击的最佳正则表达式(Java 中)?

    杰夫实际上在净化 HTML http refactormycode com codes 333 sanitize html 但他的示例是用 C 编写的 而我实际上对 Java 版本更感兴趣 有人有更好的 Java 版本吗 他的示例是否足以直
  • 在Java程序中计算zip文件的md5哈希值

    我有一个 zip 文件 在我的 Java 代码中我想计算 zip 文件的 md5 哈希值 有没有我可以用于此目的的 java 库 一些例子将非常感激 谢谢 几周前我通过这篇文章做到了这一点 http www javalobby org ja
  • 我们可以用java定制一个垃圾收集器吗?

    我们知道java的垃圾收集器是一个低优先级线程 在java中我们可以创建任何具有高优先级的线程 那么是否有可能拥有我们自己定制的具有可变优先级的垃圾收集器线程 我们可以根据内存管理的级别进行设置 有人尝试过吗 如果是的话 您能分享一些关于如
  • 如何映射 Map

    I tried ManyToMany cascade CascadeType ALL Map
  • JTable中动态加载大量数据

    这是我的问题 我目前有一个 JTable 其中包含 5 000 到超过 200 000 行 你知道我要说什么了 数据已经加载到内存中了 这不是问题 但是如何 我可以创建一个高效的 JTable 以便它只加载以下行 是可见的 并且任何事件仅作
  • 使用 Tomcat 和 gradle 进行休眠

    免责声明 我是 Java 新手 我正在尝试使用 Tomcat 和 Gradle 设置 Hibernate 构建运行正确 但看起来像persistence xml文件未被读取 我的项目结构如下 build gradle src main ja
  • 如何使用 AEM 解析 org.apache.http.ssl?

    最终 我尝试在 Java 代码中使用 AWS S3 库来通过 AEM 启用服务器端 S3 上传 但在安装依赖项和 或由 AEM 识别时遇到了问题 每次我添加新的依赖项时 都会弹出五个问题 在我尝试构建的这个包中 这是我看到的错误 The i
  • Java applet 是否会违反同源策略

    我需要请求一些东西并从其他域获取信息 我知道由于同源政策 javascript 无法做到这一点 我的另一个选择是通过我的服务器发出代理请求 我不希望请求来自我的服务器的 IP 也不想为我的服务器创建额外的负载 并且希望客户端这样做 是否可以

随机推荐

  • Array.Reverse() 方法背后的逻辑

    public static void Reverse Array array int index int length 背后的本机逻辑工作是什么 您可以使用 NET反射器为了那个原因 ReliabilityContract Consiste
  • 数据库分片的 MySQL 代理替代方案

    MySQL Proxy 有其他替代方案吗 我不想使用它 因为它仍处于 alpha 阶段 我将拥有 10 台 MySQL 服务器 其中 table 1 table 2 table 3 table 4 table 10 分布在这 10 台服务器
  • 使用下拉菜单动态过滤 WordPress 帖子(使用 php 和 ajax)

    目标 我想制作一个动态页面 允许访问者从下拉菜单中选择月份和年份 并根据所选值更改页面上的内容 帖子 我目前正在使用以下代码来显示特定月份和年份的特定类别的帖子 ul li li ul
  • 检查 UTD 参数在存储过程中是否有值

    我想检查具有某些用户定义表类型的参数是否具有值或为 NULL 但我收到以下错误 Msg 137 Level 16 State 1 Procedure SearchByWord Line 63 Batch Start Line 7 Must
  • 从 Gradle、Spring 和 DB2 开始的挑战

    我对该项目的想法是使用 Gradle 编写一个简单的 Spring 纯 java 应用程序 该应用程序将连接到 DB2 数据库并提取一些数据并在控制台上打印 首先 我使用 Eclipse Luna 创建了一个 Gradle 项目 我的挑战
  • C++ 中的重载 +=

    如果我已经重载了operator 和operator 我还需要重载吗 运算符 这样的东西可以工作 MyClass mc1 mc2 mc1 mc2 是的 您也需要定义它 然而 一个常见的技巧是定义operator 然后实施operator 就
  • 异常消息:当前应用程序配置不支持 WebSockets

    最近我升级到 Windows 2012 Standard 服务器 64 位 这样我就可以使用 Web 套接字 我已通过服务器管理器添加了角色 功能 我注意到我的 Windows 日志中有这样的消息 Event code 3005 Event
  • 如何使用 RGB 像素值绘制直方图?

    我正在netbeans平台上制作应用程序 我想画直方图 我有红色 绿色和蓝色的图像像素 那么 请有人向我询问如何使用该像素值绘制直方图 我的代码如下 其中我采用图像的红色 绿色和蓝色像素值 enter code here import ja
  • 未定义的局部变量或方法 - 使用烧杯测试 Puppet 模块

    我对这一切都很陌生 我正在尝试使用烧杯测试木偶模块 我不断得到这个 NoMethodError undefined method describe for Beaker TestCase 0x007fd6f95e6460 Users use
  • 如何在 Java 中按值(ArrayList)大小对 Map 进行排序?

    我有以下地图 Map
  • 为 Google.Apis.YouTube.v3 设置代理

    我有以下代码来调用 YouTubeService service new YouTubeService new BaseClientService Initializer ApiKey AppSettings Variables YouTu
  • docker内部和外部用户之间的混淆

    所以 我正在内部使用 apache2 构建一个 docker 容器 但我遇到权限问题 我不知道如何解决它 如果我运行没有 user 规范的容器 它运行良好 但我想外在地能够将其分配给用户并限制该用户只能读取和写入特定目录 我使用 v 映射的
  • 所有 OpenMP 任务在同一线程上运行

    我使用 OpenMP 中的任务编写了一个递归并行函数 虽然它给了我正确的答案并且运行良好 但我认为并行性存在问题 与串行解决方案相比 运行时间在我在没有任务的情况下解决的相同其他并行问题中无法扩展 当打印任务的每个线程时 它们都在线程 0
  • 打印给定 pid 的子进程 (MINIX)

    我目前正在开发一个项目 作为该项目的一部分 我需要在 MINIX 中实现系统调用 库函数 作为其中的一部分 我需要能够使用给定进程的 pid 打印其子进程列表 我想我已经找到了我需要的部分内容 但我坚持让它与给定的 pid 一起工作 str
  • Python 的 SSH 隧道自动关闭

    我需要一些关于我的程序结构的建议 我正在使用连接到外部 MySQL 数据库ssh隧道 现在它可以正常工作 我可以发出 SQL 命令并获取结果 但前提是这些命令与打开连接的函数相同 如果它们处于不同的功能 隧道会在我使用之前自动关闭 参见下面
  • GemBox 从电子表格或 Flexcel 检索计算值

    根据他们的文档 GemBox Spreadsheet可以读取和写入公式 但不能计算公式结果 当您在 MS Excel 中打开 XLS 文件时 将自动计算公式结果 因此 如果我创建一个包含一些注入值的电子表格并将其保存到磁盘 如果我在 Exc
  • 如何获取准确的拨出电话接听时间?

    我是安卓新手 我正在实现一个与来电和去电详细信息相关的应用程序 我通过使用广播接收器获取拨出电话和来电详细信息 问题是当有来电时广播接收器会上升 我拨打广播接收器拨打的电话 很好 但是当我单击绿色按钮时 拨出电话就会开始 但是 我想要接听对
  • 深拷贝和浅拷贝有什么区别?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 深拷贝和浅拷贝有什么区别 广度与深度 考虑以对象作为根节点的引用树 Shallow 变量 A 和 B 引用不同的内存区域 当将 B 分配给 A 时 这两个变量引
  • SQL Server 2008 - 高级搜索/排序

    我需要对列进行搜索并按特定顺序对结果进行排序 搜索条件和排序顺序如下 给定搜索文本的至少 x 和至多所有字符必须匹配 结果应按开头 然后按匹配的字符数排序 和包含 然后按匹配的字符数和字母顺序排序 进行分组 例如 搜索文本 联盟A 数据库中
  • Java 在 JTextPane 上设置缩进大小

    我想设置制表符 t 的大小JTextPane宽度为 4 个空格 经过一番谷歌搜索后 我发现了一些东西 我将在这里包含我所尝试过的东西以及它们失败的原因 如何在 JEditorPane 中设置选项卡大小 JTextPane不是一个普通的文档