`

StylesExample8

阅读更多
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.net.URL;

public class StylesExample8 {  
  public static void createDocumentStyles(StyleContext sc) {  
    Style defaultStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);

    // Create and add the main document style
    Style mainStyle = sc.addStyle(mainStyleName, defaultStyle);
    StyleConstants.setLeftIndent(mainStyle, 16);
    StyleConstants.setRightIndent(mainStyle, 16);
    StyleConstants.setFirstLineIndent(mainStyle, 16);
    StyleConstants.setFontFamily(mainStyle, "serif");
    StyleConstants.setFontSize(mainStyle, 12);

    // Create and add the constant width style
    Style cwStyle = sc.addStyle(charStyleName, null);
    StyleConstants.setFontFamily(cwStyle, "monospaced");
    StyleConstants.setForeground(cwStyle, Color.green);

    // Create and add the heading style
    Style heading2Style = sc.addStyle(heading2StyleName, null);
    StyleConstants.setForeground(heading2Style, Color.red);
    StyleConstants.setFontSize(heading2Style, 16);
    StyleConstants.setFontFamily(heading2Style, "serif");
    StyleConstants.setBold(heading2Style, true);
    StyleConstants.setLeftIndent(heading2Style, 8);
    StyleConstants.setFirstLineIndent(heading2Style, 0);

    // Create and add the Component style
    Class thisClass = StylesExample8.class;
    URL url = thisClass.getResource("java2s.gif");
    ImageIcon icon = new ImageIcon(url);
    JLabel comp = new JLabel("Displaying text with attributes",
                  icon, JLabel.CENTER);
    comp.setVerticalTextPosition(JLabel.BOTTOM);
    comp.setHorizontalTextPosition(JLabel.CENTER);
    comp.setFont(new Font("serif", Font.BOLD | Font.ITALIC, 14));
    Style componentStyle = sc.addStyle(componentStyleName, null);    
    StyleConstants.setComponent(componentStyle, comp);

    // The paragraph style for the component
    Style compParagraphStyle = sc.addStyle(compParaName, null);
    StyleConstants.setSpaceAbove(compParagraphStyle, (float)16.0);    
  }

  public static void addText(JTextPane pane, StyleContext sc, Style logicalStyle,
                Paragraph[] content) {
    // The outer loop adds paragraphs, while the
    // inner loop adds character runs.
    int paragraphs = content.length;
    for (int i = 0; i < paragraphs; i++) {
      Run[] runs = content[i].content;
      for (int j = 0; j < runs.length; j++) {
        pane.setCharacterAttributes(
          runs[j].styleName == null ? SimpleAttributeSet.EMPTY :
                  sc.getStyle(runs[j].styleName), true);
        pane.replaceSelection(runs[j].content);
      }

      // At the end of the paragraph, add the logical style and
      // any overriding paragraph style and then terminate the 
      // paragraph with a newline.
      pane.setParagraphAttributes(SimpleAttributeSet.EMPTY, true);
      
      if (logicalStyle != null) {
        pane.setLogicalStyle(logicalStyle);
      }

      if (content[i].styleName != null) {
        pane.setParagraphAttributes(sc.getStyle(content[i].styleName), false);
      }
      
      pane.replaceSelection("\n");
    }    
  }

  public static void main(String[] args) {
    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (Exception evt) {}
  
    JFrame f = new JFrame("Styles Example 8");
    
    // Create the StyleContext, the document and the pane
    final StyleContext sc = new StyleContext();
    final DefaultStyledDocument doc = new DefaultStyledDocument(sc);
    final JTextPane pane = new JTextPane(doc);

    // Build the styles
    createDocumentStyles(sc);

    try {
      // Add the text and apply the styles
      SwingUtilities.invokeAndWait(new Runnable() {
        public void run() {
          // Add the text
          addText(pane, sc, sc.getStyle(mainStyleName), content);            
        }
      });
    } catch (Exception e) {
      System.out.println("Exception when constructing document: " + e);
      System.exit(1);
    }

    f.getContentPane().add(new JScrollPane(pane));
    f.setSize(500, 300);
    f.setVisible(true);
  }

  // Style names
  public static final String mainStyleName = "MainStyle";
  public static final String heading2StyleName = "Heading2";
  public static final String charStyleName = "ConstantWidth";
  public static final String componentStyleName = "Component";
  public static final String compParaName = "CompPara";

  // Inner classes used to define paragraph structure
  public static class Run {
    public Run(String styleName, String content) {
      this.styleName = styleName;
      this.content = content;
    }

    public String styleName;
    public String content;
  }

  public static class Paragraph {
    public Paragraph(String styleName, Run[] content) {
      this.styleName = styleName;
      this.content = content;
    }

    public String styleName;
    public Run[] content;
  }

  public static final Paragraph[] content = new Paragraph[] {
    new Paragraph(heading2StyleName, new Run[] {      
        new Run(null, "Attributes, Styles and Style Contexts")
    }),
    new Paragraph(null, new Run[] {
        new Run(null, "The simple "),
        new Run(charStyleName, "PlainDocument"),
        new Run(null, " class that you saw in the previous " +
              "chapter is only capable of holding text. " +
              "The more complex text components use a more " +
              "sophisticated model that implements the "),
        new Run(charStyleName, "StyledDocument"),
        new Run(null, " interface. "),
        new Run(charStyleName, "StyledDocument"),
        new Run(null, " is a sub-interface of "),
        new Run(charStyleName, "Document"),
        new Run(null, " that contains methods for manipulating attributes " +
                "that control the way in which the text in the " +
                "document is displayed. The Swing text package " +
                "contains a concrete implementation of "),
        new Run(charStyleName, "StyledDocument"),
        new Run(null, " called "),
        new Run(charStyleName, "DefaultStyledDocument"),
        new Run(null, " that is used as the default model for "),
        new Run(charStyleName, "JTextPane"),
        new Run(null, " and is also the base class from which " +
                "more specific models, such as the "),
        new Run(charStyleName, "HTMLDocument"),
        new Run(null, " class that handles input in HTML format, can be " +
                "created. In order to make use of "),
        new Run(charStyleName, "DefaultStyledDocument"),
        new Run(null, " and "),
        new Run(charStyleName, "JTextPane"),
        new Run(null, " you need to understand how Swing represents " +
                "and uses attributes.")
    }),
    new Paragraph(compParaName, new Run[] {
        new Run(componentStyleName, " ")
    })
  };  
}

 

分享到:
评论

相关推荐

    Ubuntu 命令技巧手册.rar

    Ubuntu命令技巧手册》是专为Ubuntu用户设计的一份实用指南,它涵盖了广泛的操作系统管理、文件处理、网络通信及系统维护等方面的命令行操作技巧。Ubuntu是一个基于Debian的开源Linux发行版,以其用户友好性和强大的命令行工具而受到全球开发者和用户的喜爱。通过熟练掌握这些命令技巧,用户可以更高效地在Ubuntu环境中工作。 手册首先会介绍Ubuntu的基本概念,包括终端的使用和命令行的基本语法。在Linux系统中,终端是执行各种系统级任务的核心工具,用户可以通过键盘输入命令来执行操作,而无需图形化界面。掌握如何打开终端(如通过快捷键Ctrl+Alt+T)以及基本的命令行导航(如cd、ls、pwd)是使用Ubuntu的第一步。 文件和目录管理是Ubuntu命令行中的重要部分。例如,`mkdir`用于创建新目录,`touch`用于创建新文件,`cp`和`mv`分别用于复制和移动文件或目录,而`rm`则用于删除。了解这些命令的选项,如递归操作(-r)和强制删除(-f),能帮助用户更灵活地管理文件系统。

    stylus-chrome-mv3-2.3.5-8bf13db-id.zip

    Stylus是一款能改变网站样式的样式管理器(谷歌浏览器插件)

    springboot项目基于Spring与Vue的疫情居家检测管理系统的设计与实现代码.zip

    springboot项目基于Spring与Vue的疫情居家检测管理系统的设计与实现代码,含有完整的源码和报告文档

    文本框说明文字循环PPT模板.pptx

    文本框说明文字循环PPT模板

    四色旗并列关系PPT图形模板.pptx

    图表分类ppt

    《线性代数及其应用》Linear Algebra and Its Applications - 5th Edition - David C. Lay

    Linear Algebra and Its Applications - 5th Edition - David C. Lay《线性代数及其应用》 能复制。英文版本。

    MATLAB环境下一种自适应Chirp模态分解方法 算法运行环境为Matlab r2018a,可用于一维时间序列分解,时频分析,故障诊断,特征提取等 算法可迁移至金融时间序列,地震 微震信号,机械

    MATLAB环境下一种自适应Chirp模态分解方法。 算法运行环境为Matlab r2018a,可用于一维时间序列分解,时频分析,故障诊断,特征提取等。 算法可迁移至金融时间序列,地震 微震信号,机械振动信号,声发射信号,电压 电流信号,语音信号,声信号,生理信号(ECG,EEG,EMG)等一维时间序列信号。 压缩包=程序+数据+参考。

    信捷PLC程序 信捷XDM系列PLC程序,信捷触摸屏程序 双轴圆弧插补三轴画圆程序

    信捷PLC程序 信捷XDM系列PLC程序,信捷触摸屏程序 双轴圆弧插补三轴画圆程序

    3b053校园外卖配送_springboot+vue.zip

    项目资源包含:可运行源码+sql文件+文档 源码都是精心调试,有文档,可以部署,有费用,谢谢支持。 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 开发语言:Java 框架:SpringBoot 技术:Vue JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 系统是一个很好的项目,结合了后端服务(SpringBoot)和前端用户界面(Vue.js)技术,实现了前后端分离。

    计算机相关专业毕业设计&大作业 (包含源码、说明)基于yolov5的旋转目标检测

    资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立

    基于单目视觉原理,研究目标图像的预处理、识别、定位方法与测距模型,设计实现一个目标识别与定位测距原型系统。_MonocularVisionRanging.zip

    基于单目视觉原理,研究目标图像的预处理、识别、定位方法与测距模型,设计实现一个目标识别与定位测距原型系统。_MonocularVisionRanging

    基于留出法、k折交叉验证和留一法的多种机器学习模型对比(用于分类)MATLAB程序:代码中共包含决策树(DT)、判别分析(DA)、集成树(ET)、高斯混合模型(GMM)、k近邻(KNN)、多分类支持向

    基于留出法、k折交叉验证和留一法的多种机器学习模型对比(用于分类)MATLAB程序:代码中共包含决策树(DT)、判别分析(DA)、集成树(ET)、高斯混合模型(GMM)、k近邻(KNN)、多分类支持向量机(MSVM)、支持向量机(SVM)、随机森林(RF)八种机器学习模型,可以任意选择,分别用留出法、k折交叉验证和留一法进行分类效果对比。 代码注释清楚。 main为主程序,读取EXCEL数据。 很方便,容易上手。 温馨提示:联系请考虑是否需要,程序代码,一经出,概不 。

    SPOTIFY - Culture Next Report_CAIG.pdf

    SPOTIFY - Culture Next Report_CAIG

    3b051在线视频点播系统_springboot+vue0.zip

    项目资源包含:可运行源码+sql文件+ 源码都是精心调试,,可以部署,有费用,谢谢支持。 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 开发语言:Java 框架:SpringBoot 技术:Vue JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 系统是一个很好的项目,结合了后端服务(SpringBoot)和前端用户界面(Vue.js)技术,实现了前后端分离。

    springboot项目基于Web的课程设计选题管理系统.zip

    springboot项目基于Web的课程设计选题管理系统,含有完整的源码和报告文档

    ThinkPHP帮助文档chm版打包下载最新版本

    ThinkPHP是一个高性能且功能完备的轻量级PHP开发框架,具备众多原创特性,并秉持“大道至简”的开发理念,致力于以最少的代码实现更多功能,旨在简化并加速WEB应用的开发流程。自1.*版本起,该框架便不再兼容PHP4,从而使其架构与实现更为灵活与简洁。2.0版本在前序版本的基础上,经过全面重构与持续优化,达到了新的高度,满足企业级与门户级开发的标准。 以下是ThinkPHP相关文档的列表: - ThinkPHP 2.0 Q&A.chm - ThinkPHP-2.0-API.chm - ThinkPHP2.0完全开发手册.chm - ThinkPHP2.0开发技巧.chm - ThinkPHP2.1 RBAC使用和示例操作.chm - ThinkPHP2.1 完全开发手册.chm - ThinkPHP2.1 常见问题&开发技巧.chm - ThinkPHP2.1 自定义标签示例说明.chm

    无人机VESC7500,低压伺服keil源码,可以无感,霍尔单馈,正余弦,ABZ等多种反馈信号,是用非线性磁链观测器,高频注入等多种算法于一身,上位机源码,原理图 没有PCB 最大电流300A,是学

    无人机VESC7500,低压伺服keil源码,可以无感,霍尔单馈,正余弦,ABZ等多种反馈信号,是用非线性磁链观测器,高频注入等多种算法于一身,上位机源码,原理图。 没有PCB 最大电流300A,是学习不错的资料。

    基于51单片机的测速码表仿真 包含以下资料: - keil程序源码带注释 - protus仿真文件 - AD版本原理图 - AD版本PCB - 所用软件安装包

    基于51单片机的测速码表仿真 包含以下资料: - keil程序源码带注释 - protus仿真文件 - AD版本原理图 - AD版本PCB - 所用软件安装包

    matlab 瑞利信道仿真程序

    ===如资源质量问题,可半价退款,代下全网资源,价格公道==== 在通信系统的研究与设计中,信道建模是至关重要的一步。瑞利信道作为无线通信中最常见的信道模型之一,模拟了多径衰落的环境,尤其适用于城市微波通信和室内环境。本篇文章将深入探讨“matlab瑞利信道仿真程序”的相关知识点,包括瑞利信道的基本概念、2-径模型、指数路径损耗模型以及如何使用MATLAB进行仿真。 瑞利信道是基于多径传播的统计模型,其中信号经过多个反射和折射路径到达接收端,导致信号强度呈现随机波动。这种信道模型的特点是具有平坦频率衰落,即所有频率成分的衰落是同步的。在瑞利信道中,信号通常由多个独立的路径组成,每个路径都有不同的延迟和衰减,形成所谓的多径分量。 在给定的描述中,`plot_2ray_exp_model.m` 文件似乎使用了一个2-径模型来模拟瑞利信道。2-径模型是最简单的瑞利信道模型,假设信号经过两个主要路径到达接收器。这两个路径通常代表直射路径和一个反射路径,它们之间的相位差是随机的,导致接收信号的幅度随机变化。 指数路径损耗模型(即exp_PDP)是信道模型的一部分。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    质心侧偏角相平面simulink程序

    质心侧偏角相平面simulink程序

Global site tag (gtag.js) - Google Analytics