展开全部

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

final class RectPaintDemo extends JFrame {

final static private Dimension SIZE = new Dimension(800, 600);

public String getTitle() {return "RectPaintDemo";}

public Dimension getPreferredSize() {return SIZE;}

public Dimension getMinimumSize() {return SIZE;}

public Dimension getMaximumSize() {return SIZE;}

public Dimension getSize() {return SIZE;}

private Canvas canvas;

private Brush brush;

RectPaintDemo() throws HeadlessException {

init();

attachListeners();

doLay();

setVisible(true);

}

private void init() {

brush = new ShapeBrush();

canvas = new Canvas(brush);

}

private void attachListeners() {

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(1);

}

});

}

private void doLay() {

Container container = getContentPane();

container.add(canvas, BorderLayout.CENTER);

pack();

}

public static void main(String... args) {

System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

SwingUtilities.invokeLater(RectPaintDemo::new);

}

private interface Brush extends Observer {

/**

* do paint action

* @param g the graphics context in you application

*/

void paint(Graphics g);

/**

* The component that this brush hold

* @return component instance

*/

Component getOwner();

void setOwner(Component owner);

}

private static final class ShapeBrush implements Brush {

private Component owner;

private Rectangle contentObj = new Rectangle(20,20,40,30);

public Component getOwner() {

return owner;

}

public void setOwner(Component owner) {

this.owner = owner;

}

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D)g.create();

g2.fillRect(0,0,getOwner().getWidth(),getOwner().getHeight());

g2.translate(50, 50);

g2.rotate(Math.PI / 4);

g2.setColor(Color.YELLOW);

g2.draw(contentObj);

g2.dispose();

}

public void update(Observable o, Object arg) {

if (owner !62616964757a686964616fe78988e69d8331333337383964= null) owner.repaint();

}

}

/**

* you canvas

*/

private class Canvas extends JComponent {

private Brush brush;

private Canvas(Brush brush) {

super();

this.brush = brush;

brush.setOwner(this);

}

protected void paintComponent(Graphics g) {

super.paintComponent(g);

if (brush == null) return;

brush.paint(g);

}

}

}

java awt区域_java的awt包中有没有表示区域的类或者方法,可以传递一个Rectangle相关推荐

  1. java 文件路径表达式_Java基础(二十二) Lambda表达式和File类

    函数式编程思想 强调的是做什么,而不是以什么样的方式来做,它忽略了面向对象的复杂语法,只要能够获取到结果,谁去做的,怎么做的,都不重要,重要的是结果,不重视过程. 冗余的Runnable代码 传统的写 ...

  2. java swt 双屏_Java中AWT、Swing与SWT三大GUI技术的原理与效率差异

    看了一下对Java GUI讨论的帖子,所以写了一篇文章来阐述一下各种GUI技术的优劣. Java世界中,目前最知名的三大GUI库分别是: 1.AWT(Abstract Window Toolkit)抽 ...

  3. java 单开程序_java生成jar包并且单进程运行的实例

    java文件打包jar运行 有效步骤: 1.cmd 到当前目录(默认包主类所在目录为例) set classpath = 默认包主类所在目录 2.javac 主类名.java 3.java 主类名 4 ...

  4. java 静态方法 实例化_Java系列之:看似简单的问题 静态方法和实例化方法的区别...

    今天看书时一直没真正弄明白静态方法和实例方法的区别,就在网上搜索,找到一篇很好的文章,和大家分享一下: 这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方 ...

  5. java 查找注解_Java利用反射如何查找使用指定注解的类详解

    前言 最近有些空,想自己写个跟spring里的注解一样的注解来用,然后希望能找到使用了自己写了注解的类,下面来介绍一下实现方法 声明,下面代码是没看过spring源码写的,基本上都是网上找的博客,整理 ...

  6. java面向对象高级特性 ---接口案例(学校中有教师和学生两类人,而在职研究生既是教师又是学生)

    学校中有教师和学生两类人,而在职研究生既是教师又是学生.     1)设计两个接口studentinterface和teacherinterface.     2)studentinterface接口 ...

  7. java八进制写法_Java中8进制和16进制的表示方法

    由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题. 但,二进制数太长了.比如int 类型占用4个字节,32位.比如100,用int类型的二进制数表达将是: ...

  8. docker java 中文乱码_java使用awt包在生产环境docker部署时出现中文乱码的处理

    描述: 有一个业务是需要后台生成图片,后台使用了Graphics2D类.在docker部署时,图片上的中文变成方块. 解决方案: 百度了一下,发现是生产上的docker容器下没有中文字体,需要在容器里 ...

  9. java网络 可视化_Java可视化AWT

    AWT 总体上Swing组件替代了绝大部分AWT组件,对AWT图形用户界面编程有极好的补充和加强. package ch11; import java.awt.*; /** * Created by ...

最新文章

  1. 基于UDP的DDos反射放大攻击
  2. python绘图实例-Python——matplotlib基础绘图函数示例
  3. hdu2435最大流最小割
  4. 程序员的职业素养-读书笔记
  5. gitlab备份与还原:配置文件解读、定时备份、云备份
  6. 分类素材(part6)--大话Python机器学习(下)
  7. STM32L之可编程电压检测(PVD)
  8. 小a与星际探索---DP
  9. 视频码率[百科词条]
  10. C++实现获取汉字拼音首字母
  11. 机器学习的偏差-方差分解
  12. linux下apache安装ssl,linux下apache安装ssl步骤
  13. 367个公益宣传PPT模板免费下载网站
  14. 口袋电子秤方案芯片CSU18P88
  15. 开放式蓝牙耳机排行,列举几款值得推荐的开放式蓝牙耳机
  16. 你想要的宏基因组-微生物组知识全在这(2020.5)
  17. Xcode 卡死 解决方法
  18. 【Python实战】推文助手好用吗?真的能赚钱吗?教您一招,有了这款微信自动发送消息小助手,文字自动跳出来~赚麻了(赶紧收藏)
  19. 安装卸载Oracle
  20. nginx中配置location的root(alias)访问同一个地址文件

热门文章

  1. .NET Core中的CSV解析库
  2. ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便
  3. System.IO.Pipelines: .NET高性能IO
  4. 面试中get和post的区别
  5. [转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
  6. 【北斗】北斗卫星导航系统(BDS)介绍
  7. 剑指offer之二叉树的下一个结点
  8. 剑指offer之C语言实现链表(两种方式)
  9. Android Studio之Instant Run requires ‘Tools | Android | Enable ADB integration‘ to be enabled解决办法
  10. linux之od命令总结