画笔
举例:
class MyPaint extends Frame{
public void loadFrame(){
setBounds(200,200,600,500);
setVisible(true);
}
//画笔
@Override
public void paint(Graphics g) {
//画笔有有颜色,可以画画
g.setColor(Color.BLUE);
g.drawOval(100,100,100,100);//空心圆
g.fillOval(200,100,100,100);//实心圆
g.setColor(Color.GREEN);
g.fillRect(200,200,200,200);//矩形
//画笔用完给他还原成最初的颜色即黑色
}
}
运行结果:
鼠标监听
思路:
举例:
public class MouseListener {
public static void main(String[] args) {
new MyFrame("画图");
}
}
class MyFrame extends Frame{
//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
ArrayList points;
public MyFrame(String title){
super(title);//调用这个方法的时候给他传一个标题
setBounds(200,200,500,300);
//存储鼠标点击的这些点
points= new ArrayList<>() ;
setVisible(true);
//监听鼠标,这个窗口
this.addMouseListener(new MouseListener());
}
@Override
public void paint(Graphics g) {
//画画,监听鼠标的事件,动态
Iterator iterator = points.iterator();
while (iterator.hasNext()){
Point point=(Point) iterator.next();
g.setColor(Color.BLUE);
g.fillOval(point.x,point.y,10,10);
}
}
//添加一个点到界面上
public void addPaint(Point point){
points.add(point);
}
//适配器模式,内部类
private class MouseListener extends MouseAdapter{
//鼠标,按下,弹起,按下不放
@Override
public void mousePressed(MouseEvent e) {
MyFrame Frame = (MyFrame) e.getSource();//拿到这个窗口
//点击鼠标的时候,就会在界面上产生一个点
//这个点就是鼠标的点
addPaint(new Point(e.getX(),e.getY()));
//每次点击鼠标都要重画一次
repaint();//刷新
}
}
}
运送结果为:
窗口监听
一般使用激活和关闭窗口
举例:
public class window {
public static void main(String[] args) {
new WindowFrame();
}
}
class WindowFrame extends Frame{
//窗体设置
public WindowFrame(){
setBackground(Color.BLACK);
setBounds(100,100,200,200);
setVisible(true);
//addWindowListener(new WindowListener());//添加监听事件
this.addWindowListener(
new WindowAdapter() {
//匿名内部类,一般建议使用这个
//关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing");
System.exit(0);
}
//激活窗口
@Override
public void windowActivated(WindowEvent e) {
WindowFrame windowFrame=(WindowFrame) e.getSource();
windowFrame.setTitle("被激活了");
System.out.println("windowActivated");
}
}
);
}
}
运行结果
键盘监听
根据按下的键盘不同,产生不同的结果
举例:
public class KeyListener {
public static void main(String[] args) {
new KeyFrame();
}
}
class KeyFrame extends Frame{
public KeyFrame(){
setBounds(1,2,300,400);
setVisible(true);
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
//获得键盘上的按键
int keyCode = e.getKeyCode();
if (keyCode==KeyEvent.VK_UP){
System.out.println("up");
}
}
});
}