序言
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");
}
}
功课就做到这里,异常处理和多线程就不说了,自己加进去就可以了。学业不精以后努力,不能以自学为不精的借口。熟悉了,就爱了; 爱了,就不应轻言抛弃。