* 创建图形化界面
* 1.创建frame窗体
* 2.对窗体进行基本设置
* 比如大小、位置、布局
* 3.定义组件
* 4.将组件通过窗体的add方法添加到窗体
* 5.让窗体显示,通过setVisible(true)
- import java.awt.*;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import java.awt.event.WindowListener;
- public class AwtDemo {
- public static void main(String[] args){
- Frame f=new Frame(“我的窗口”);//它默认的是边界布局
- f.setLocation(300, 300);//定点距左边的距离
- f.setSize(500, 400);
- f.setLayout(new FlowLayout());
- Button b=new Button(“按钮”);
- f.add(b);
- //f.addWindowListener(new MyWin());
- //我们也可以写一个匿名内部类
- f.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e){
- System.out.println(“关闭窗体”);
- System.exit(0);
- }
- public void windowActivated(WindowEvent e){
- System.out.println(“我要活动了”);
- }
- public void windowOpened(WindowEvent e){
- System.out.println(“我被打开了”);
- }
- });
- f.setVisible(true);
- }
- }
- /*
- interface Lis{
- void close();
- }
- abstract class WinLis implements Lis{
- // 复写接口中的方法,要用
- // 某一个接口,必须复写
- // 其中所有的方法,才能
- // 建立对象,然后传递给函数,
- // 用到abstract是因为这个里
- // 面没有内容,如果调用的话
- // 没有什么意义,所以抽象化了,
- // 不让创建对象
- public void close(){
- }
- }
- class MyWin implements WindowListener{
- //复写7个方法,可是只用了其中一种方法
- //其他动作都没有用到,可是却必须复与。
- @Override
- public void windowOpened(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public void windowClosing(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public void windowClosed(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public void windowIconified(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public void windowDeiconified(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public void windowActivated(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public void windowDeactivated(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- //
- }
- */
- //因为WindowListener的子类WindowAdapter已结实现了WindowListener接口
- //并已经覆盖了其中所有的方法,那么我只要继承自Windowadapter覆盖需要的方法即可
- //在图形化界面有两个包必须导入,java.awt.*;还有一个是java.awt.event.*;
- class MyWin extends WindowAdapter{
- public void windowClosing(WindowEvent e){
- System.out.println(“关闭窗体”);
- System.exit(0);
- }
- }
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class AwtDemo {
public static void main(String[] args){
Frame f=new Frame("我的窗口");//它默认的是边界布局
f.setLocation(300, 300);//定点距左边的距离
f.setSize(500, 400);
f.setLayout(new FlowLayout());
Button b=new Button("按钮");
f.add(b);
//f.addWindowListener(new MyWin());
//我们也可以写一个匿名内部类
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.out.println("关闭窗体");
System.exit(0);
}
public void windowActivated(WindowEvent e){
System.out.println("我要活动了");
}
public void windowOpened(WindowEvent e){
System.out.println("我被打开了");
}
});
f.setVisible(true);
}
}
/*
interface Lis{
void close();
}
abstract class WinLis implements Lis{
// 复写接口中的方法,要用
// 某一个接口,必须复写
// 其中所有的方法,才能
// 建立对象,然后传递给函数,
// 用到abstract是因为这个里
// 面没有内容,如果调用的话
// 没有什么意义,所以抽象化了,
// 不让创建对象
public void close(){
}
}
class MyWin implements WindowListener{
//复写7个方法,可是只用了其中一种方法
//其他动作都没有用到,可是却必须复与。
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
//
}
*/
//因为WindowListener的子类WindowAdapter已结实现了WindowListener接口
//并已经覆盖了其中所有的方法,那么我只要继承自Windowadapter覆盖需要的方法即可
//在图形化界面有两个包必须导入,java.awt.*;还有一个是java.awt.event.*;
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.out.println("关闭窗体");
System.exit(0);
}
}
图形界面之鼠标键盘点击事件:
- import java.awt.Button;
- import java.awt.FlowLayout;
- import java.awt.Frame;
- import java.awt.TextField;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- public class MouseAndKeyEvent {
- private Frame f;
- private Button but;
- private TextField tf;
- MouseAndKeyEvent(){
- init();
- }
- public void init(){
- f=new Frame(“我的窗口”);
- f.setBounds(300,100,600,500);
- but=new Button(“按钮”);
- tf=new TextField(10);//表示长度为10
- f.add(tf);
- f.add(but);
- myEvent();
- f.setLayout(new FlowLayout());
- f.setVisible(true);
- }
- public void myEvent(){
- f.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e){
- System.exit(0);
- }
- });
- //在文本框里只能输入数字
- tf.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e){
- int code=e.getKeyCode();
- if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
- System.out.println(code+”..是不合法的数字”);
- e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件
- }
- });
- //but添加一个键盘监听
- but.addKeyListener(new KeyAdapter(){
- public void keyPressed(KeyEvent e){
- if(e.getKeyCode()==KeyEvent.VK_ENTER)
- System.exit(0);
- System.out.println(KeyEvent.getKeyText(e.getKeyCode())+”…”+e.getKeyCode());
- //键盘的组合键
- if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
- System.out.println(“Ctrl+Enter is run”);
- }
- });
- but.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- System.out.println(“action ok”);
- }
- });
- but.addMouseListener(new MouseAdapter() {
- private int count=1;
- private int clickCount=1;
- public void mouseEntered(MouseEvent e){
- System.out.println(“鼠标进入到该组件”+count++);
- }
- public void mouseClicked(MouseEvent e){
- System.out.println(“点击动作”+clickCount++);
- }
- public void mouseClicked2(MouseEvent e){
- if(e.getClickCount()==2)
- System.out.println(“双击动作”+clickCount++);
- }
- });
- }
- public static void main(String []args){
- new MouseAndKeyEvent();
- }
- }
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MouseAndKeyEvent {
private Frame f;
private Button but;
private TextField tf;
MouseAndKeyEvent(){
init();
}
public void init(){
f=new Frame("我的窗口");
f.setBounds(300,100,600,500);
but=new Button("按钮");
tf=new TextField(10);//表示长度为10
f.add(tf);
f.add(but);
myEvent();
f.setLayout(new FlowLayout());
f.setVisible(true);
}
public void myEvent(){
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//在文本框里只能输入数字
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code=e.getKeyCode();
if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
System.out.println(code+"..是不合法的数字");
e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件
}
});
//but添加一个键盘监听
but.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER)
System.exit(0);
System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
//键盘的组合键
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
System.out.println("Ctrl+Enter is run");
}
});
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("action ok");
}
});
but.addMouseListener(new MouseAdapter() {
private int count=1;
private int clickCount=1;
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入到该组件"+count++);
}
public void mouseClicked(MouseEvent e){
System.out.println("点击动作"+clickCount++);
}
public void mouseClicked2(MouseEvent e){
if(e.getClickCount()==2)
System.out.println("双击动作"+clickCount++);
}
});
}
public static void main(String []args){
new MouseAndKeyEvent();
}
}
图形界面之列出指定目录内容:
- import java.awt.Button;
- import java.awt.Dialog;
- import java.awt.FlowLayout;
- import java.awt.Frame;
- import java.awt.Label;
- import java.awt.TextArea;
- import java.awt.TextField;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import java.io.File;
- public class MyWindowDemo {
- private Frame f;
- private TextField tf;
- private Button but;
- private Button okBut;
- private TextArea ta;
- private Dialog d;
- private Label lab;//把文字封装成label对象添加进去。
- MyWindowDemo(){
- init();
- }
- public void init(){
- f=new Frame(“我的窗口”);
- f.setBounds(300,100,600,500);
- f.setLayout(new FlowLayout());
- tf=new TextField(60);
- but=new Button(“转到”);
- d=new Dialog(f,”提示信息-self”,true);//d本身是一个窗体,不能加到Frame中。
- d.setBounds(400,200,240,150);
- d.setLayout(new FlowLayout());
- lab=new Label();
- okBut=new Button(“确定”);
- d.add(lab);
- d.add(okBut);
- ta=new TextArea(25, 70);
- f.add(tf);
- f.add(but);
- f.add(ta);
- myEvent();
- f.setVisible(true);
- }
- public void myEvent(){
- okBut.addActionListener(new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e) {
- d.setVisible(false);
- }
- });
- d.addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e ){
- d.setVisible(false);
- }
- });
- //通过键盘对事件进行操作。
- tf.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e){
- if(e.getKeyCode()==KeyEvent.VK_ENTER)
- showDir();
- }
- });
- but.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- showDir();
- //tf.setText(“”);//清除textField的内容
- }
- });
- f.addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e ){
- System.exit(0);
- }
- });
- }
- private void showDir(){
- String dirPath=tf.getText();
- //ta.setText(text);//把获取到文本放到TextArea
- //System.out.println(text);
- File dir=new File(dirPath);
- if(dir.exists()&&dir.isDirectory()){
- ta.setText(“”);//把之前路径找到的文件清除
- String[] names=dir.list();
- for(String name:names){
- //对于有很多文件的话,我们可以把它们存到String Builder中
- //append,表示将给定文本追加到文本区的当前文本。
- ta.append(name+”\n\r”);//用到换行等
- }
- }
- else{
- String info=“你输入的信息:”+dirPath+”是错误的,请重输”;
- lab.setText(info);
- d.setVisible(true);
- }
- }
- public static void main(String [] args){
- new MyWindowDemo();
- }
- }
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
public class MyWindowDemo {
private Frame f;
private TextField tf;
private Button but;
private Button okBut;
private TextArea ta;
private Dialog d;
private Label lab;//把文字封装成label对象添加进去。
MyWindowDemo(){
init();
}
public void init(){
f=new Frame("我的窗口");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
d=new Dialog(f,"提示信息-self",true);//d本身是一个窗体,不能加到Frame中。
d.setBounds(400,200,240,150);
d.setLayout(new FlowLayout());
lab=new Label();
okBut=new Button("确定");
d.add(lab);
d.add(okBut);
ta=new TextArea(25, 70);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
public void myEvent(){
okBut.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
d.setVisible(false);
}
});
d.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e ){
d.setVisible(false);
}
});
//通过键盘对事件进行操作。
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
});
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
showDir();
//tf.setText("");//清除textField的内容
}
});
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e ){
System.exit(0);
}
});
}
private void showDir(){
String dirPath=tf.getText();
//ta.setText(text);//把获取到文本放到TextArea
//System.out.println(text);
File dir=new File(dirPath);
if(dir.exists()&&dir.isDirectory()){
ta.setText("");//把之前路径找到的文件清除
String[] names=dir.list();
for(String name:names){
//对于有很多文件的话,我们可以把它们存到String Builder中
//append,表示将给定文本追加到文本区的当前文本。
ta.append(name+"\n\r");//用到换行等
}
}
else{
String info="你输入的信息:"+dirPath+"是错误的,请重输";
lab.setText(info);
d.setVisible(true);
}
}
public static void main(String [] args){
new MyWindowDemo();
}
}