1. 程式人生 > >Java學習筆記-13.創建窗口和程序片

Java學習筆記-13.創建窗口和程序片

pri let tostring 離開 窗口 dbo solid n) height

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);
        }
    }

}

Java學習筆記-13.創建窗口和程序片