Java Swing Graphics Graphics2D的一般用法:

贝塞尔曲线参考:http://www.zhangxinxu.com/wordpress/2014/06/deep-understand-svg-path-bezier-curves-command/

贝塞尔曲线参考2:http://blog.chinaunix.net/uid-20622737-id-3161025.html

  1. package com.srie.test;
  2. import java.awt.BasicStroke;
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.EventQueue;
  7. import java.awt.Font;
  8. import java.awt.Graphics;
  9. import java.awt.Graphics2D;
  10. import java.awt.Shape;
  11. import java.awt.Stroke;
  12. import java.awt.geom.Arc2D;
  13. import java.awt.geom.CubicCurve2D;
  14. import java.awt.geom.Ellipse2D;
  15. import java.awt.geom.Line2D;
  16. import java.awt.geom.QuadCurve2D;
  17. import java.awt.geom.Rectangle2D;
  18. import javax.swing.JFrame;
  19. import javax.swing.JLabel;
  20. import javax.swing.JPanel;
  21. import javax.swing.JScrollPane;
  22. import javax.swing.border.EmptyBorder;
  23. public class JFrame001 extends JFrame {
  24. private static final long serialVersionUID = -8298152118685661613L;
  25. private JPanel contentPane;
  26. public static void main(String[] args) {
  27. EventQueue.invokeLater(new Runnable() {
  28. public void run() {
  29. try {
  30. JFrame001 frame = new JFrame001();
  31. frame.setVisible(true);
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. });
  37. }
  38. /**
  39. * Create the frame.
  40. */
  41. public JFrame001() {
  42. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  43. setBounds(100, 100, 850, 600);
  44. contentPane = new JPanel();
  45. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  46. contentPane.setLayout(new BorderLayout(0, 0));
  47. setContentPane(contentPane);
  48. JScrollPane scrollPane = new JScrollPane();
  49. contentPane.add(scrollPane, BorderLayout.CENTER);
  50. JPanel panel = new JPanel() {
  51. private static final long serialVersionUID = 1L;
  52. @Override public void paint(Graphics g) {
  53. super.paint(g);
  54. // g绘制圆弧
  55. g.drawArc(10, 10, 100, 50, 270, 200);
  56. // g绘制线段
  57. g.drawLine(10, 10, 50, 50);
  58. // g绘制圆形
  59. g.drawOval(10, 80, 50, 30);
  60. // g绘制矩形
  61. g.setColor(Color.RED);
  62. g.drawRect(80, 80, 100, 50);
  63. // g绘制字符串
  64. g.drawString("hello", 190, 80);
  65. Graphics2D g2 = (Graphics2D) g;
  66. // g2绘制Ellipse2D
  67. Shape s01 = new Ellipse2D.Float(50, 110, 20, 20);
  68. g2.draw(s01);
  69. // g2绘制Line2D
  70. Shape s02 = new Line2D.Float(10, 150, 50, 150);
  71. g2.setColor(Color.BLACK);
  72. Stroke stroke = new BasicStroke(5);
  73. g2.setStroke(stroke);
  74. g2.draw(s02);
  75. // g2绘制Line2D, 使用BasicStroke
  76. Shape s03 = new Line2D.Float(10, 180, 150, 180);
  77. g2.setColor(Color.BLACK);
  78. Stroke stroke02 = new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, new float[] { 20, 5 }, 10);
  79. g2.setStroke(stroke02);
  80. g2.draw(s03);
  81. // g2绘制Arc2D
  82. Stroke stroke03 = new BasicStroke(1);
  83. g2.setStroke(stroke03);
  84. Shape s04 = new Arc2D.Float(10, 200, 40, 40, 0, 90, Arc2D.OPEN);
  85. g2.draw(s04);
  86. s04 = new Arc2D.Float(60, 200, 40, 40, -30, 90, Arc2D.CHORD);
  87. g2.draw(s04);
  88. s04 = new Arc2D.Float(110, 200, 40, 40, 0, 90, Arc2D.PIE);
  89. g2.draw(s04);
  90. // g2不能绘制Point2D
  91. // new Point2D.Float(10,210);
  92. // g2绘制Rectangle2D
  93. Shape s05 = new Rectangle2D.Float(10, 250, 130, 30);
  94. g2.draw(s05);
  95. // g2绘制CubicCurve2D
  96. Shape s06 = new CubicCurve2D.Float(10, 310, 35, 280, 85, 340, 100, 310);
  97. g2.draw(s06);
  98. s06 = new Line2D.Float(10, 310, 35, 280);
  99. g2.draw(s06);
  100. s06 = new Line2D.Float(35, 280, 85, 340);
  101. g2.draw(s06);
  102. s06 = new Line2D.Float(85, 340, 100, 310);
  103. g2.draw(s06);
  104. // g2绘制QuadCurve2D
  105. Shape s07 = new QuadCurve2D.Float(10, 350, 55, 370, 100, 350);
  106. g2.draw(s07);
  107. s07 = new Line2D.Float(10, 350, 55, 370);
  108. g2.draw(s07);
  109. s07 = new Line2D.Float(55, 370, 100, 350);
  110. g2.draw(s07);
  111. // 设置Font, drawString;
  112. Font font = new Font("黑体", Font.BOLD, 16);
  113. g2.setFont(font);
  114. g2.drawString("中文字符串", 10, 390);
  115. }
  116. };
  117. panel.setPreferredSize(new Dimension(2000, 1000));
  118. scrollPane.setViewportView(panel);
  119. JPanel panelColumn = new JPanel();
  120. scrollPane.setColumnHeaderView(panelColumn);
  121. JLabel lblNewLabel = new JLabel("New label");
  122. panelColumn.add(lblNewLabel);;
  123. JPanel panelRow = new JPanel();
  124. scrollPane.setRowHeaderView(panelRow);
  125. JLabel lblNewLabel_1 = new JLabel("New label");
  126. panelRow.add(lblNewLabel_1);
  127. }
  128. }

Java Swing Graphics Graphics2D的一般用法的更多相关文章

  1. <JAVA图像学习笔记>关于Graphics/Graphics2D以及简单的几何图像制作(一个简单钟表的实现)

    题外话:正好赶上OperatingSystem的作业要做一个模拟线程/进程调度的问题,决定用JAVA实现才发现这些内容和之前学过的GUI制作是两码事儿- -b 通过学习java.swing库的Acti ...

  2. learning java swing 基本组件用法

    import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event ...

  3. Java Swing 日历 控件

    这是我改写的网上的DateChooser代码后的作品,使用效果如图所示.用法参考备注,以及Main函数中用法. /** * * Copyright: Ares. * All Rights Reserv ...

  4. Java Swing jpanel paint方法执行两次的问题

    Java Swing jpanel paint方法执行两次的问题: 在其他环境下执行了两次,自己测试怎么都是执行了一次,记录一下这个问题:需要后继工作: 可能是进行各种参数设置的时候导致了paint方 ...

  5. java Swing 图片缓冲机制

    java Swing 图片缓冲机制: 参考:http://jorneyr.iteye.com/blog/868858#comments package util; import java.awt.ge ...

  6. java swing画图片爱心

    第一次用swing做一个可视化程序,写第一篇随笔,有写的不好的地方请多多见谅.上个星期三在网上看到一个画爱心的软件,就想着自己用java也实现一个程序,画爱心用到的数学函数知识在网上百度的,不是本人原 ...

  7. Java Swing 创建转圈的进度提示框

    Java Swing 创建转圈的进度提示框 摘自 https://blog.csdn.net/nihaoqiulinhe/article/details/52439486 置顶2016年09月05日 ...

  8. Java Swing interview

    http://www.careerride.com/Swing-AWT-Interview-Questions.aspx   Swing interview questions and answers ...

  9. java swing 双人五子棋源代码

    import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; impo ...

随机推荐

  1. HDU 1114 Piggy-Bank(判断是否恰好装满的背包)

    其实这道题在寒假自学训练赛的时候就做过,不过感觉现在的理解跟当时真的不一样,大一半年过去了,变了这么多,我们都在进步,一回头便走出了这么远... 好了,题目很简单,一个背包,装不满做一个标记就行了 # ...

  2. document.createElement方法的使用

    我们在使用createElemen方法t创建一个元素节点的时候,似乎在IE下面怎么写都可以,但切换到FF等其它浏览器却总是会报错. 比如我们要创建一个input元素,那么在IE下,我们可以有多种写法: ...

  3. 【HighCharts系列教程】八、Html标签属性——Labels

    一.labels属性说明 Labels属性允许在HighCharts图表的任意位置添加任意的html代码.可以实现许多自定义内容. 二.labels属性详解 参数 子参数 说明 默认值 items — ...

  4. 未在本地计算机上注册“Microsoft.Ace.OleDB.12.0”

    这是异常 我的电脑室x86的所以选择x86.

  5. Email:2017

    Hi, 2017,我对自己有一个小小的期望:写写文字,安安心. Enjoy a simple life. 如我所愿吧! 明年再来问候你.

  6. php中__clone() shallow copy 只是浅复制

    什么是浅复制呢? 简单一点,就是说复制一个对象的时候,如果对象$Obj的一个属性的类型是引用类型的,比如 $person这个属性,指向的是一个 叫做 $objPerson的一个引用, 那么复制$Obj ...

  7. 170113、CentOs6.4中安装和配置vsftp简明教程

    一.vsftp安装篇 代码如下: # 安装vsftpdyum -y install vsftpd# 启动service vsftpd start# 开启启动chkconfig vsftpd on 二. ...

  8. Bitmap 格式

    源:Bitmap 格式 参考:bitmap文件格式 Bitmap是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),DDB已经基本停用. Bit ...

  9. 在IOS应用中从竖屏模式强制转换为横屏模式

    http://www.cnblogs.com/mrhgw/archive/2012/07/18/2597218.html 在 iPhone 应用里,有时我们想强行把显示模式从纵屏改为横屏(反之亦然), ...

  10. IOS开发之IOS8.0最新UIAlertController

    最近苹果更新的IOS8 对以前进行了很大的修改, 更新的API也让人捉急,据说iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.比如全新的UIPrese ...