首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

仿真Windows_XP画图板的java兑现

2012-09-29 
仿真Windows_XP画图板的java实现??其实现的代码如下:import javax.swing.JFrame/** * 定义窗体示范类,该

仿真Windows_XP画图板的java实现


?


?其实现的代码如下:

import javax.swing.JFrame;/** * 定义窗体示范类,该类继承自JFrame * * @author 吴少聪 */public class Calcolator extends JFrame {/** * 主函数部分 */public static void main(String[] args) {// 实例化一个对象:cal,并且用该对象调用init方法Calcolator cal = new Calcolator();cal.init();}/** * 定义初始化窗体界面的方法:init */public void init() {// 设置窗体的属性this.setTitle("这是一个窗体,可以随意设置窗体名");// 窗体名的设定this.setSize(320, 250);// 窗体大小的设定,其大小单位为像素点数量,可理解为分辨率为320x250this.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序this.setLocationRelativeTo(null);// 设置窗体创建之后在屏幕上居中显示this.setResizable(false);// 设置窗体大小固定,无法实现最大化this.setVisible(true);// 设置窗体对外可见(可显示出来)}}


?窗体要变成这样,我们需要做出如下的源码添加:

import java.awt.Color;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JPanel;/** * 定义窗体示范类,该类继承自JFrame * * @author 吴少聪 */public class Calcolator extends JFrame {/** * 主函数部分 */public static void main(String[] args) {// 实例化对象cal,并且用该对象调用init方法Calcolator cal = new Calcolator();cal.init();}/** * 定义初始化窗体界面的方法:init */public void init() {// 设置窗体的属性this.setTitle("这是一个窗体,可以随意设置窗体名");// 窗体名的设定this.setSize(420, 250);// 窗体大小的设定,其大小单位为像素点数量,可理解为分辨率为420x250this.setLocationRelativeTo(null);// 设置窗体创建之后在屏幕上居中显示this.setResizable(false);// 设置窗体大小固定,无法实现最大化// <<<<<<<<<<<<<<JPanel容器面板的创建与放置>>>>>>>>>>>>>>>>//JPanel panel = new JPanel();// 创建(实例化)一个JPanel面板对象:panelpanel.setPreferredSize(new Dimension(65, 65));// 同样的,面板自己也有大小,设置面板的大小panel.setBackground(Color.blue);// 设置面板自身的背景颜色:蓝色(可自定义)this.add(panel);// 将创建并定义好的面板放置在窗体上this.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序this.setVisible(true);// 设置窗体对外可见(可显示出来)}}


?
?或是:

this.setLayout(new FlowLayout(FlowLayout.CENTER));// 定义窗体为流式布局,并将JPanel面板放于正中间

//<<<<<<<<<<<<<<<<JTextField文本框的创建与添加>>>>>>>>>>>>>//JTextField txt = new JTextField(27);//创建(实例化)一个文本框对象txttxt.setText("这是一个文本框");//设置文本框显示的字符串txt.setHorizontalAlignment(JTextField.LEFT);//设置显示文本框从左边开始显示字符串txt.setEditable(false);panel.setLayout(new FlowLayout(FlowLayout.CENTER));//面板本身也可以设置布局 panel.add(txt);//将文本框添加到JPanel面板上


?
?

//<<<<<<<<<<<<<<<<JButton按钮的创建与添加>>>>>>>>>>>>>>>>//String buttonName=new String("这是一个按钮");//定义一个字符串常量JButton jbn = new JButton(buttonName);//创建(实例化)一个按钮对象:jbnjbn.setFont(new Font("Arial Narrow",Font.BOLD,18)); panel.add(jbn);//添加此按钮到面板上


?
?

import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;/** * 定义计算器类,该类继承自JFrame * * @author 吴少聪 */public class Calcolator extends JFrame {/** * 主函数部分 */public static void main(String[] args) {// 实例化对象cal,并且用该对象调用init方法Calcolator cal = new Calcolator();cal.init();}/** * 定义初始化窗体界面的方法:init */public void init() {// 设置窗体的属性this.setTitle("仿Windows_XP计算器界面");// 窗体名的设定this.setSize(420, 250);// 窗体大小的设定,其大小单位为像素点数量,可理解为分辨率为420x250this.setLocationRelativeTo(null);// 设置窗体创建之后在屏幕上居中显示this.setResizable(false);// 设置窗体大小固定,无法实现最大化// <<<<<<<<<<<<<<JPanel容器面板的创建与放置>>>>>>>>>>>>>>>>//JPanel panel01 = new JPanel();// 创建(实例化)一个JPanel面板对象:panel01panel01.setPreferredSize(new Dimension(350, 65));// 同样的,面板自己也有大小,设置面板的大小panel01.setBackground(Color.white);// 设置面板自身的背景颜色:白色(可自定义)JPanel panel02 = new JPanel();// 创建(实例化)第二个JPanel面板对象:panel02panel02.setLayout(new GridLayout(4, 6, 5, 5));// 面板对象:panel02采用网格布局法this.add(panel01, BorderLayout.NORTH);// 将创建并定义好的面板放置在窗体上this.add(panel02, BorderLayout.CENTER);// <<<<<<<<<<<<<<<<JTextField文本框的创建与添加>>>>>>>>>>>>>//JTextField txt = new JTextField(27);// 创建(实例化)一个文本框对象txttxt.setText("0.");// 设置文本框显示的字符串txt.setHorizontalAlignment(JTextField.RIGHT);// 设置显示文本框从右边开始显示字符串txt.setEditable(false);panel01.setLayout(new FlowLayout(FlowLayout.RIGHT));// 面板本身也可以设置布局panel01.add(txt);// 将文本框添加到JPanel01面板上// <<<<<<<<<<<<<<<<JButton按钮的创建与添加>>>>>>>>>>>>>>>>//JButton btn1 = new JButton("Backspace");// 实例化一个按钮对象btn1,按钮上显示BackspaceJButton btn2 = new JButton(" CE ");// 同上JButton btn3 = new JButton(" C ");// 同上panel01.add(btn1);// 将按钮添加到面板panel01上panel01.add(btn2);panel01.add(btn3);// 定义一个array数组,指定数组的每一个元素值(即计算器按钮上符号的集群)String array[] = { "MC", "7", "8", "9", "/", "sqrt", "MR", "4", "5","6", "*", "%", "MS", "1", "2", "3", "-", "1/x", "M+", "0","+/-", ".", "+", "=" };// 使用循环array数组,并在循环中创建按钮对象for (int i = 0; i < array.length; i++) {// 创建对象,按钮上显示的文字从数组中获取JButton jbn = new JButton(array[i]);jbn.setFont(new Font("Arial Narrow", Font.BOLD, 12));panel02.add(jbn);// 将创建的按钮放置到面板panel02上}this.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序this.setVisible(true);// 设置窗体对外可见(可显示出来)}}


?
?


?
?


?


?
?

import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseMotionListener;import javax.swing.JButton;import javax.swing.JColorChooser;import javax.swing.JFrame;import javax.swing.JPanel;/** * 简单画图板程序类,该类继承自JFrame类 * * @author 吴少聪 */public class Draw extends JFrame {// 将一些常用量定义成属性private String item = "Line";// 默认画直线private Color color = Color.BLACK;// 默认使用的颜色为:黑色(可自定义)/** * 主函数部分 */public static void main(String[] args) {// 创建对象:draw,并调用初始化界面的方法Draw draw = new Draw();draw.init();}/** * 初始化界面的方法 */public void init() {// 设置窗体的属性this.setTitle("这是一个简单的画图板");this.setSize(600, 500);this.setDefaultCloseOperation(3);this.setResizable(false);this.setLocationRelativeTo(null);// 创建(实例化)画图面板对象JPanel panel = new JPanel();panel.setBackground(Color.white);this.add(panel, BorderLayout.CENTER);// 创建简单的工具面板的对象ToolPanel tp = new ToolPanel();// 添加到窗体上,窗体默认的布局是边框布局BorderLayoutthis.add(tp, BorderLayout.WEST);// 将工具面板置于布局的west方位(之前已经介绍过BorderLayout的布局方式)this.setVisible(true);// 窗体可视化// 面板上获取获取Graphics对象,用于相应图形的绘制// 技巧:要获取Graphics对象,必须在窗体可见之后,才可以获取到,否则获取的是空值nullGraphics gh = panel.getGraphics();// 创建画图监听事件处理类对象:dlDrawListener dl = new DrawListener(gh, this);// 将创建好的鼠标监听器添加到面板上panel.addMouseListener(dl);// 将创建好的接收组件上的鼠标移动事件的监听器添加到面板上panel.addMouseMotionListener((MouseMotionListener) dl);}/** * 定义一个内部类,此类用于创建一个简单的工具面板,继承自JPanel类 */class ToolPanel extends JPanel {/** * 构造函数 */public ToolPanel() {JPanel panel = new JPanel();// 实例化一个JPanel对象panelpanel.setPreferredSize(new Dimension(100, 200));// 设置相应的大小// panel.setBackground(Color.BLUE);/** * 定义一个匿名内部类,此类用于创建一个动作监听器 */// 实例化一个动作监听器对象:alActionListener al = new ActionListener() {// 事件处理方法public void actionPerformed(ActionEvent e) {// 判断点击的是否是color按钮,如果是,则弹出一个颜色选择界面,如果不是直接获取按钮上的文本值if (e.getActionCommand().equals("Color")) {// 弹出界面,用户选择颜色,如果没有选择,返回null.color = JColorChooser.showDialog(null, "选择颜色",Color.BLACK);System.out.println(color);} else {// 获取选择的图形item = e.getActionCommand();}}};// 创建按钮JButton btnLine = new JButton("Line");JButton btnRect = new JButton("Rect");JButton btnOval = new JButton("Oval");JButton btnCurve = new JButton("Curve");JButton btnColor = new JButton("Color");// 添加按钮panel.add(btnLine);panel.add(btnRect);panel.add(btnOval);panel.add(btnColor);panel.add(btnCurve);// 往按钮上添加监听器btnLine.addActionListener(al);btnRect.addActionListener(al);btnOval.addActionListener(al);btnColor.addActionListener(al);btnCurve.addActionListener(al);// 将面板添加到窗体上this.add(panel);}}// 根据动作得到要画图形的指令public String getItem() {return item;}// 根据颜色选择界面的选择情况确定接下来绘制的颜色public Color getColor() {return color;}}

import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.event.MouseInputListener;public class DrawListener implements MouseListener, MouseInputListener {// 定义存储坐标值的变量private int x1, y1, x2, y2;// 定义一个画图形的对象private Graphics g;// 获取图形和颜色的对象private Draw draw;/** * 定义带参数的构造函数 */public DrawListener(Graphics g, Draw draw) {this.g = g;this.draw = draw;}/** * 鼠标在事件源上按下时执行的方法 */public void mousePressed(MouseEvent e) {// 获取第一个点的坐标值x1 = e.getX();y1 = e.getY();}/** * 鼠标在事件源上释放时执行的方法 */public void mouseReleased(MouseEvent e) {// 获取第二个点的坐标值x2 = e.getX();y2 = e.getY();// 设置图形的颜色g.setColor(draw.getColor());// 判断选择的图形if (draw.getItem().equals("Line")) {// 画直线g.drawLine(x1, y1, x2, y2);} else if (draw.getItem().equals("Rect")) {// 画矩形if (x2 > x1 && y2 > x1) {g.drawRect(x1, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));} else if (x2 < x1 && y2 < y1) {g.drawRect(x2, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));} else if (x2 > x1 && y2 < y1) {g.drawRect(x1, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));} else if (x2 < x1 && y2 > y1) {g.drawRect(x2, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));}} else if (draw.getItem().equals("Oval")) {// 画圆if (x2 > x1 && y2 > x1) {g.drawOval(x1, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));} else if (x2 < x1 && y2 < y1) {g.drawOval(x2, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));} else if (x2 > x1 && y2 < y1) {g.drawOval(x1, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));} else if (x2 < x1 && y2 > y1) {g.drawOval(x2, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));}} else if (draw.getItem().equals("Curve")) {// 画曲线g.drawOval(x1, y1, Math.abs(x1 - x2), Math.abs(y1 - y2));}}/** * 鼠标在事件源上单击时执行的方法 */public void mouseClicked(MouseEvent e) {}/** * 鼠标进入事件源时执行的方法 */public void mouseEntered(MouseEvent e) {}/** * 鼠标退出事件源时执行的方法 */public void mouseExited(MouseEvent e) {}@Override// 重写父类的方法public void mouseDragged(MouseEvent e) {// 获取第二个点的坐标值x2 = e.getX();y2 = e.getY();// 设置图形的颜色g.setColor(draw.getColor());// 判断选择的图形if (draw.getItem().equals("Curve")) {// 画曲线g.drawLine(x1, y1, x2, y2);x1 = x2;y1 = y2;}}public void mouseMoved(MouseEvent e) {}}


?

<!--EndFragment--><!--EndFragment--><!--EndFragment-->


?
?最小化:


?


?


?
?


?


?
?
?


?

<!--EndFragment-->
?

<!--EndFragment--><!--EndFragment--> 1 楼 ssy341 2012-03-02   为什么看不到图片呢? 2 楼 luliangy 2012-03-07   童鞋你写博客可真够认真的啊

热点排行