Java eclipse 写 Hellow World 和类继承与方法实练(二)

序言

Java eclipse 写 Hellow World 和类继承与方法实练(一)

完成了最基本的Java/Eclipse操练,但是,新年之际,无论如何也要在《Java eclipse 写 Hellow World 和类继承与方法实练(一)》的基础上做出个界面来,用JAVA JDK自带的AWT个窗口。于是,将《Java eclipse 写 Hellow World 和类继承与方法实练(一)》做一些修改如下:

修改1

修改module-info.java, 加入一行 requires java.desktop; 改完后的样子如下:

module moduleHelloWorld {
    exports net.csdn.mongnewer;
    requires java.desktop;
}

然后,在 public class HelloWorld 前面加入引用

import java.awt.*;

import java.awt.Color;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

修改2

在HelloWorld类中加入子类

    class FirstFrame extends Frame {
        /**
         *
         */
        private static final long serialVersionUID = 1L;

        private Frame f1;
        public FirstFrame(String string) {
            super(string);
        }
        
        public void MyShow1() {
        f1 = new Frame("This is the first AWT frame");
        f1.setSize(300,200);
        f1.setBackground(Color.BLUE);
        f1.setVisible(true);
        
        f1.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent evt){
                f1.setVisible(false);
                f1.dispose();
                System.exit(0);
            }
        });
        }
    }

修改3

在main主方法中加入一句

    FirstFrame ff = new FirstFrame("This is the first AWT frame");
    ff.MyShow1();

至此,保存运行程序,一个空窗体就出来了,点击关闭钮可关闭它。

修改4

空窗体好像太苍白了,再加上几个Button钮吧。于是,在HelloWorld类中再加入一个子类。

    class MyFlowLayout extends Frame {
        /**
         *
         */
        private static final long serialVersionUID = 1L;
        private Frame f2;
        private Button b1,b2,b3;
        public MyFlowLayout() {
            b1 = new Button("Button1");
            b2 = new Button("Button2");
            b3 = new Button("Button3");
        }
        public void MyShow2() {
            f2 = new Frame("FlowLayout sampe window");
            f2.setSize(300,240);
            f2.setLayout(new FlowLayout(FlowLayout.CENTER, 30,20));
            f2.add(b1);
            f2.add(b2);
            f2.add(b3);
            
            f2.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent evt){
                    f2.setVisible(false);
                    f2.dispose();
                    System.exit(0);
                }
            });
            f2.setVisible(true);
    }

在main主方法中再加入一句

        MyFlowLayout mfl = new MyFlowLayout();
        mfl.MyShow2();


保存后,运行,出了两个窗体,位置重叠在了一起,可以把它们拖开。点击关闭,两个窗体都关了、程序也退出了运行,因为,两个关闭事件中都有一句System.Exit(0)

修改后的程序代码是这样的

/**
 * 
 */

package net.csdn.mongnewer;

import net.csdn.mongnewer.ClassA;
import net.csdn.mongnewer.ClassB;
import net.csdn.mongnewer.ClassC;

import java.awt.*;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author Administrator
 *
 */

public class HelloWorld {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello World!\n");					//Output- Hello World!
		
		ClassA myA = new ClassA(); 
		ClassB myB = new ClassB();
		ClassC myC = new ClassC();
		System.out.println(myA.MystringA+"\n");					//Output- VarMystringA in ClassA
		
		System.out.println(myB.MystringA);						//Output- VarMystringA in ClassB
		myB.MethodInClassB();									//Output- ClassB void Method in ClassB
		System.out.println(myB.MystringB+"\n");					//Output- VarMystringB in ClassB

		System.out.println(myC.MystringA);						//Output- VarMystringA in ClassC
		System.out.println(myC.MystringB);						//Output- VarMystringB in ClassC
		System.out.println(myC.MystringC+"\n");					//Output- VarMystringC in ClassC
		
		ClassA[] myClassArray = new ClassA[3];
		myClassArray[0]= new ClassA();
		myClassArray[1]= new ClassB();
		myClassArray[2]= new ClassC();
		System.out.println(myClassArray[0].MystringA);			//Output- VarMystringA in ClassA
		System.out.println(myClassArray[1].MystringA);			//Output- VarMystringA in ClassA
		System.out.println(myClassArray[2].MystringA+"\n");		//Output- VarMystringA in ClassA
		
