Java学习笔记-13.创建窗口和程序片

1.init()方法:程序片第一次被创建,初次运行初始化程序片时调用。

start()方法:每当程序片进入web浏览器中,并且允许程序片启动他的常规操作时调用(特殊的程序片被stop()关闭);同样在init()后调用。

paint()方法:基础类Component的一部分(继承结构中上朔三级)。作为update()的一部分调用,以便对程序片的画布进行特殊的描绘。

stop()方法:每次程序片从web浏览器的视线中离开时调用,时程序片能关闭代价高昂的操作;同样在调用destroy()前调用。

destroy()方法:程序片不再需要,将它从页面中卸载时调用。

2.事件模型:(1)先在类中添加addXXXXXListener()方法。

(2)重写执行接口的方法。

package thirteen;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Button2New extends Applet {
    Button b1 = new Button("button1"), b2 = new Button("button2");

    public void init() {
        b1.addActionListener(new B1());
        b2.addActionListener(new B2());
        add(b1);
        add(b2);
    }

    class B1 implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            getAppletContext().showStatus("BUTTon1");
        }
    }

    class B2 implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            getAppletContext().showStatus("Button2");
        }
    }
}

3.制作窗口:(1)main()方法中新建一个Frame类,并将applet的衍生类给其初始化。

(2)继承WindowAdapter类,并重写windowClosing()方法。

(3)执行Frame的setVisible()方法。

package thirteen;

import java.applet.*;
import java.applet.*;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.TextField;
import java.awt.Desktop.Action;
import java.awt.Frame;
import java.awt.event.*;
import java.time.temporal.TemporalQueries;

import javax.swing.table.TableRowSorter;

import org.omg.CORBA.FloatSeqHelper;

public class TextNew extends Applet {
    Button b1 = new Button("Get Text"), b2 = new Button("Set Text");
    TextField t1 = new TextField(30), t2 = new TextField(30), t3 = new TextField(30);
    String s = new String();

    public void init() {
        b1.addActionListener(new B1());
        b2.addActionListener(new B2());
        t1.addTextListener(new T1());
        t1.addActionListener(new T1A());
        t1.addKeyListener(new T1K());
        add(b1);
        add(b2);
        add(t1);
        add(t2);
        add(t3);
    }

    class T1 implements TextListener {
        public void textValueChanged(TextEvent e) {
            t2.setText(t1.getText());
        }
    }

    class T1A implements ActionListener {
        private int count = 0;

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            t3.setText("t1 Action Event " + count++);

        }

    }

    class T1K extends KeyAdapter {
        public void keyTyped(KeyEvent e) {
            String tString = t1.getText();
            if (e.getKeyChar() == KeyEvent.VK_BACK_SPACE) {
                if (tString.length() > 0) {
                    tString = tString.substring(0, tString.length() - 1);
                    t1.setText(tString);
                }
            }else
                t1.setText(t1.getText()+Character.toUpperCase(e.getKeyChar()));
            t1.setCaretPosition(t1.getText().length());
            e.consume();
        }
    }

    class B1 implements ActionListener{
        public void actionPerformed(ActionEvent e){
            s=t1.getSelectedText();
            if(s.length()==0)s=t1.getText();
            t1.setEditable(true);
        }
    }
    class B2 implements ActionListener{
        public void actionPerformed(ActionEvent e){
            t1.setText("Insert by Button2:"+s);
            t1.setEditable(false);;
        }
    }

    public static void main(String[] args){
        TextNew applet=new TextNew();
        Frame aFrame=new Frame("TextNew");
        aFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        aFrame.add(applet, BorderLayout.CENTER);
        aFrame.setSize(300,200);
        applet.init();
        applet.start();
        aFrame.setVisible(true);
    }

}

4.JavaBean要求:

(1)所有的类必须放在一个包中,在web中没有包是不存在的。

(2)所有的类必须声明为public class,这样才能够被外部访问。

(3)类中所有的属性都必须封装,使用private声明。

(4)封装的属性如果需要被外部所操作,则必须编写对应的setter,getter方法。

(5)一个JavaBean中至少存在一个无参构造方法。

5.Swing各种边框的一个例子:

