前面我们已经以生(nan)动(dong)的语言讲述了使用Graphics类的方法
温习一遍:
Graphics类是抽象类,要在外部用组件的getGraphics()函数定义后传回使用;
而现在了解到事件分为三类:鼠标事件,键盘事件,动作事件
其中鼠标接口强调于鼠标的位置,动作接口强调于鼠标的点击等动作;
我们本次要做的事情是按按钮后切换功能(画直线,画矩形啥的)
那这个功能是什么接口的功能呢?
没错!!!就是我们可爱的动作事件(还可以开启自闭模式的那个事件)
知道了是什么接口以后,我们首先要做的就是把这个接口给接上
当然的是我们之前画图用过的鼠标事件
implements语句:
public class mouse implements MouseListener,ActionListener{
}
同时f3后找到ActionListener接口的抽象方法,在mouse类中重新定义
public void actionPerformed(ActionEvent e){
}
下面就是在定义的按钮上安上这个神奇的监听器
由于我们有关图形的切换按钮的功能一致,都是点一下之后切换画图功能,我们选择用循环结构来简化我们的代码过程,同时用字符串来区分每个按钮
代码如下
//设置按钮的名字
String[] name = {"直线","矩形","椭圆"};
for(int i=0;i < name.length;i++){
//创建按钮对象
JButton button = new JButton(name[i]);
//设置尺寸
Dimension d = new Dimension(60, 60);
button.setPreferredSize(d);
//设置监听器
button.addActionListener(m);
//将按钮加到窗体上
line.add(button);
}
有关颜色的切换按钮我们暂时搁置,因为我还不会嘻嘻嘻嘻
然后我们在ActionListener中的actionPerformed方法中实现对功能的切换
代码如下
public void actionPerformed(ActionEvent e){
//获取按钮文本,其中ty已在类中明确定义;
ty = e.getActionCommand();
public void mousePressed(MouseEvent e) {
x1 = e.getX();
y1 = e.getY();
}
public void mouseReleased(MouseEvent e) {
x2 = e.getX();
y2 = e.getY();
if(ty == "直线"){
g.drawLine(x1, y1, x2, y2);
}
else if(ty == "矩形"){
//选取最小点作为绘画的起点,实现对左下,左上,右下,右上的同步处理
int x,y,width,height;
if(x1 < x2){
x = x1;
width = x2 - x1;
}
else{
x = x2;
width = x1 - x2;
}
if(y1 < y2){
y = y1;
height =y2 - y1;
}
else{
y = y2;
height =y1 - y2;
}
g.drawRect(x, y, width, height);
}
else if(ty == "椭圆"){
int x,y,width,height;
if(x1 < x2){
x = x1;
width = x2 - x1;
}
else{
x = x2;
width = x1 - x2;
}
if(y1 < y2){
y = y1;
height =y2 - y1;
}
else{
y = y2;
height =y1 - y2;
}
g.drawOval(x, y, width, height);
}
drawDream(g);
}
这样我们就很容易的实现了按钮控制的相关功能
(这个是带颜色板的,但是很可惜的是我还不会选择颜色后更改,所以暂时先放放
我会补上的!!!!!)
本期over!