1.
Container 和
Component是AWT中的两个核心类。
2. 两种常用的Container:
Window 和
Panel。 其中对于panel来说,其对象可以作为容纳其他Component对象,但不能独立存在,必须被添加到其他Container中(如window或Applet)。
3. 对于Frame,有如下小程序:
package com.java.TestFrame;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFrame2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame f1 = new MyFrame(100, 100, 200, 200, Color.blue);
MyFrame f2 = new MyFrame(300, 100, 200, 200, Color.red);
MyFrame f3 = new MyFrame(100, 300, 200, 200, Color.cyan);
MyFrame f4 = new MyFrame(300, 300, 200, 200, Color.white);
f1.launchFrame();
f2.launchFrame();
f3.launchFrame();
f4.launchFrame();
}
}
class MyFrame extends Frame {
static int id = 0;
MyFrame(int x, int y, int w, int h, Color color) {
super("MyFrame" + (++id));
setBounds(x, y, w, h);
setBackground(color);
setLayout(null);
setVisible(true);
}
public void launchFrame() {
MyWindowMonitor mwm = new MyWindowMonitor();
this.addWindowListener(mwm);
}
private class MyWindowMonitor extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
setVisible(false);
System.exit(-1);
}
}
}
结果为:
并且可以点击X标志关闭!
4. Frame的缺省布局管理器为BorderLayout,而Panel的缺省布局管理器为FlowLayout。当用户需要亲自设置组件位置时,应取消布局管理器:setLayout(null)。
5. 两个简单的TextField事件监听小程序:
(1) 不包含内部类,“管家机制”传送一个类的引用到另一个类:
package com.java.TFMath;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TFMath {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame mf = new MyFrame();
mf.launchFrame();
}
}
class MyFrame extends Frame {
TextField num1,num2,num3;
public void launchFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(15);
Label l = new Label("+");
Button b = new Button("=");
setLayout(new FlowLayout());
add(num1);
add(l);
add(num2);
add(b);
add(num3);
pack();
setVisible(true);
MyMonitor mm = new MyMonitor(this);
b.addActionListener(mm);
}
}
class MyMonitor implements ActionListener {
MyFrame mf = null;
MyMonitor(MyFrame mf) {
this.mf = mf;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int n1 = Integer.parseInt(mf.num1.getText());
int n2 = Integer.parseInt(mf.num2.getText());
mf.num3.setText("" + (n1+n2));
// mf.num3.setText(Integer.toString(n1+n2));
}
}
程序运行结果为:
(2)包含内部类的实现方法:
package com.java.TestTFMath2;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestTFMath2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyFrame().launchFrame();
}
}
class MyFrame extends Frame {
TextField num1;
TextField num2;
TextField num3;
public void launchFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(15);
Label l = new Label("*");
Button b = new Button("=");
setLayout(new FlowLayout());
add(num1);
add(l);
add(num2);
add(b);
add(num3);
pack();
setVisible(true);
b.addActionListener(new MyMonitor());
}
private class MyMonitor implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText(Integer.toString(n1*n2));
}
}
}
程序运行结果为:
6. Paint方法,有关鼠标事件适配器的一个小程序:
/*
* 同时综合了内部类、MouseAdapter、WindowAdapter、ArrayList、泛型等知识点!
*/
package com.java.MyMouseAdapter;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.*;
public class MyMouseAdapter {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyFrame("drawing...").launchFrame();
}
}
class MyFrame extends Frame {
MyFrame(String name) {
super(name);
}
ArrayList <Point> points = null;
public void launchFrame() {
points = new ArrayList();
setLayout(null);
setBounds(300, 300, 400, 300);
setBackground(Color.WHITE);
setVisible(true);
this.addMouseListener(new Monitor());
this.addWindowListener(new MyWindowMonitor());
}
public void paint(Graphics g) {
Iterator <Point> i = points.iterator();
while (i.hasNext()) {
Point p = i.next();
Color c = g.getColor();
g.setColor(Color.BLACK);
g.fillRect(p.x, p.y, 10, 10);
g.setColor(c);
}
}
public void addPoint(Point p) {
points.add(p);
}
class Monitor extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
addPoint(new Point(e.getX(),e.getY()));
repaint();
}
}
class MyWindowMonitor extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
setVisible(false);
System.exit(-1);
}
}
}
运行结果为:
7. 有关键盘事件的一个小程序:
package com.java.MyKeyAdapter2;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyKeyAdapter2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyFrame().launchFrame();
}
}
class MyFrame extends Frame {
public void launchFrame() {
this.setBounds(100, 100, 200, 150);
setLayout(null);
setBackground(Color.WHITE);
setVisible(true);
this.addWindowListener(new MyWindowMonitor());
this.addKeyListener(new MyKeyMonitor());
}
private class MyKeyMonitor extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_UP) {
System.out.println("UP!");
}
}
}
private class MyWindowMonitor extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
setVisible(false);
System.exit(-1);
}
}
}
运行结果为:
每按一次“↑”键,终端自动打印“UP!”
- 大小: 52.7 KB
- 大小: 13.5 KB
- 大小: 16.1 KB
- 大小: 11.5 KB
- 大小: 16.1 KB
分享到:
相关推荐
MATLAB GUI编程 基础知识介绍 实例pdf书籍
MATLAB GUI编程 MATLAB中GUI设计领悟 GUI设计知识要点总结整理 共14页.pdf
本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
java基础知识的学习好资料,一个javaGUI编程实例,fdialog
Java_GUI图形化用户界面编程的基础知识
本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
介绍有关Java GUI有关的知识!此ppt简单易懂,是初学者上手的好资源!!!
电子版的Python GUI设计之Tkinter菜鸟编程,一般是扫描图片组成的PDF或网页版 ,不支持查找操作,特整理成Word版并分享。
java的GUI编程(Graphic User Interface,图形用户接口),是在它的抽象窗口工具箱(Abstract Window Toolkit,AWT)上实现 的,java.awt是AWT的工具类库,其中包括了丰富的图形、用户界面元件和布局管理器的支持。
第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...
本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
前5章主要涉及qt基础知识,后两个部分主要讲解qt的中高级编程,包括布局管理、事件处理、二维/三维图形、拖放、项视图类、容器类、输入/输出、数据库、多线程、网络、xml、国际化、嵌入式编程等内容。对于本书讲授的...
技术关键词: Tkinter、PyQt、GUI编程、用户界面设计 内容关键词: 窗口、控件、事件处理 用途: 学习使用Python构建图形用户界面 资源描述: Tkinter官方文档提供了详尽的Tkinter GUI库介绍、使用指南和示例代码,适合...
《C++ GUI Qt 4编程(第2版)》详细讲述了使用最新的Qt版本进行图形用户界面应用程序开发的各个方面。全书分为四个部分共24章及4个附录:第一部分介绍了Qt的基础知识和编写用户界面应用程序时所需的基本概念;第二和...
对于初学java界面者,很有用,大致介绍了GUI编程的一些基础知识,以及一些常用的函数。
前5章主要涉及qt基础知识,后两个部分主要讲解qt的中高级编程,包括布局管理、事件处理、二维/三维图形、拖放、项视图类、容器类、输入/输出、数据库、多线程、网络、xml、国际化、嵌入式编程等内容。对于本书讲授的...