`
快乐的拖拉机
  • 浏览: 9188 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

在桌面上绘图(小程序)

 
阅读更多
建议先将此程序运行,然后打包成java文件包,这样就可以直接在电脑屏幕上点击运行,就相当于在电脑屏幕上画画了,这个程序只能画出各种颜色的实心圆与空心圆。




package Fengxing;

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test2 extends JFrame {
JButton jb;
Image image;
Graphics g;
int i = 0, o = 0, c = 0;
static int j = 0;
int x;
int y;
// serialVersionUID作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
private static final long serialVersionUID = 1L;
static BackPane pane;

public Test2() {
setDefaultCloseOperation(3);
setUndecorated(true);
setSize(1366, 750);
setLocationRelativeTo(null);
// 截图函数
try {
Robot robot = new Robot();
// 对在窗体所在位置截屏
image = robot.createScreenCapture(getBounds());
} catch (AWTException e) {
e.printStackTrace();
}
pane = new BackPane();
jb = new JButton("Start");
pane.add(jb);
setVisible(true);
g = this.getGraphics();
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Start")) {
i = 1;
o = 0;
c = 0;
}
}
});
this.addMouseMotionListener(new MouseMotionListener() {

@Override
public void mouseDragged(MouseEvent e) {
            x = e.getX();
        y = e.getY();
if (1 == i) { // 得到鼠标当前的坐标

if (1 == c) {
Random rand = new Random();
// 每次调用时都可以随机选取一种颜色
g.setColor(new Color(rand.nextInt(256), rand
.nextInt(256), rand.nextInt(256)));
} else {
g.setColor(Color.BLACK);
}
if (1 == o) {
g.drawOval(x, y, 40, 40);
} else {
// 画一个实心的圆圈
g.fillOval(x, y, 40, 60);
}
}
}

@Override
public void mouseMoved(MouseEvent e) {

}
});
JButton jb1 = new JButton("Clean");
jb1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// 清空屏幕
pane.getGraphics().clearRect(0, 0, 1500, 1500);
// 清空后再重画一个面板
new BackPane().paintComponent(g);
// 另i为0,再一次点击开始时才可以继续画
i = 0;
}
});
pane.add(jb1);
JButton jb2 = new JButton("Exit");
jb2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Exit")) {
int i = JOptionPane.showConfirmDialog(null, "确定要退出该程序?");
if (i == 0) {
System.exit(0);
}
}
}
});
pane.add(jb2);
JButton jb3 = new JButton("Oval");
jb3.addActionListener(new ActionListener() {



@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Oval")) {
g.drawOval(x, y, 40, 40);
o = 1;
c = 0;
}
}
});
pane.add(jb3);
JButton jb4 = new JButton("Colorful");
jb4.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Colorful")) {
c = 1;

}
}
});
pane.add(jb4);
setContentPane(pane);
}

class BackPane extends JPanel {
private static final long serialVersionUID = 1L;

@Override
// 定义一个在截取的屏幕上绘画的函数
protected void paintComponent(Graphics g) {
// 调用父类的方法
super.paintComponent(g);
if (image != null) {
g.drawImage(image, 0, 0, null);
}
}

}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new Test2();
}
});
}

}
分享到:
评论

相关推荐

    桌面小程序 - 绘图圣诞树

    圣诞节可直接双击打开,悬浮于电脑桌面,充满节日气氛

    java弹球小程序

    java弹球小程序桌面弹球是游戏中常见的游戏,从以前的掌上游戏机到如今的手机游戏,都是一个十分经典的游戏。 玩家控制一个可以左右移动的挡板去改变运动中小球的移动方向,目的是用小球消除游戏屏幕中的所有 障碍物...

    C#雪花飘飘程序

    C#雪花飘飘程序,作为博客的配套程序使用,非本人原创。

    雨滴桌面Rainmeter 4.3 正式版

    硬件加速和英特尔高清集成显卡:目前某些英特尔高清集成显卡芯片在硬件加速上存在问题(通常出现在笔记本电脑上,具体表现在Meter的一些动态效果绘制存在残留阴影问题),这是由于英特尔芯片组的驱动程序存在错误所...

    python+pyqt5显示图像,播放视频,绘图小工具

    python+pyqt5绘图,显示图像,播放视频的图形界面程序

    C#漂亮的Window桌面透明时钟

    C# 调用UpdateLayeredWindow函数编写一个类似Window桌面透明时钟的小程序,有4种颜色样式,随意切换,代码简单适合初学者学习参考。主要用位图实现,构造图像显示区域:让图像的中心与窗口的中心点一致,恢复图像在...

    注册表批量修改权限命令

    这是一个内核模式的驱动程序,可在键盘类驱动程序上演示键盘输入过滤,以便将 Caps-Lock 转变为控制键。在此级别过滤允许在 NT 刚好要“看到”键之前变换和隐藏键。Ctrl2cap 还显示如何使用 NtDisplayString() 打印...

    MAPGIS地质制图工具

    本系统是在Windows XP系统和MapGis6.7(B20051118)基础上,以Microsoft VC++ 6.0为编程语言,MapGis 6.7 SDK为开发平台进行开发的地质图件制作软件。系统基于MapGis输入编辑子系统强大的图形编辑能力,添加专业的地质...

    point_drawing:这是一个用于绘制、动画和生成形状的桌面应用程序

    这是一个用于绘制、动画和生成形状的桌面应用程序 要求 这是在我的 XUbuntu 12.0.4 x64 机器上构建的,带有 Qt Creator 3.2.2(开源),基于 Qt 5.3.2(GCC 4.6.1,64 位)。 待办事项 使动画在小部件中居中,并使其...

    DfMirage SDK v1.2 中文开发指南

    它是一种在图形系统的DDML级别上管理的虚拟视频设备的驱动程序,可精确地镜像一个或多个物理显示设备的绘图操作。 Windows DDK中可以找到镜像视频驱动程序的工作方式。远程桌面应用程序(例如NetMeeting,PC Anywhere,...

    Delphi程序开发范例宝典(第3版).正解的

    实例033 直接在窗体上绘图 41 实例034 动画形式的程序界面 42 实例035 以时钟显示界面窗体 43 1.10 标题栏窗体 45 实例036 标题栏上的按钮 46 实例037 使窗体标题栏文字右对齐 48 实例038 没有...

    C#程序开发范例宝典(第2版).part08

    实例096 在Button按钮上绘图 138 2.11 焦点变换与输入控制 140 实例097 按回车键焦点在控件中移动的录入窗口 140 实例098 程序运行时拖动控件 141 实例099 控件得到焦点时变色 142 实例100 控件的输入限制 143 ...

    多显示器控制软件DisplayFusion

    不论是电脑游戏休闲或者办公工程制图,如果您使用两个甚至更多的显示器,装一款这样的多屏管理器*实在。  通过使用 DisplayFusion 在每个显示器中添加一个任务栏,这样使得您的窗口管理更有条理。每个显示器上的...

    AudioAnalyzer:实时绘制音频信号频谱的桌面应用程序

    AudioAnalyzer是一个小型JavaFX桌面应用程序,用于实时绘制音频信号频谱。 在此处下载: : 。 需要安装才能解码和解复用音频文件。 特征: 实时频谱绘图的音频播放 多渠道支持 分析不同数量的样品 波形预览 图平滑...

    C#程序开发范例宝典(第2版).part12

    实例096 在Button按钮上绘图 138 2.11 焦点变换与输入控制 140 实例097 按回车键焦点在控件中移动的录入窗口 140 实例098 程序运行时拖动控件 141 实例099 控件得到焦点时变色 142 实例100 控件的输入限制 143 ...

    电子教学屏幕注释工具 Epic Pen Pro 3.7.20 中文多语免费版.zip

    您可以直接在大多数 Windows 桌面应用程序上绘制,编写和高亮显示,包括演示文稿软件,网页,视频,创意工作室甚至游戏。Epic Pen 非常轻巧,没有性能影响,因此非常适合录制视频或直播。 您还可以使用我们的新白板...

    C#程序开发范例宝典 c#学习

    实例034 直接在窗体上绘图...... 37 实例035 动画形式的程序界面...... 38 1.10 标题栏窗体...... 39 实例036 使窗体标题栏文字右对齐...... 39 实例037 没有标题栏但可以改变大小的窗口...... 39 1.11 ...

Global site tag (gtag.js) - Google Analytics