意想不到java的样式设计

本文详细介绍了使用Synth自定义Swing组件外观时所需的XML配置方法。重点讲述了如何通过配置XML文件来设置JTable的样式及如何绑定样式到具体组件上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SynthXML配置(1)

Synth的设置需要配置xml文件(:demo.xml)来实现,因此xml的配置对synth界面的设置非常重要.

1xml的所有内容都包含在<synth></synth>中,不需要xml版本和语言(即:<?xml version="1.0" encoding="UTF-8"?> 这行不需要)

2、如果只用<synth></synth>标识,没有其他的配置,界面会出现很多空白(:synth没有默认值,在xml中没有设置组件的配置,界面经常以空白的方式显示,没有默认的截面,因此在xml中没有组件都要配置)

3、如果在<synth></synth>标识中没有JTable的配置,若界面中有JTable则出现异常不能正确显示。因此,xml中一定要配置JTable,因为不配置其他组件,Synth会以空白显示;但是不配置JTablesynth不会以空白显示,会出现异常。在xml配置JTable中一定要配置Table.gridColor属性和ENABLED状态,如:

 

<style id="Table">

       <object id="Table_Grid_Color" class="java.awt.Color">

              <int>133</int>

              <int>181</int>

              <int>237</int>

              <int>255</int>

       </object>

       <property key="Table.gridColor" type="idref" value="Table_Grid_Color" />

       <state value="ENABLED">

              <color type="TEXT_FOREGROUND" value="#000000" />

              <color type="TEXT_BACKGROUND" value="#FFFFFF" />

              <color type="BACKGROUND" value="#FFFFFF" />

       </state>

</style>

<bind style="Table" type="region" key="Table" />

 

配置了这两个属性,显示JTable才不会出现异常。

 

SynthXML配置(2)

1style元素,是设置XML中设置属性的主要标签,设置好后要把属性绑定到某个组件上(或某个范围上)

bind元素,是主要用于把style绑定到组件上的。

例如:

 

<style id="b">

<font name="DIALOG" size="12" style="BOLD"/>

</style>

<bind style="b" type="region" key="button"/>

style元素中的id属性是style的唯一标识,bind元素中的style对应要绑定的styleid标识;type属性是绑定的类型(范围),我了解的有2个可选值:regionname,type属性值为regionbind元素中的key属性值为类javax.swing.plaf.synth.region

java中已经设置定义的属性值,若type属性值为name ,bind元素中的key属性值为组件在程序中设置的名称值(setName("key"))

1:

 

<style id="b">

   <font name="DIALOG" size="12" style="BOLD"/>

</style>

<bind style="b" type="region" key="button"/>

bind元素的type属性值为region:

bind元素的key属性值"button"可以在类javax.swing.plaf.synth.region.java中找到Region BUTTON = new Region("Button","ButtonUI"),new Region("Button","ButtonUI")中的button可以作为bing元素的key属性的值。

2

 

<style id="a">

<font name="DIALOG" size="12" style="ITALIC"/>

    <insets top="1" bottom="2" left="3"/>

    <state value="ENABLED">

        <object id="customPainter" class="CustomPainter"/>

        <painter idref="customPainter"/>

    </state>

</style>

<bind style="a" type="name" key="test.*"/>

bind元素的type属性值为name:

bind元素的key属性值"test.*"表示"a"style元素配置的属性应用于在程序中设置名称以”test.“开头的组件(: JButton bt1 = new JButton();bt1.setName("test.bt1");         //bt1设置了名称为""test.bt1""是以"test."开头,因此bt1可以应用"a"style元素配置的属性)

2style下可以有

property | defaultsProperty | state | font | painter | imagePainter |   backgroundImage | opaque | (%beansPersistance;) | imageIcon等其他的元素标签。

 

### Java 实现 Word 文档页眉分节处理方法 为了在Java中实现Word文档的页眉分节处理,可以利用Apache POI库来完成这一功能。通过创建不同的节并为每一节单独定义页眉内容,能够满足复杂文档布局的需求。 当需要在一个Word文档的不同部分应用不同样式或者内容的页眉时,可以通过插入分节符来划分文档区域[^2]。具体来说,在每一段落结束处添加一个新的`XWPFParagraph`对象作为分隔标志,并指定其类型为下一页(`CTMarkType.NEXT_PAGE`)或其他合适的分节方式。 针对每个新建立起来的小节(section),应当获取对应的头部FooterHeaderPolicy实例以便进一步定制化该区间的页面顶部装饰条目: ```java // 获取当前章节的页眉策略 FooterHeaderPolicy policy = section.getFooterHeaderPolicy(); if(policy == null){ // 如果不存在则新建默认配置 policy = document.createFooterHeaderPolicy(); } ``` 接着就可以调用policy中的addHeader()函数向特定位置注入自定义设计好的页眉组件了。值得注意的是,由于某些本可能存在兼容性问题,因此建议使用较新的API接口如`org.apache.poi.xwpf.usermodel.XWPFHeaderFooterPolicy`来进行开发工作[^4]。 最后不要忘记保存修改过的文件到磁盘上: ```java try (FileOutputStream fos = new FileOutputStream(outputFilePath)) { document.write(fos); } catch (IOException e) { System.out.println("Error writing file"); e.printStackTrace(); } ``` #### 注意事项 - 在实际编码过程中要注意异常捕获机制的应用,确保程序稳定性; - 对于复杂的模板替换场景,可能还需要考虑如何高效地遍历整个文档结构以及定位目标元素的位置; - 本差异可能会引起一些意想不到的行为变化,所以在项目初期就要选定好依赖库的具体发行号,并尽量保持不变;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值