Java中Synth外观学习(四)--定制JPanel的背景,自定义绘制
2014-07-18 23:58
507 查看
Synth外观中可以自定义托管的绘制类。
在项目中新建如下类,绘制一直渐变的背景和一条曲线:
XML中按照如下定义:
效果图如下:
实际上按照如上方式,你可以定义更多的参数,比如渐变步长,是否循环,渐变方向等。在自定义类中可以可以自定义更多的动作,比如水印等其他更多内容。
在项目中新建如下类,绘制一直渐变的背景和一条曲线:
package demo; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.CubicCurve2D; import javax.swing.UIManager; import javax.swing.plaf.synth.SynthContext; import javax.swing.plaf.synth.SynthPainter; public class PanelBackgroundPainter extends SynthPainter { @Override public void paintPanelBackground(SynthContext context, Graphics g, int x, int y, int w, int h) { Color start = UIManager.getColor("Panel.startBackground"); Color end = UIManager.getColor("Panel.endBackground"); Graphics2D g2 = (Graphics2D) g; GradientPaint grPaint = new GradientPaint( (float) x, (float) y, start, 1, h, end); g2.setPaint(grPaint); g2.fillRect(x, y, w, h); g2.setPaint(null); g2.setColor(new Color(255, 255, 255, 120)); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); CubicCurve2D.Double arc2d = new CubicCurve2D.Double(0, h / 4, w / 3, h / 10, .66 * w, 1.5 * h, w, h / 8); g2.draw(arc2d); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); } }
XML中按照如下定义:
<?xml version="1.0" encoding="UTF-8"?> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <synth> <style id="panel"> <object id="background" class="demo.PanelBackgroundPainter"/> <object class="javax.swing.plaf.ColorUIResource" id="startColor"> <int>30</int> <int>123</int> <int>235</int> </object> <defaultsProperty key="Panel.startBackground" type="idref" value="startColor"/> <object class="javax.swing.plaf.ColorUIResource" id="endColor"> <int>1</int> <int>20</int> <int>80</int> </object> <defaultsProperty key="Panel.endBackground" type="idref" value="endColor"/> <painter method="panelBackground" idref="background"/> </style> <bind style="panel" type="region" key="Panel"/> </synth>
效果图如下:
实际上按照如上方式,你可以定义更多的参数,比如渐变步长,是否循环,渐变方向等。在自定义类中可以可以自定义更多的动作,比如水印等其他更多内容。
相关文章推荐
- Java中Synth外观学习(三)--定制JPanel的背景,使用图片
- Java中Synth外观学习(二)--定制JPanel的背景
- Java中Synth外观学习(十)--MenuBar的定制
- Java中Synth外观学习(一)--建立工程加载自定义外观的XML文件
- Java中Synth外观学习(八)--List的定制二,带滚动条的List
- Java中Synth外观学习(九)--ComboBox的定制
- Java中Synth外观学习(七)--List的定制
- Java中Synth外观学习(十一)--Menu及MenuItem的定制
- Java中Synth外观学习(六)--CheckBox的定制
- Java中Synth外观学习(五)--定制按钮
- JAVA GUI自定义JPanel画板背景
- 转:Java学习路线图,专为新手定制的Java学习计划建议
- Java学习拾遗3——HashSet中加入自定义的类的对象
- Java学习路线图,专为新手定制的Java学习计划建议
- Java背景绘制分包和界面变形的一些问题
- Java学习路线图,专为新手定制的Java学习计划建议二
- Java学习路线图,专为新手定制的Java学习计划建议一
- Java学习路线图,专为新手定制的Java学习计划建议
- 传智播客java web 学习,自定义标签的开发和使用
- Java学习路线图,专为新手定制的Java学习计划建议