- 浏览: 6251 次
- 性别:
- 来自: 湖北
最近访客 更多访客>>
最新评论
-
时间被海绵吃了:
廖名俊321 写道好难理解啊 哪里难理解
Graphics2D、获取当前像素点颜色 -
廖名俊321:
好难理解啊
Graphics2D、获取当前像素点颜色
文章列表
因特殊原因,现已将此iteye的博客转移到csdn中。
地址:http://blog.csdn.net/sunhengzhe
首先是访问控制的关键字,分public、protected、default、private四种,权限如下:
(权限) public protected default private同一类中 ok ok ok ok同一包中 ok ok ok 子类中 ok ok 不同包中 ok
public的权限是最大的,private权限最小
下面是一些常用的关键 ...
之前的画图板重绘功能是用每个形状的信息存储的(具体见前一篇博客),但是我们发现这样做既让代码冗长,又会出现很多错误,所以我们采用新的方法来重绘,这里就利用了Java里面向对象的思想。
首先是将自定义队列List进行改进,让这个队列不再存储很乱的信息像既有坐标又有颜色什么的,而是直接将一个形状封装成一个对象存储进队列,这样画一个形状存储一个,既不会出现前一篇博客中的类转换异常,又使代码简洁。
以直线举例:
if("line".equals(shape_command))
{
if(x1!=x2&&y1!=y2)
{
shape = n ...
画图板的功能还在日趋完善,现在正在努力实现利用自定义队列存储绘图信息然后重绘的功能,在实现这个功能的过程中,遇到的最多的异常就是java.lang.ClassCastException了,
造成这个异常的原因就是重绘时读取存储的信息时出现了错误,导致一些类赋值时不匹配。
就拿直线来说,我们要保存直线的信息,需要在每次画完直线时存储这条直线的信息,即在鼠标释放(MouseReleased)里面添加直线的首尾两个点的坐标、用于判断图形类型的标识符、图像线条的粗细以及直线的颜色。代码如下:
( 其中x1,y1为直线的第一个点即鼠标按下的点的坐标,list为用于存放信息的自定义队列。)
// ...
当需要保存一些无法判断到底有多少数量的数据时,普通数组已经无法满足这种需求,这是我们可以自定义一个类来实现这个功能。
这种方法本质上是使用两个数组,一个用来被调用,另一个是每次都会新建的数组,这样每次用户想添加元素或删除元素时,可以新建一个更大的或更小的数组,然后满足需求后再给被调用的数组。比如添加元素的方法:
public class MyList {
private int[] srcArray = new int[0]; //用户使用的数组
//在数组的最后添加元素的方法
public void add(int ...
1、改变画笔的大小是Graphics所不具有的,应该创建一个Graphics2D对象,他是Graphics的子类,
然后调用其setStroke()方法,而setStroke()需要一个Stroke做参数,但是Stroke类是一个接口,所以我们转用一个BasicStroke来实现他。
所以方法如下,5为画笔的大小。
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(5));
2、实现颜色选取器的时候需要获取用户单击点处的颜色,获取指定点颜色的方法是Robot类里的getPixelColor(int a,int b ...
仿xp系统的画图板还在继续,这期间也碰到了一些问题并及时解决了,现整理如下:
(一)调整窗体中组件大小的方法和添加图标的方法
1.在画图板上我们需要添加许多大大小小的按钮,并往里面添加图片,这里就需要用到按钮调整大小的方法,然而我们发现当调用button.setSize()的时候并没有改变按钮的大小,这是因为setSize只能用于顶级容器,当一些组件需要改变的时候应该调用的是其setPreferred()方法,使用方法如下:
button.setPreferredSize(new Dimension(25,25));
2.当按钮调节完毕后就需要往里面添加图片了,这里需要两个步骤:一 ...
在华信已经上了三节课了,感觉收获还挺多的,虽然我之前也看过一些Java的教学视频,但是毕竟只是视频里讲,我有疑问也不能找里面的老师解答,所以很多东西都是死记硬背型的。
而在这里的几节课很多疑问都得到了解答
比如以前我使用事件监听的时候都是在类后面使用implements 实现接口,不知道还可以使用匿名内部类。
*********以前只会用*******
public class Test implements ActionListener {
//方法的重写
public void actionPerformed(ActionEvent e)
{
...
这是一个简单的登录窗口,实现点击按钮响应事件,并弹出另一个窗口
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class QQ20 ...