import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.IOException;
// Canvas绘图程序
public class CanvasDemo extends MIDlet implements CommandListener {
private Command exitCommand = new Command("退出", Command.EXIT, 1); //退出命令
private Command backCommand = new Command("返回", Command.BACK, 3); //返回命令
private Display display; // 设备的显示器
private List menuList; //图片名的主菜单列表
private DrawingCanvas canvas; //显示绘制的图形
String[] itemNames = { //显示列表名称
"直线",
"弧",
"矩形",
"圆角矩形",
"三角形",
"文字"
};
public CanvasDemo() {
display = Display.getDisplay(this); //取得设备的显示器
}
// 重载抽象类MIDlet的抽象方法startApp()
protected void startApp() {
canvas = new DrawingCanvas(); // 创建DrawingCanvas对象canvas
canvas.addCommand(exitCommand); // 为canvas加上退出命令
canvas.addCommand(backCommand); // 为canvas加上返回命令
canvas.setCommandListener(this); // 为canvas设置命令监听者
int num = itemNames.length; // 菜单项个数
Image[] imageArray = new Image[num]; // 列表的图标数组
try {
Image icon = Image.createImage("/Icon.png"); // 创建列表的图标
for(int i=0;i<num;i++) {
imageArray[i] =icon;
}
} catch (java.io.IOException err) {
}
menuList = new List("Canvas绘图程序", Choice.IMPLICIT, itemNames, imageArray);
menuList.addCommand(exitCommand); // 为主菜单列表加上退出命令
menuList.setCommandListener(this); // 为主菜单列表设置命令监听器
display.setCurrent(menuList); // 显示主菜单列表
}
// 重载抽象类MIDlet的方法pauseApp()
protected void pauseApp() {
}
// 重载抽象类MIDlet的方法destroyApp()
protected void destroyApp(boolean unconditional) {
}
// 实现接口CommandListener的方法
public void commandAction(Command c, Displayable d) {
if (d.equals(menuList)) {
if (c == List.SELECT_COMMAND) {
int select = ((List)d).getSelectedIndex(); //得到选中的菜单项
switch(select) {
case 0:
canvas.drawLine(); // 绘制直线
display.setCurrent(canvas);
break;
case 1:
canvas.drawArc(); // 绘制弧
display.setCurrent(canvas);
break;
case 2:
canvas.drawRect(); // 绘制矩形
display.setCurrent(canvas);
break;
case 3:
canvas.drawRoundRect(); // 绘制圆角矩形
display.setCurrent(canvas);
break;
case 4:
canvas.drawTriangle(); // 绘制三角形
display.setCurrent(canvas);
break;
case 5:
canvas.drawText(); // 绘制文字
display.setCurrent(canvas);
}
}
}
if (c == backCommand) {
display.setCurrent(menuList);
} else if (c == exitCommand) {
destroyApp(false); // 销毁程序
notifyDestroyed();
}
}
// 绘制图形的画布
public class DrawingCanvas extends Canvas {
int w = getWidth(); // 画布的宽度
int h = getHeight(); // 画布的高度
Image buffer = Image.createImage(w, h); // 用于绘图的缓冲图像
Graphics gc = buffer.getGraphics(); // 获取缓冲图像的图形环境
// 清除画布
public void clearScreen() {
gc.setColor(255,255,255); // 设置绘图颜色为白色
gc.fillRect(0,0,w,h); // 把缓冲图像填充为白色
gc.setColor(255,0,0); // 设置绘图颜色为红色
}
// 绘制直线
public void drawLine() {
setTitle("直线"); // 设置画布的标题
clearScreen(); // 清除画布
gc.drawLine(10,10,w-20,h-20); // 绘制黑色直线
gc.setColor(0,0,255); // 设置绘图颜色为蓝色
gc.drawLine(10,h/2,w-10,h/2); // 绘制蓝色直线
}
// 绘制弧
public void drawArc() {
setTitle("弧线和填充弧");
clearScreen();
gc.drawArc(5,5,w/2-20,h/2-20,60,216); // 绘制弧线
gc.drawArc(5,h/2-10,w/2-20,h/2-20,0,360); // 绘制圆
gc.setColor(0,0,255);
gc.fillArc(w/2,5,w/2-20,h/2-20,60,216); // 绘制填充弧线
gc.fillArc(w/2,h/2-10,w/2-20,h/2-20,0,360); // 绘制填充圆
}
// 绘制矩形
public void drawRect() {
setTitle("矩形和填充矩形");
clearScreen();
gc.drawRect(25,25,w/2-30,h/2-30); // 绘制矩形
gc.fillRect(w/2+25,25,w/2-30,h/2-30); // 绘制填充矩形
}
// 绘制圆角矩形
public void drawRoundRect() {
setTitle("圆角矩形和填充圆角矩形");
clearScreen();
gc.drawRoundRect(5,5,w-5-30,h/2-30,20,20); // 绘制圆角矩形
gc.setColor(0,0,255);
gc.fillRoundRect(5,h/2,w-30,h/2-30,20,20); // 绘制填充圆角矩形
}
// 绘制三角形
public void drawTriangle() {
setTitle("填充三角形");
clearScreen();
gc.fillTriangle(w/2, h/6, w/6, h/2, w/2, h/2);
}
// 绘制文字
public void drawText() {
setTitle("文字"); //设置标题
clearScreen();
gc.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_SMALL)); // 设置字体
gc.drawString("Hello World!",0,0,gc.TOP|gc.LEFT); // 使用当前字体绘制文字
gc.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD|Font.STYLE_UNDERLINED,Font.SIZE_LARGE));
gc.drawString("Hello World!",0,h/3,gc.TOP|gc.LEFT);
}
public void paint(Graphics g) {
g.drawImage(buffer, 0, 0, 0); // 把缓冲区图像的内容绘制到画布上
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java高级编程百例
共129个文件
bmp:45个
java:45个
gif:13个
需积分: 9 105 下载量 138 浏览量
2008-10-02
20:42:50
上传
评论
收藏 1.12MB RAR 举报
温馨提示
Java高级编程百例 有需要代码的可以拿去看看。
资源详情
资源评论
资源推荐
收起资源包目录
Java高级编程百例 (129个子文件)
28-2.bmp 525KB
1.bmp 522KB
1.bmp 517KB
27-2.bmp 507KB
96-2.bmp 446KB
23-2.bmp 401KB
23-1.bmp 401KB
97-1.bmp 349KB
103-1.bmp 304KB
100-1.bmp 300KB
101-1.bmp 298KB
102-1.bmp 298KB
104-1.bmp 297KB
96-1.bmp 293KB
102-2.bmp 293KB
30-1.bmp 288KB
7-1.bmp 262KB
98-1.bmp 259KB
99-1.bmp 246KB
9-2.bmp 229KB
14-1.bmp 195KB
18-1.bmp 194KB
21-1.bmp 176KB
13-1.bmp 176KB
11-1.bmp 171KB
10-1.bmp 171KB
19-1.bmp 169KB
8-1.bmp 164KB
17-1.bmp 147KB
27-1.bmp 147KB
29-1.bmp 141KB
26-1.bmp 139KB
20-1.bmp 132KB
25-1.bmp 129KB
15-2.bmp 126KB
15-3.bmp 126KB
15-1.bmp 126KB
8-2.bmp 124KB
16-1.bmp 104KB
12-1.bmp 103KB
12-2.bmp 97KB
22-1.bmp 82KB
24-2.bmp 59KB
24-1.bmp 59KB
28-1.bmp 55KB
IconComboBoxDemo.class 2KB
JTreeDemo.class 2KB
LineDemo.class 1KB
IconRenderer.class 1010B
IconComboBoxDemo$1.class 935B
JTreeDemo$1.class 859B
Thumbs.db 14KB
Thumbs.db 11KB
Thumbs.db 10KB
Thumbs.db 9KB
Thumbs.db 8KB
Thumbs.db 8KB
Thumbs.db 8KB
Thumbs.db 6KB
Thumbs.db 5KB
image1.gif 5KB
image2.gif 5KB
image3.gif 5KB
image0.gif 5KB
image4.gif 5KB
image5.gif 4KB
1.gif 2KB
3.gif 2KB
4.gif 1KB
2.gif 1KB
5.gif 1KB
back.gif 1KB
cursor.gif 1KB
formdemo.htm 861B
index.html 772B
servlet.jar 78KB
CanvasDemo.java 5KB
PersonalInfo.java 5KB
EditorDemo.java 5KB
MobileAlbum.java 3KB
LookAndFeelDemo.java 3KB
GridBagLayoutDemo.java 3KB
ClipboardDemo.java 3KB
ScreenDemo.java 2KB
ActionDemo.java 2KB
TimerDemo.java 2KB
JPopMenuDemo.java 2KB
JFileChooserDemo.java 2KB
IconComboBoxDemo.java 2KB
JTreeDemo.java 2KB
JWindowDemo.java 2KB
MobileCalendar.java 2KB
JPasswordFieldDemo.java 2KB
ClockDemo.java 2KB
JSliderDemo.java 2KB
AnimatorIcon.java 2KB
HTTPBrowserDemo.java 2KB
JListDemo.java 2KB
DragPictureDemo.java 2KB
MessageDemo.java 2KB
共 129 条
- 1
- 2
java__king
- 粉丝: 24
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0