您的位置:首页 > 产品设计 > UI/UE

黑马程序员Java培训、Android培训_第8讲GUI/图形用户界面-2

2011-07-01 13:34 549 查看
8.7事件处理的多重运用 如何知道一个GUI组建到底能够触发哪几种事件?我们没必要死记硬背,在一般的集成开发环境下,如Jbuilder、JCreator等,当我们输入某个对象的成员分隔符,在下拉的成员列表提示框中,就能看到这个组件支持是事件; 一个组件上的一个动作可以产生多种不同类型的事件 一个事件监听器可以注册到多个事件源上 在一个事件源上也可以注册对同一类事件进行处理的多个事件监听器对象;8.8修改组件的默认事件处理方式只有在一个组件上注册了某种事件的监听器对象后,组件才会产生相应的事件对象。默认的processEvent方法(总入口)调用相应的processXxxEvent方法。调用enableEvents((long eventsToEnable))方法,可以在即使没有注册事件监听器的情况下,组件也能够对某些类型的事件进行响应和产生相应的事件对象。编程实例:在一个窗口上显示一个按钮,一旦鼠标移动到这个按钮上时,按钮就移动到了其他位置,这样,鼠标就永远无法点击到这个按钮。import java.awt.*;
import java.awt.event.*;
package myprojects.TestMyButton;
import java.awt.*;
import java.awt.event.*;
class MyButton extends Button
{
private MyButton friend;
public void setFriend(MyButton friend)
{
this.friend = friend;
}
public MyButton(String name)
{
super(name);
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
protected void processMouseMotionEvent(MouseEvent e)
{
setVisible(false);
friend.setVisible(true);
}
}
public class TestMyButton
{
public static void main(String [] args)
{
MyButton btn1 = new MyButton("你来抓我啊!");
MyButton btn2 = new MyButton("你来抓我啊!");
btn1.setFriend(btn2);
btn2.setFriend(btn1);
Frame f = new Frame("TestMyButton");
f.add(btn1,"North");//将btn增加到f的北部
f.add(btn2,"South");//将btn增加到f的南部
f.setSize(300,300);
f.setVisible(true);
btn2.setVisible(false);
}
}
8.9GUI组件上的图形操作8.9.1Graphics类与图形绘制 Component.getGraphics方法与Graphics类。 Graphics.drawLine(int x1,int y1,int x2,int y2)方法。 Graphics.drawString(String str,int x,int y)方法。 Graphics.drawString方法的坐标参数。编程举例:以鼠标在窗口中按下时的位置作为起始点,鼠标释放时的位置作为终止点,在鼠标释放时将直线画出,并在每条直线的起始和终止点位置上打印出他们的坐标值。import java.awt.*;
import java.awt.event.*;
class DrawLine extends Frame{
public void DrawLine(){
addWindowsListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
this.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
int endX;
int endY;
public void mousePressed(MouseEvent e)
{
orgX = e.getX();
orgY = e.getY();
}
public void mouseReleased(MouseEvent e)
{
endX=e.getX();
endY=e.getY();
Graphics g = getGraphics();
g.setColor(Color.red);//设置绘图颜色为红色
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));//设置文本的字体
g.drawString(orgX +”,” +orgY,orgX,orgY);//打印鼠标按下时的坐标文本
g.drawString(e.getX()+”,”+e.getY(),e.getX(),e.getY());
//打印鼠标释放时的坐标文本
g.drawLine(orgX,orgY,e.getX(),e.getY());
}
}
);
}
public static void main(String [] args)
{
System.out.println(“Starting DrawLine”);
DrawLine mainframe = new DrawLine();
mainframe.setSize(400,400);
mainframe.setTitle(“DrawLine”);
mainframe.setVisible(true);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: