Java Swing Graphics Graphics2D的一般用法
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
package com.srie.test;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Arc2D;
import java.awt.geom.CubicCurve2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.QuadCurve2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
public class JFrame001 extends JFrame {
private static final long serialVersionUID = -8298152118685661613L;
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JFrame001 frame = new JFrame001();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public JFrame001() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 850, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JScrollPane scrollPane = new JScrollPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override public void paint(Graphics g) {
super.paint(g);
// g绘制圆弧
g.drawArc(10, 10, 100, 50, 270, 200);
// g绘制线段
g.drawLine(10, 10, 50, 50);
// g绘制圆形
g.drawOval(10, 80, 50, 30);
// g绘制矩形
g.setColor(Color.RED);
g.drawRect(80, 80, 100, 50);
// g绘制字符串
g.drawString("hello", 190, 80);
Graphics2D g2 = (Graphics2D) g;
// g2绘制Ellipse2D
Shape s01 = new Ellipse2D.Float(50, 110, 20, 20);
g2.draw(s01);
// g2绘制Line2D
Shape s02 = new Line2D.Float(10, 150, 50, 150);
g2.setColor(Color.BLACK);
Stroke stroke = new BasicStroke(5);
g2.setStroke(stroke);
g2.draw(s02);
// g2绘制Line2D, 使用BasicStroke
Shape s03 = new Line2D.Float(10, 180, 150, 180);
g2.setColor(Color.BLACK);
Stroke stroke02 = new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, new float[] { 20, 5 }, 10);
g2.setStroke(stroke02);
g2.draw(s03);
// g2绘制Arc2D
Stroke stroke03 = new BasicStroke(1);
g2.setStroke(stroke03);
Shape s04 = new Arc2D.Float(10, 200, 40, 40, 0, 90, Arc2D.OPEN);
g2.draw(s04);
s04 = new Arc2D.Float(60, 200, 40, 40, -30, 90, Arc2D.CHORD);
g2.draw(s04);
s04 = new Arc2D.Float(110, 200, 40, 40, 0, 90, Arc2D.PIE);
g2.draw(s04);
// g2不能绘制Point2D
// new Point2D.Float(10,210);
// g2绘制Rectangle2D
Shape s05 = new Rectangle2D.Float(10, 250, 130, 30);
g2.draw(s05);
// g2绘制CubicCurve2D
Shape s06 = new CubicCurve2D.Float(10, 310, 35, 280, 85, 340, 100, 310);
g2.draw(s06);
s06 = new Line2D.Float(10, 310, 35, 280);
g2.draw(s06);
s06 = new Line2D.Float(35, 280, 85, 340);
g2.draw(s06);
s06 = new Line2D.Float(85, 340, 100, 310);
g2.draw(s06);
// g2绘制QuadCurve2D
Shape s07 = new QuadCurve2D.Float(10, 350, 55, 370, 100, 350);
g2.draw(s07);
s07 = new Line2D.Float(10, 350, 55, 370);
g2.draw(s07);
s07 = new Line2D.Float(55, 370, 100, 350);
g2.draw(s07);
// 设置Font, drawString;
Font font = new Font("黑体", Font.BOLD, 16);
g2.setFont(font);
g2.drawString("中文字符串", 10, 390);
}
};
panel.setPreferredSize(new Dimension(2000, 1000));
scrollPane.setViewportView(panel);
JPanel panelColumn = new JPanel();
scrollPane.setColumnHeaderView(panelColumn);
JLabel lblNewLabel = new JLabel("New label");
panelColumn.add(lblNewLabel);;
JPanel panelRow = new JPanel();
scrollPane.setRowHeaderView(panelRow);
JLabel lblNewLabel_1 = new JLabel("New label");
panelRow.add(lblNewLabel_1);
}
}
Java Swing Graphics Graphics2D的一般用法的更多相关文章
- <JAVA图像学习笔记>关于Graphics/Graphics2D以及简单的几何图像制作(一个简单钟表的实现)
题外话:正好赶上OperatingSystem的作业要做一个模拟线程/进程调度的问题,决定用JAVA实现才发现这些内容和之前学过的GUI制作是两码事儿- -b 通过学习java.swing库的Acti ...
- learning java swing 基本组件用法
import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event ...
- Java Swing 日历 控件
这是我改写的网上的DateChooser代码后的作品,使用效果如图所示.用法参考备注,以及Main函数中用法. /** * * Copyright: Ares. * All Rights Reserv ...
- Java Swing jpanel paint方法执行两次的问题
Java Swing jpanel paint方法执行两次的问题: 在其他环境下执行了两次,自己测试怎么都是执行了一次,记录一下这个问题:需要后继工作: 可能是进行各种参数设置的时候导致了paint方 ...
- java Swing 图片缓冲机制
java Swing 图片缓冲机制: 参考:http://jorneyr.iteye.com/blog/868858#comments package util; import java.awt.ge ...
- java swing画图片爱心
第一次用swing做一个可视化程序,写第一篇随笔,有写的不好的地方请多多见谅.上个星期三在网上看到一个画爱心的软件,就想着自己用java也实现一个程序,画爱心用到的数学函数知识在网上百度的,不是本人原 ...
- Java Swing 创建转圈的进度提示框
Java Swing 创建转圈的进度提示框 摘自 https://blog.csdn.net/nihaoqiulinhe/article/details/52439486 置顶2016年09月05日 ...
- Java Swing interview
http://www.careerride.com/Swing-AWT-Interview-Questions.aspx Swing interview questions and answers ...
- java swing 双人五子棋源代码
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; impo ...
随机推荐
- CodeForces 139C Literature Lesson(模拟)
这个题,读懂了就是水,读不懂就没办法下手,论英语阅读的重要性...只有五种形式,第一种万能型aaaa,是另外3种的特殊情况,第二种克莱里林四行打油诗aabb形式,第三种是交替的abab形式,第四种是封 ...
- 超简单讲解JQ冒泡问题
当JQ代码越写越长的时候,冒泡的问题就会显得突出.所以对JQ冒泡问题的了解是十分必要的. 那么什么是冒泡了,个人简单的理解就是在触发子元素事件的时候父元素的事件也被动触发. 举个简单例子: 例如有一个 ...
- 10、end关键字和Fibonacci series: 斐波纳契数列
# Fibonacci series: 斐波纳契数列 # 两个元素的总和确定了下一个数 a, b = 0, 1 #复合赋值表达式,a,b同时赋值0和1 while b < 10: print(b ...
- LoadRunner 录制cas 登陆脚本
关于CAS 的概念,见链接:http://www.360doc.com/content/15/0204/17/21706453_446251626.shtml 需要增加4个关联函数 //Correla ...
- MySQL5.7绿色版安装
1. 下载MySQL 5.7,地址:http://dev.mysql.com/downloads/mysql/ (选择32位或者64位版本需根据自身PC情况) 2. 下载后解压,比如我的目录结构是: ...
- (中等) CF 585D Lizard Era: Beginning,中途相遇。
In the game Lizard Era: Beginning the protagonist will travel with three companions: Lynn, Meliana a ...
- 黑科技--位集--bitset
自从上次网赛发现这么个东西之后,深深地感受到了bitset的强大,0.0. 正常的bool占用1字节空间,bitset可以把这个缩到1bit,空间上8倍优化.正常用起来可能会跟位运算状态压缩类似,但是 ...
- Linux程序设计中的curses.h编译报错,无法找到curses.h和ncurses.h
源程序screen.c如下: #include <stdio.h> #include <term.h> #include <curses.h> #include & ...
- WebView点击图片看大图效果
在webViewDelegate里面添加如下代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 - (voi ...
- Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】
高斯消元. 自己只能想出来把每一个点看成一个变量,用Xi表示其状态,这样必定TLE,n^2 个变量,再加上3次方的高斯消元(当然,可以用bitset压位). 正解如下: 我们把地图划分成一个个的横条和 ...