Java图形开发相关
来源:互联网 发布:电脑视频剪辑小软件 编辑:程序博客网 时间:2024/05/22 05:07
Swing渲染基本原理
1.事件:事件派发线程(EDT);
2.绘制:
1)异步重绘:Component.repaint() 、Component.repaint(int x, int y, int width, int height)
2)同步绘制:JComponent.paintImmediately(int x, int y, int width, int height)和JComponent.paintlmmediately(Rectangle r) 、Component.paint(Graphics g)
3.渲染:
JComponent.paintComponent(Graphics g) 、Component.paint(Graphics g) 、Jcomponent.setOpaque(Boolean b)
1)paintComponent()
import java.awt.Color;import java.awt.Graphics;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.SwingUtilities;@SuppressWarnings("serial")public class OvalComponent extends JComponent {public void paintComponent(Graphics g) {g.setColor(getBackground());g.fillRect(0, 0, getWidth(), getHeight());g.setColor(Color.GRAY);g.fillOval(0, 0, getWidth(), getHeight());}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {JFrame frame = new JFrame("Oval");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(200, 180);frame.add(new OvalComponent());frame.setVisible(true);}});}}
2)paint()
import java.awt.AlphaComposite;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.SwingUtilities;@SuppressWarnings("serial")public class TranslucentButton extends JButton {BufferedImage buttonImage;public TranslucentButton(String label) {super(label);setOpaque(false);}public void paint(Graphics g) {if(buttonImage == null ||buttonImage.getWidth() != getWidth() ||buttonImage.getHeight() != getHeight()) {buttonImage = (BufferedImage)createImage(getWidth(),getHeight());}Graphics gButton = buttonImage.getGraphics();gButton.setClip(g.getClip());super.paint(gButton);Graphics2D g2d = (Graphics2D)g;AlphaComposite newComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,.5f);g2d.setComposite(newComposite);g2d.drawImage(buttonImage, 0, 0, null);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {JFrame frame = new JFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(200, 100);frame.add(new TranslucentButton("Translucent Button"));frame.setVisible(true);}});}}
3)setOpaque()
4双缓冲
5线程
java.swing.Timer 、SwingWorker
0 0
- Java图形开发相关
- 图形开发相关
- ios开发图形绘制相关
- Java图形开发--GUI
- Java图形化界面开发
- java开发相关资料
- Java相关开发工具
- java服务器端开发相关
- java开发相关
- java开发相关资料
- java开发相关下载
- Java相关开发汇总
- WindML相关知识和图形设备驱动程序开发(一)
- 图形开发
- java web开发相关配置
- Java Web开发相关名词解释
- Java卡开发相关专利
- Java开发OpenStack相关应用
- Myeclipse导入工程乱码解决办法
- 数据科学工具箱week3笔记
- Lua虚拟机之字节码(三)
- leetcode: Convert Sorted Array to Binary Search Tree
- java中统计程序运行时间
- Java图形开发相关
- 黑马程序员_OC_ARC机制
- 为SSD编程(5):访问模式和系统优化
- An Analysis of Single-Layer Networks in Unsupervised Feature Learning
- Java字符串的10大热点问题
- 大三上学期,使用Java不完整实现Lee寻址算法。
- 五要点
- OCP-1Z0-051 补充题库 第8题 子查询的使用范围
- quartus II 9.0 和 modlesim 联合仿真问题解决