package thirteen;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class Borders extends JPanel {
    static JPanel showBorder(Border b) {
        JPanel jPanel = new JPanel();
        jPanel.setLayout(new BorderLayout());
        String nm = b.getClass().toString();
        nm = nm.substring(nm.lastIndexOf(‘.‘) + 1);
        jPanel.add(new JLabel(nm, JLabel.CENTER), BorderLayout.CENTER);
        jPanel.setBorder(b);
        return jPanel;
    }

    public Borders() {
        setLayout(new GridLayout(2, 4));
        add(showBorder(new TitledBorder("Title")));
        add(showBorder(new EtchedBorder()));
        add(showBorder(new LineBorder(Color.blue)));
        add(showBorder(new MatteBorder(5, 5, 30, 30, Color.green)));
        add(showBorder(new BevelBorder(BevelBorder.RAISED)));
        add(showBorder(new SoftBevelBorder(BevelBorder.LOWERED)));
        add(showBorder(new CompoundBorder(new EtchedBorder(), new LineBorder(Color.red))));
    }

    public static void main(String[] args) {
        Show.inFrame(new Borders(), 500, 300);
    }

     static class Show {
        public static void inFrame(JPanel jPanel, int width, int height) {
            String title = jPanel.getClass().toString();
            if (title.indexOf("class") != -1)
                title = title.substring(6);
            JFrame frame = new JFrame(title);
            frame.addWindowListener(new WindowAdapter() {
                public void WindowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            frame.getContentPane().add(jPanel, BorderLayout.CENTER);
            frame.setSize(width, height);
            frame.setVisible(true);
        }
    }

}
时间: 2024-11-10 06:15:30

Java学习笔记-13.创建窗口和程序片的相关文章

Java学习笔记--第一个Hibernate框架程序

程序结构 1.建表 本例选择Sql Server2008作为数据库 在MySQL中新增一个ztest数据库,建立 CUSTOMER 表 CREATE TABLE CUSTOMER ( CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12) ); 2.创建PO对象 补充:POJO是Plain OrdinaryJava Object的缩写,它通指没有使用Entity Beans的普通j

Java学习笔记13

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中hashCode()方法: public native int hashCode(); Object.hashCode() 就是一个哈希函数,用来计算散列值以实现哈希表这种数据结构. 返回该对象的哈希码值.支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能. has

疯狂Java学习笔记(72)-----------大话程序猿面试

大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函数 简析TCP的三次握手与四次分手 10分钟掌握XML.JSON及其解析 高效的jQuery代码编写技巧总结 编译器的工作过程和原理 CPU空暇时在"忙"什么 5个强大的Java分布式缓存框架推荐 架构设计 趣味漫画:云计算的起源 负载均衡调度算法大全 程序人生 程序猿不不过写代码 201

我的java学习笔记(13)关于反射(part 2)

呜呜呜...今天因为晚上有点事...结果在实验室没有eclipse,用的命令行,结果环境变量没配好,搞了半天..弄到现在..哎.. 1.查看对象域的关键方法是Field类中的get方法. Field f = c1.getDeclareFields("name"); Object value = f.get(obj); //value是obj 中name域的当前值. 2.反射机制的默认行为受限于java的访问控制. 3.如果一个java程序没有受到安全管理器的控制,就可以覆盖访问控制.

疯狂Java学习笔记(72)-----------大话程序员面试

大话程序员面试 10个我最喜欢问程序员的面试问题 程序员面试不完全指南 10个经典的C语言面试基础算法及代码 程序员的10大成功面试技巧 程序员选择公司的8个标准 编程开发 8个值得关注的PHP安全函数 简析TCP的三次握手与四次分手 10分钟掌握XML.JSON及其解析 高效的jQuery代码编写技巧总结 编译器的工作过程和原理 CPU空闲时在"忙"什么 5个强大的Java分布式缓存框架推荐 架构设计 趣味漫画:云计算的起源 负载均衡调度算法大全 程序人生 程序员不仅仅是写代码 20

Effective Java 学习笔记之创建和销毁对象

一.考虑用静态工厂方法代替构造器 1.此处的静态工厂方法是指返回指为类的对象的静态方法,而不是设计模式中的静态工厂方法. 2.静态工厂方法的优势有: a.使用不同的方法名称可显著地表明两个静态工厂方法的不同,而不像构造器,名字只能是类名. b.并不是每次调用静态工厂方法,都会重新构造一个新的对象. c.可以返回类型的子类型的对象. d.创建参数化类型的实例时,代码变得简洁了. 3.静态工厂方法的缺点有: a.类如果不含有公有的或者受保护的构造器,就不能被子类化(静态工厂方法的存在导致构造器存在的

Java 学习笔记(2015.7.13~17)

Java 学习笔记(2015.7.13~17) Java this关键字 表示本类中的属性,调用本类中的方法 class Person {        private String name;         private int age;         public Person(String name, int age) {         this.name = name;//调用本类中的属性         this.age = age;//同上} //get&set方法:    

56 java编程思想——创建窗口和程序片 用户接口API

56.java编程思想--创建窗口和程序片 用户接口API Java 1.1 版同样增加了一些重要的新功能,包括焦点遍历,桌面色彩访问,打印"沙箱内"及早期的剪贴板支持. 焦点遍历十分的简单,因为它显然存在于AWT 库里的组件并且我们不必为使它工作而去做任何事.如果我们制造我们自己组件并且想使它们去处理焦点遍历,我们过载isFocusTraversable()以使它返回真值.如果我们想在一个鼠标单击上捕捉键盘焦点,我们可以捕捉鼠标按下事件并且调用requestFocus()需求焦点方法

52 java编程思想——创建窗口和程序片 程序片限制

52.java编程思想--创建窗口和程序片 程序片限制 出于安全缘故,程序片十分受到限制,并且有很多的事我们都不能做.您一般会问:程序片看起来能做什么,传闻它又能做什么:扩展浏览器中WEB 页的功能.自从作为一个网上冲浪者,我们从未真正想了解是否一个WEB 页来自友好的或者不友好的站点,我们想要一些可以安全地行动的代码.所以我们可能会注意到大量的限制: (1) 一个程序片不能接触到本地的磁盘.这意味着不能在本地磁盘上写和读,我们不想一个程序片通过WEB页面阅读和传送重要的信息.写是被禁止的,当然