		myClassArray[0].MethodInClassA();						//Output- ClassA void Method in ClassA
		myClassArray[1].MethodInClassA();						//Output- ClassA void Method in ClassB x 2
		myClassArray[2].MethodInClassA();						//Output- ClassA void Method in ClassC
		System.out.println("\n");
		
		myClassArray[0].MethodInClassB();						//Output- ClassB void Method in ClassA
		myClassArray[1].MethodInClassB();						//Output- ClassB void Method in ClassB x 2
		myClassArray[2].MethodInClassB();						//Output- ClassB void Method in ClassC
		System.out.println("\n");
		
		myClassArray[0].MethodInClassC();						//Output- ClassC void Method in ClassA
		myClassArray[1].MethodInClassC();						//Output- ClassC void Method in ClassB x 2
		myClassArray[2].MethodInClassC();						//Output- ClassC void Method in ClassC
		System.out.println("\n");
		
		((ClassA)myClassArray[0]).MethodInClassA();				//MethodInClassA void Method in ClassA
		((ClassB)myClassArray[1]).MethodInClassA();				//MethodInClassA void Method in ClassB x 2
		((ClassC)myClassArray[2]).MethodInClassA();				//MethodInClassA void Method in ClassC
		
		FirstFrame ff = new FirstFrame("This is the first AWT frame");
		ff.MyShow1();
		
		MyFlowLayout mfl = new MyFlowLayout();
		mfl.MyShow2();
	
		}
	}

	class FirstFrame extends Frame {
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;

		private Frame f1;
		public FirstFrame(String string) {
			super(string);
		}
		
		public void MyShow1() {
		f1 = new Frame("This is the first AWT frame");
		f1.setSize(300,200);
		f1.setBackground(Color.BLUE);
		f1.setVisible(true);
		
		f1.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent evt){
				f1.setVisible(false);
				f1.dispose();
				System.exit(0);
			}
		});
		}
	}
	
	class MyFlowLayout extends Frame {
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		private Frame f2;
		private Button b1,b2,b3;
		public MyFlowLayout() {
			b1 = new Button("Button1");
			b2 = new Button("Button2");
			b3 = new Button("Button3");
		}
		public void MyShow2() {
			f2 = new Frame("FlowLayout sampe window");
			f2.setSize(300,240);
			f2.setLayout(new FlowLayout(FlowLayout.CENTER, 30,20));
			f2.add(b1);
			f2.add(b2);
			f2.add(b3);
			
			f2.addWindowListener(new WindowAdapter(){
				public void windowClosing(WindowEvent evt){
					f2.setVisible(false);
					f2.dispose();
					System.exit(0);
				}
			});
			f2.setVisible(true);
	}
}


class ClassA{
	String MystringA = "Var MystringA in ClassA";
	String MystringB = "Var MystringB in ClassA";
	String MystringC = "Var MystringC in ClassA";
	void MethodInClassA() {
		System.out.println("MethodInClassA void Method in ClassA");
	}
	void MethodInClassB() {
		System.out.println("MethodInClassB void Method in ClassA");
	}
	void MethodInClassC() {
		System.out.println("MethodInClassC void Method in ClassA");
	}
}

class ClassB extends ClassA {
	String MystringA = "Var MystringA in ClassB";
	String MystringB = "Var MystringB in ClassB";
	String MystringC = "Var MystringC in ClassB";
	void MethodInClassA() {
		System.out.println("MethodInClassA void Method in ClassB");
	}
	void MethodInClassB() {
		System.out.println("MethodInClassB void Method in ClassB");
	}
	void MethodInClassC() {
		System.out.println("MethodInClassC void Method in ClassB");
	}
}

class ClassC extends ClassB{
	String MystringA = "Var MystringA in ClassC";
	String MystringB = "Var MystringB in ClassC";
	String MystringC = "Var MystringC in ClassC";
	void MethodInClassA() {
		super.MethodInClassA();
		System.out.println("MethodInClassA void Method in ClassC");
	}
	void MethodInClassB() {
		super.MethodInClassB();
		System.out.println("MethodInClassB void Method in ClassC");
	}
	void MethodInClassC() {
		super.MethodInClassC();
		System.out.println("MethodInClassC void Method in ClassC");
	}
}	

功课就做到这里,异常处理和多线程就不说了,自己加进去就可以了。学业不精以后努力,不能以自学为不精的借口。熟悉了,就爱了; 爱了,就不应轻言抛弃。

猜你喜欢

转载自blog.csdn.net/weixin_45707491/article/details/113481148