Java之建立視窗與程式片詳解,如下圖所示:
init ()方法:程式片第一次被創建,初次執行初始化程序片時呼叫。
stop()方法:每次程式片從web瀏覽器的視線中離開時調用,時程式片能關閉代價高昂的操作;同樣在呼叫destroy()前呼叫。
destroy()方法:程式片不再需要,將它從頁面中卸載時呼叫。
start()方法:每當程式片進入web瀏覽器中,並且允許程式片啟動他的常規操作時呼叫(特殊的程式片被stop()關閉);同樣在init()後調用。
paint()方法:基礎類別Component的一部份(繼承結構中上朔三級)。作為update()的一部分調用,以便對程式片的畫布進行特殊的描繪。
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()方法。
(2)執行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; @Overridepublic 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); } }elset1.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之創建視窗與程式片詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!