import java.util.*;
public class MyMouseAdapterGeneric{
public static void main(String args[]) {
new MyFrame99("drawing...");
}
}class MyFrame99 extends Frame {//注意这里用泛型
ArrayList<Point> points = null;
MyFrame99(String s) {
super(s);
points = new ArrayList<Point>();
setLayout(null);
setBounds(300,300,400,300);
this.setBackground(new Color(204,204,255));
setVisible(true);
this.addMouseListener(new Monitor());//设置鼠标监听
this.addWindowListener(new A());
}
public void paint(Graphics g) {//重写画笔
Iterator<Point> i = points.iterator();//使用泛型后,把所有点都遍历下
while(i.hasNext()){
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x,p.y,1,1);//遍历所有点并用蓝色的圆画出来
}
}
public void addPoint(Point p){
points.add(p);//定义 加入方法
}
}
class A extends WindowAdapter{
public void WindowClosing(WindowEvent e){
System.exit(0);
}
}
//当鼠标点一下,就把图形里面画的圆画出来
class Monitor extends MouseAdapter {//利用MouseAdapter把所有的方法都实现了一遍,导致你不必每个都实现
public void mousePressed(MouseEvent e) {//鼠标事件//这个代表鼠标按下去
MyFrame99 f = (MyFrame99)e.getSource();
f.addPoint(new Point(e.getX(),e.getY()));//加入点
f.repaint();//重绘组件//Component 继承的方法//相当于刷新
}
}为什么我点击关闭按钮关闭不了窗口呢?
我用匿名内部类也是一样。
public class MyMouseAdapterGeneric{
public static void main(String args[]) {
new MyFrame99("drawing...");
}
}class MyFrame99 extends Frame {//注意这里用泛型
ArrayList<Point> points = null;
MyFrame99(String s) {
super(s);
points = new ArrayList<Point>();
setLayout(null);
setBounds(300,300,400,300);
this.setBackground(new Color(204,204,255));
setVisible(true);
this.addMouseListener(new Monitor());//设置鼠标监听
this.addWindowListener(new A());
}
public void paint(Graphics g) {//重写画笔
Iterator<Point> i = points.iterator();//使用泛型后,把所有点都遍历下
while(i.hasNext()){
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x,p.y,1,1);//遍历所有点并用蓝色的圆画出来
}
}
public void addPoint(Point p){
points.add(p);//定义 加入方法
}
}
class A extends WindowAdapter{
public void WindowClosing(WindowEvent e){
System.exit(0);
}
}
//当鼠标点一下,就把图形里面画的圆画出来
class Monitor extends MouseAdapter {//利用MouseAdapter把所有的方法都实现了一遍,导致你不必每个都实现
public void mousePressed(MouseEvent e) {//鼠标事件//这个代表鼠标按下去
MyFrame99 f = (MyFrame99)e.getSource();
f.addPoint(new Point(e.getX(),e.getY()));//加入点
f.repaint();//重绘组件//Component 继承的方法//相当于刷新
}
}为什么我点击关闭按钮关闭不了窗口呢?
我用匿名内部类也是一样。
解决方案 »
- 详细讲解Java中的封装 继承和多态
- 有什么方法把STRING转成XML的ELEMENT对象,JDOM
- JSP网站怎么发布到网上
- 如何将unicode编码转换成普通的utf-8或者ISO编码
- 请问,我如何动态按我String中字符的名称来定义一个ArrayList.如何通过这个名称字符来查找到这个ArrayList类?
- 关于 InputStream 和 FileInputStream 的available()
- JTable构造器用法,高手指点
- 《——谁知道有好用的邮件系统,100分相送——》
- [news]IBM计划收购Rational
- 在下刚上手,请高手帮忙!
- java中如何入读esc
- JFrame标题栏颜色可不可以改?
---------------------------------------------
class A extends WindowAdapter{
public void WindowClosing(WindowEvent e){
setVisible(false); //在这里加这一句
System.exit(0);
}
---------------------------------------------
import java.awt.event.*;
import java.awt.event.*;public class TestPaint {
public static void main(String[] args) {
PaintFrame p=new PaintFrame();
p.launchFrame();
}
}class PaintFrame extends Frame {
public void launchFrame() {
setBounds(200,200,640,480);//设置窗口大小
setVisible(true);//显示
addWindowListener(new WindowAdapter(){
public void WindowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g) {//Container 继承的方法
//重写方法,并且自动调用的,什么时候重画调用呢?每次第一次显示的时候,如改变窗口大小,切换等
Color c = g.getColor();//拿到当前画笔颜色
g.setColor(Color.red);//设置红色
g.fillOval(50, 50, 30, 30);//画椭圆.注意是 矩形内切
g.setColor(Color.green);//设置椭圆颜色 绿
g.fillRect(80,80,40,40);//设置矩形
g.setColor(Color.black);//设置蓝色
g.drawOval(12,54,43,6);
g.drawLine(331, 144, 88, 99);//由于是抽象的方法,但还能调用,说明有多态的存在
g.drawArc(123,65,212,1554,43,216);
g.setColor(c);//恢复现场
}
}
这咯也是,为什么啊 ?
--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.util.*;public class DrawPoint {
public static void main(String[] args) {
new PointFrame("PointFrame");
}
}class PointFrame extends Frame {
ArrayList<Point> points = null;
PointFrame(String title) {
super(title);
points = new ArrayList();
setLayout(null);
setBounds(300, 300, 500, 300);
addMouseListener(new MouseMonitor());
AddWindowListener(new WindowMonitor());
setVisible(true);
} public void paint(Graphics g) {
Iterator<Point> i = points.iterator();
Color c = g.getColor();
while(i.hasNext()) {
Point p = i.next();
g.setColor(Color.orange);
g.fillOval((int)p.x, (int)p.y, 10, 10);
}
g.setColor(c);
}
public void addPoint(Point p) {
points.add(p);
}
class WindowMonitor extends WindowAdapter {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
}
}class MouseMonitor extends MouseAdapter {
public void mousePressed(MouseEvent e) {
PointFrame pf = (PointFrame)e.getSource();
Point p = new Point(e.getX(), e.getY());
pf.addPoint(p);
pf.repaint();
}
}
-----------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdapterGeneric{
public static void main(String args[]) {
new MyFrame99("drawing...");
}
} class MyFrame99 extends Frame {//注意这里用泛型
ArrayList <Point> points = null;
MyFrame99(String s) {
super(s);
points = new ArrayList <Point>();
setLayout(null);
setBounds(300,300,400,300);
this.setBackground(new Color(204,204,255));
setVisible(true);
this.addMouseListener(new Monitor());//设置鼠标监听
this.addWindowListener(new A());
class A extends WindowAdapter{
public void WindowClosing(WindowEvent e){
setVisible(false); //在这里加这一句
System.exit(0);
}
} public void paint(Graphics g) {//重写画笔
Iterator <Point> i = points.iterator();//使用泛型后,把所有点都遍历下
while(i.hasNext()){
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x,p.y,1,1);//遍历所有点并用蓝色的圆画出来
}
}
public void addPoint(Point p){
points.add(p);//定义 加入方法
}
}
//当鼠标点一下,就把图形里面画的圆画出来
class Monitor extends MouseAdapter {//利用MouseAdapter把所有的方法都实现了一遍,导致你不必每个都实现
public void mousePressed(MouseEvent e) {//鼠标事件//这个代表鼠标按下去
MyFrame99 f = (MyFrame99)e.getSource();
f.addPoint(new Point(e.getX(),e.getY()));//加入点
f.repaint();//重绘组件//Component 继承的方法//相当于刷新
}
}