试试这个函数,drawLine在你自己定义的画板上画线,圆心半径带入一下
在朔州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、成都网站制作 网站设计制作按需定制网站,公司网站建设,企业网站建设,品牌网站建设,全网整合营销推广,外贸营销网站建设,朔州网站建设费用合理。
public void drawAll() {
for(int i = 0; i 60; i++) {
int len = 5;
if(i % 5 == 0) len = 8;
if(i % 15 == 0) len = 10;
double radians = Math.toRadians(i * 6);
drawLine(圆心.x + 半径 * Math.sin(radians), 圆心.y + 半径 * Math.cos(radians),
圆心.x + (半径 - len) * Math.sin(radians), 圆心.x + (半径 - len) * Math.cos(radians));
}
}
可以用FineReport报表软件实现。finereport是纯java软件,类excel设计模式,是一款功能极其牛掰的表格工具,可与数据库直接对接(一般的数据库,Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本数据直接导入当然也支持,企业级额应用中包括设置定时报表、自定汇总数据发送邮件、报表权限分配、决策平台搭建等,因为是专业的报表软件,功能很强大
@Override
public void paint(Graphics g1) {
// Graphics2D继承Graphics, 比Graphics提供更丰富的方法
Graphics2D g = (Graphics2D) g1;
/** ***画圆形时钟的刻度, 每6度便有一个刻度**** */
for (int i = 0; i 360; i = i + 6) {
// 设置画笔的颜色为蓝色
g.setColor(Color.blue);
// 设置画笔的宽度为2
g.setStroke(new BasicStroke(2));
if (i % 90 == 0) {
// 对于0, 3, 6, 9点位置, 使用一个大的蓝色刻度
g.setStroke(new BasicStroke(5));// 画笔宽度为5
// 当起点和终点一样时, 画的就是点
g.drawLine(CIRCLE_X + (int) (Math.cos(i * Math.PI / 180) * CIRCLE_X_RADIUS),
CIRCLE_Y + (int) (Math.sin(i * Math.PI / 180) * CIRCLE_Y_RADIUS),
CIRCLE_X + (int) (Math.cos(i * Math.PI / 180) * CIRCLE_X_RADIUS),
CIRCLE_Y + (int) (Math.sin(i * Math.PI / 180) * CIRCLE_Y_RADIUS));
} else if (i % 30 == 0) {
// 如果角度处于小时的位置, 而且还不在0, 3, 6, 9点时, 画红色的小刻度
g.setColor(Color.red);
g.drawLine(CIRCLE_X + (int) (Math.cos(i * Math.PI / 180) * CIRCLE_X_RADIUS),
CIRCLE_Y + (int) (Math.sin(i * Math.PI / 180) * CIRCLE_Y_RADIUS),
CIRCLE_X + (int) (Math.cos(i * Math.PI / 180) * CIRCLE_X_RADIUS),
CIRCLE_Y + (int) (Math.sin(i * Math.PI / 180) * CIRCLE_Y_RADIUS));
} else {
// 其他位置就画蓝色的小刻度
g.drawLine(CIRCLE_X + (int) (Math.cos(i * Math.PI / 180) * CIRCLE_X_RADIUS),
CIRCLE_Y + (int) (Math.sin(i * Math.PI / 180) * CIRCLE_Y_RADIUS),
CIRCLE_X + (int) (Math.cos(i * Math.PI / 180) * CIRCLE_X_RADIUS),
CIRCLE_Y + (int) (Math.sin(i * Math.PI / 180) * CIRCLE_Y_RADIUS));
}
}
// 画时钟的指针
// 画时针
Line2D.Double lh = new Line2D.Double(CIRCLE_X, CIRCLE_Y,
CIRCLE_X + Math.cos((arcHour - 90) * Math.PI / 180) * HOUR_LENGTH,
CIRCLE_Y + Math.sin((arcHour - 90) * Math.PI / 180) * HOUR_LENGTH);
// 设置画笔宽度和颜色
g.setStroke(new BasicStroke(6));
g.setColor(new Color(0, 128, 0));
// 利用Graphics2D的draw方法画线
g.draw(lh);
// 画分针
Line2D.Double lm = new Line2D.Double(CIRCLE_X, CIRCLE_Y,
CIRCLE_X + Math.cos((arcMin - 90) * Math.PI / 180) * MIN_LENGTH,
CIRCLE_Y + Math.sin((arcMin - 90) * Math.PI / 180) * MIN_LENGTH);
g.setStroke(new BasicStroke(3));
g.setColor(new Color(0, 128, 192));
g.draw(lm);
// 画秒针
Line2D.Double ls = new Line2D.Double(CIRCLE_X, CIRCLE_Y,
CIRCLE_X + Math.cos((arcSec - 90) * Math.PI / 180) * SEC_LENGTH,
CIRCLE_Y + Math.sin((arcSec - 90) * Math.PI / 180) * SEC_LENGTH);
g.setStroke(new BasicStroke(1));
// 秒针的颜色随机, 使动画效果明显.
g.setColor(
new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)));
g.draw(ls);
//画时钟背景, 并将其透明处理
// 所有使用bufferedImageGraphics画的图像, 都画在bufferedImage上,
// drawImage方法的参数含义分别是: 背景图片对象, 目标位置第一个角的X, Y坐标, 目标位置第二个角的X, Y坐标,
// 源位置第一个角的X, Y坐标, 源位置第二个角的X, Y坐标, 图像对象改变时的通知接受者
bufferedImageGraphics.drawImage(img[imageID], 0, 0, imageSize, imageSize, 0, 0, imageSize + 10,
imageSize + 10, this);
// 将背景图片透明化
for (int j = 0; j imageSize; j++) {
for (int i = 0; i imageSize; i++) {
// 获得背景图像中(i, j)坐标的颜色值
int pix = bufferedImage.getRGB(i, j);
Color c = new Color(pix);
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();
// 通过Color对象的alpha, 使颜色透明.
int newpix = new Color(red, green, blue, alpha).getRGB();
// 重新设置背景图像该象素点的颜色
bufferedImage.setRGB(i, j, newpix);
}
}
// 以上画背景操作都是画在bufferedImage上的, 这里要将bufferedImage画在ClockLabel
// 将当前用户剪贴区 Clip 与椭圆区域相交, 并将 Clip 设置为所得的交集
g.clip(new Ellipse2D.Double(95, 45, imageSize, imageSize));
g.setColor(Color.white);
// 在用户剪贴区画bufferedImage
g.drawImage(bufferedImage, 95, 45, this);
}
java表格就是java swing。
//创建表头
String[] columnNames = { "First Name", "Last Name", "Sport",
"# of Years", "Vegetarian" };
//创建显示数据
Object[][] data = {
{ "Kathy", "Smith", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "John", "Doe", "Rowing", new Integer(3), new Boolean(true) },
{ "Sue", "Black", "Knitting", new Integer(2),
new Boolean(false) },
{ "Jane", "White", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };
/*
* JTable还提供了一个重载的构造方法,传入两个Vector
* JTable(Vector rowData, Vector columnNames)
*
*/
final JTable table = new JTable(data, columnNames);
table.setBackground(Color.YELLOW);