java swing应用(3):画当前月份的日历并保存为图片
来源:互联网 发布:网络教育的报名条件 编辑:程序博客网 时间:2024/06/06 03:41
import java.text.*; import java.awt.*;import javax.swing.*;import java.util.*; import java.io.*;import javax.imageio.*;import java.awt.image.BufferedImage;public class GuiDemo4{ public static void main(String[] args){ GuiDemo4 gui = new GuiDemo4(); gui.go(); } public void go(){ //创建 JFrame JFrame frame = new JFrame(); //窗口关闭退出应该程序 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //画图 MyDrawPanel drawPanel = new MyDrawPanel(); frame.getContentPane().add(drawPanel); //设置大小、可见 frame.setSize(300,300); frame.setVisible(true); drawPanel.repaint(); File f = new File("test.jpg"); exportOtherShapesImage(f, drawPanel); } //保存为图片 public boolean exportOtherShapesImage(File f, MyDrawPanel panel) { Dimension imageSize = panel.getSize(); BufferedImage image = new BufferedImage(imageSize.width, imageSize.height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = image.createGraphics(); panel.paint(g); g.dispose(); try { ImageIO.write(image, "png", f); } catch (IOException e) { e.printStackTrace(); return false; } System.out.println("export Image -->" + f.getAbsoluteFile()); return true; } class MyDrawPanel extends JPanel{ public void paintComponent(Graphics g) { //画圆角矩形 g.drawRoundRect(10, 10, 260, 260, 10, 10); g.drawRoundRect(12, 12, 256, 256, 8, 8); //设置字体 Font font1 = new Font("TimesRoman", Font.PLAIN, 15); Font font2 = new Font("TimesRoman", Font.BOLD, 18); g.setFont(font1); //当前日期 Calendar calendar = Calendar.getInstance(); //设置指定日期(注意月份范围是0-11) //calendar.set(2013, 10, 9); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DATE); //当前月的第一天是星期几 int day1st = getWeeksOfDate(year, month, 1); //当前月有多少天 int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int startX = 25; //开始的X轴位置 int startY = 28; //开始的Y轴位置 int posLen = 35; //每次移动的位置长度 int x = startX + day1st * posLen; //1号的开始X轴位置 int y = startY + posLen * 2;//1号的开始Y轴位置 //画年月日 String currentDate = year + "年" + (month + 1) + "月" + day + "日"; g.drawString(currentDate, 100, startY); //画年月日下面的直线 g.drawLine(12, startY+8, 267, startY+8); //画星期 String[] weeks = new String[] {"日", "一", "二", "三", "四", "五", "六"}; for (int i = 0; i < weeks.length; i++) g.drawString(weeks[i], startX + posLen * i, startY + posLen); //画日期 for (int j = 1; j <= days; j++){ if (j == day){ //如果是今天,设置字体和颜色 g.setFont(font2); g.setColor(Color.BLUE); } else{ g.setFont(font1); g.setColor(Color.BLACK); } String s = padLeft(Integer.toString(j), 2); g.drawString(s, x, y); //星期六结束到星期日时换行,X轴回到初始位置,Y轴增加 if ((day1st + j) % 7 == 0){ x = startX; y = y + posLen - 5; } else x = x + posLen; } } public String padRight(String s, int n) { return String.format("%1$-" + n + "s", s); } public String padLeft(String s, int n) { return String.format("%1$" + n + "s", s); } // 计算星期几: 星期日至星期六的值为0-6 public int getWeeksOfDate(int year, int month, int day) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); return calendar.get(Calendar.DAY_OF_WEEK)-1; } }}
结果如下:
- java swing应用(3):画当前月份的日历并保存为图片
- c#图片添加当前月份的日历
- 用JAVA打印当前月份的日历
- java 实现打印当前月份的日历
- 输出当前月份的日历
- 【java】java实现在界面上显示当前月份的日历,并连接数据库的简易备忘录
- java实现当前页面保存为图片
- 当前月份日历
- selenium截取当前窗口,并保存为图片
- Swing 将显示好的JPanel保存为一张图片
- Java编写日历程序,显示当前月份及日期
- 根据输入的日期展示当前月份的日历
- JS创建当前月份的日历table型
- 【Unity】保存图片的名字为当前年月日
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。并读取出来。
- 截取JPanel的部分内容并保存为图片
- 获取视频的每一帧,并保存为.jpg图片
- Java Swing 日历控件
- jquery垂直公告滚动实现代码
- 一个python程序员的ruby三日游(四)——观察者模式
- 用ATL开发和部署ActiveX网页控件
- java Runtime调用Dos命令
- CString 成员函数用法大全
- java swing应用(3):画当前月份的日历并保存为图片
- 一个python程序员的ruby三日游(五) ——重构(一)
- IOS 动态按钮 Socket
- 百度竞价搜索推广出价策略
- linux 导入mysql 文件 乱码
- Linux命令之帮助手册
- AFNetWorking-1-获得数据
- 黑马程序员--接口
- 一个python程序员的ruby三日游(三)——构建工具