1.画笔:
public class TestPaint {
public static void main(String[] args) {
Mypaint mypaint = new Mypaint();
mypaint.loadFrame();
}
}
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.setColor(Color.GREEN);
g.fillRect(150,200,200,200);
//养成习惯,画笔用完,将他还原到最初的颜色
}
}
2.鼠标监听:
目的:想要实现鼠标画画
//鼠标监听事件
public class TestMouseListener {
public static void main(String[] args) {
new MyFrame("画图");
}
}
class MyFrame extends Frame{
ArrayList points;
//画画需要画笔,需要监听鼠标当前位置,需要集合来存储这个点
public MyFrame(String tittle){
super(tittle);
setBounds(200,200,400,300);
//存鼠标点击的点
points = new ArrayList<>();
setVisible(true);
//鼠标监听器
this.addMouseListener(new MyMouseListening());
}
@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 MyMouseListening extends MouseAdapter{
//鼠标 按下、弹起、按住不放
@Override
public void mousePressed(MouseEvent e) {
MyFrame frame = (MyFrame)e.getSource();
//这个我们点击的时候,就会在界面上产生一个点!
//这个点就是鼠标的点;
frame.addPaint(new Point(e.getX(),e.getY()));
//每次点击鼠标的时候都需要重新画一遍
frame.repaint();//刷新
}
}
}
有些难,想了好久,大概就是 主要有画布、画笔、鼠标监听器。通过监听获取坐标,画笔通过迭代里面的坐标进行画图,其中鼠标监听器需要frame.repaint();功能进行重写,否则点一下就结束。
其中在画布中需要开启监听器,Myframe.AddMouseListener(new MyMouseListenting()),而在监听器中,也需要确定MouseEvent 在getSource之后开启的是在画布内获取坐标。
还有在类的开头需要一个Arraylist来放置所有的点。
3.窗口监听:
public class TestWindow {
public static void main(String[] args) {
new WindowFrame();
}
}
class WindowFrame extends Frame{
public WindowFrame(){
setVisible(true);
setBackground(Color.GREEN);
setBounds(100,100,200,200);
//addWindowListener(new MyWindowListener());
this.addWindowListener(
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("你点击了关闭!");
}
@Override
public void windowActivated(WindowEvent e) {
System.out.println("windowActivated");
}//激活的时候
}
);//使用匿名内部类,建议这么写
}
// class MyWindowListener extends WindowAdapter{
// @Override
// public void windowClosing(WindowEvent e) {
// setVisible(false);//隐藏窗口,通过按钮,隐藏当前窗口
// System.exit(0);//正常推出
// }
}
这个窗口监听要学会的就是使用匿名内部类。
4.键盘监听:
public class TestKeyListener {
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 == e.VK_UP){
System.out.println("你按了下键");
}
}
});
}
}
挺简单的,没必要去记每个按键的code