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);
}
} }
Java学习笔记-13.创建窗口和程序片的更多相关文章
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
- 0036 Java学习笔记-多线程-创建线程的三种方式
创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...
- [core java学习笔记][第十章部署应用程序]
第10章 部署应用程序和applet jar文件 Java Web Start 10.1 jar文件 jar文件就是一个压缩了类,图像和声音的ZIP压缩文件 创建一个新的JAR文件应该使用的常见命令格 ...
- 疯狂Java学习笔记(72)-----------大话程序猿面试
大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函 ...
- Java学习笔记——MySQL创建表结构
一.创建/删除数据库. create database t14; drop database t14; use t14; 二.创建若干表用于测试 这里预留了几个坑,下面要填坑的.. /*创建学生表*/ ...
- Effective Java 学习笔记之创建和销毁对象
一.考虑用静态工厂方法代替构造器 1.此处的静态工厂方法是指返回指为类的对象的静态方法,而不是设计模式中的静态工厂方法. 2.静态工厂方法的优势有: a.使用不同的方法名称可显著地表明两个静态工厂方法 ...
- java学习笔记(13) —— google GSON 实现json转化方法
1.配置struts.xml <action name="getGsonAction" class="com.test.action.json.GetGsonAct ...
- Java学习笔记13(面向对象六:super)
在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句 注意:父类构造方法第一行也有隐式的super(); 所有类都有一个"祖宗类" ...
- Java学习笔记13(equals()方法;toString()方法)
equals()方法: equals方法是Object类中的方法:Object是所有类的祖宗,所以所有类都有equals()方法: boolean equals(Object obj); equals ...
随机推荐
- c# 关闭socket的标准方法
aSocket.Shutdown(SocketShutdown.Both); aSocket.Close(); c#关闭socket时,单独使用socket.close()通常会造成资源提前被释放,应 ...
- ORACLE学习之三
DDL 数据定义语言 CREATE ALTER DROP DML 数据操作语言 INSERT UPDATE DELETE DQL 数据查询语言 SELECT TCL 事务控制语言 COMMIT ROL ...
- you don't have permission to access ...........on this server问题解决
因为刚刚开始使用新架构的项目,于是把老项目统统替换成了新的项目.配置好后,本地登录页面报 you don't have permission to access ...... on this serv ...
- mybatis使用*号查询数据丢失问题
使用*号的SQL语句:select * from 表名 在开发过程中可能你会发现使用mybatis框架爱作为持久层时,写的SQL语句在工具里面查询数据是可以查到想要的数据的,但是在项目中会出现数据丢失 ...
- mysql 支持四字节设置
设置文件mysql/bin/my.ini[mac用户在ect文件夹里创建文件my.cnf] 添加以下代码: [mysqld] character-set-server=utf8mb4
- javascript 正则表达式之分组与前瞻匹配详解
本文主要讲解javascript 的正则表达式中的分组匹配与前瞻匹配的,需要对正则的有基本认识,本人一直对两种匹配模棱不清.所以在这里总结一下,如有不对,还望大神指点. 1.分组匹配: 1.1捕获性分 ...
- Wireshark工具抓包的数据包分析
Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料. Wireshark使用WinPCAP作为接口,直接与网卡 ...
- 关于windows下安装mysql数据库出现中文乱码的问题
首先需要在自己安装的mysql路径下新建一个my.ini文件,如下: 然后在my.ini文件中输入一下内容,主要控制编码问题的为红框部分,如下: 为了方便大家使用,可以复制以下代码: [WinMySQ ...
- day 18 类与类之间的关系
类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中,类和类之间也可以产生相关的关系 1.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作, ...
- A64 I2S调试
通过A64 的I2S总线与回音消除模块连接,在A64中需要使能并配置daudio功能. Daudio 为A64 的数字音频接口,可配置成i2s/pcm格式标准音频接口. 内核配置在lichee/lin ...