[转贴]马士兵Java学习笔记

上一篇 / 下一篇  2011-05-08 17:30:44 / 个人分类:JAVA

1110

内部类

 

利用内部类在1109的两个方法的基础上改进加法运算的实现

 

import java.awt.*;

import java.awt.event.*;

public class TFMath {

      public static void main(String[] args) {

             new TFFrame().launchFrame();

      }

}

 

class TFFrame. extends Frame. {

      TextField num1, num2, num3;

      public void launchFrame() {

             num1 = new TextField(10);

             num2 = new TextField(10);

             num3 = new TextField(15);

             Label lblPlus = new Label("+");

             Button btnEqual = new Button("=");

             btnEqual.addActionListener(new MyMonitor());

             setLayout(new FlowLayout());

             add(num1);

             add(lblPlus);

             add(num2);

             add(btnEqual);

             add(num3);

             pack();

             setVisible(true);

      }

      

      class MyMonitor implements ActionListener { //MyMonitor类声明在TFFrame类的内部,与成员变量的位置并列等同即声明在包装类内且方法外(注意不可以设置在TFFrame类的成员方法中)。这样就可以访问其包装类的成员变量和成员方法(这是内部类经常使用的方式)。这样做也避免了其他的类来访问监听器类,即保护了监听器类。也可声明为private class

             public void actionPerformed(ActionEvent e) {

                    int n1 = Integer.parseInt(num1.getText());

                    int n2 = Integer.parseInt(num2.getText());

                    num3.setText("" + (n1+n2));

             }

      }

}

 

 

 

1111

Paint方法

Graphics类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。

每个Component都有一个paintGraphics g)用于实现绘图目的,每次重画该Component时都自动调用paint方法。什么是重画呢?就是需要再次显示这个Component时(比如一个Frame)比如在最小化,然后最大化或者复原时。因为在一个Component重新显示时,这些图像需要重新显示

 

例子:

import java.awt.*;

public class TestPaint {

      public static void main(String[] args) {

             new PaintFrame().launchFrame();

      }

}

 

class PaintFrame. extends Frame. {

      public void launchFrame() {

             setBounds(200,200,640,480);

             setVisible(true);

      }

      

      public void paint(Graphics g) {//见下。具体的Component具体重写此方法

             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(c);//将画笔颜色还原即恢复现场

      }

}

 

分析将Graphics想象为一个画笔类,那么g是一支画笔。
一定要注意paint()方法在哪个类里面,则画笔在哪个类中被使用。且这个paint方法是被自动调用的
paint()方法来自于Frame的父类Container
Container类方法public void paint(Graphics g)绘制容器。该方法将paint转发给任意一个此容器子组件的轻量级组件

TAG:

 

评分:0

我来说两句

Open Toolbar