GUI
《1》 Graphical User Interface(图形用户接口)。
《2》用图形的方式,来显示计算机操作的界面,这样更方便更直观。
《3》Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中
新建一个基本的窗体
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
public class GuiDemes {
public static void main(String[] args)
{// TODO Auto-generated method stub
med();
}
private static void med() {
//创建窗体
Frame f = new Frame("my java");
//对窗体进行基本设置
//设置显示窗体的大小
f.setSize(500,400);
//设置显示窗体显示的位置
f.setLocation(300, 200);
//设置布局方式
f.setLayout(new FlowLayout());
//创建一个按钮对象
Button b = new Button("按纽");
//将按纽添加到显示窗体中去
f.add(b);
//调用方法使窗体显示在窗口中
f.setVisible(true);
}
}
事件监听机制
《1》事件源——就是awt包中的或者swing包中的那些图形界面组件
《2》事件——每一个事件源都有自己特有的对应事件和共性事件
《3》监听器——将可以触发某一个事件的动作都已经封装到了监听器中
《4》事件处理——这是我们要做的事情,对产生的动作进行处理
添加一个关闭功能
第一种方式:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class GuiDemes {
public static void main(String[] args)
{// TODO Auto-generated method stub
med();
}
private static void med()
{
//创建窗体
Frame f = new Frame("my java");
//对窗体进行基本设置
//设置显示窗体的大小
f.setSize(500,400);
//设置显示窗体显示的位置
f.setLocation(300, 200);
//设置布局方式
f.setLayout(new FlowLayout());
//创建一个按钮对象
Button b = new Button("按纽");
//将按纽添加到显示窗体中去
f.add(b);
//调用自定义关闭对象来关闭显示窗体
f.addWindowListener(new mywinclose());
//调用方法使窗体显示在窗口中
f.setVisible(true);
}
}
//自定义一个关闭类
class mywinclose extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.out.println("666"+e.toString());
System.exit(0);
}
}
第二种实现方式:定义一个匿名内部类
private static void med()
{
//创建窗体
Frame f = new Frame("my java");
//对窗体进行基本设置
//设置显示窗体的大小
f.setSize(500,400);
//设置显示窗体显示的位置
f.setLocation(300, 200);
//设置布局方式
f.setLayout(new FlowLayout());
//创建一个按钮对象
Button b = new Button("按纽");
//将按纽添加到显示窗体中去
f.add(b);
//创建一个匿名内部类来执行关闭功能
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//调用方法使窗体显示在窗口中
f.setVisible(true);
}
简单优化代码
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameDemo
{
//定义该组件中所需的引用
private Frame f;
private Button but;
FrameDemo()
{
init();
}
public void init()
{
f = new Frame("my java");
//对窗体进行设置
f.setBounds(100,552,444,568);
f.setLayout(new FlowLayout());
but = new Button("my button");
//将按纽添加到窗体中去
f.add(but);
//加载下窗体事件
myEvent();
//显示窗体
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
public class GuiDemes {
public static void main(String[] args)
{// TODO Auto-generated method stub
med2();
}
private static void med2() {
// TODO Auto-generated method stub
FrameDemo f = new FrameDemo();
}
使窗体中的按纽具备关闭功能
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameDemo
{
//定义该组件中所需的引用
private Frame f;
private Button but;
FrameDemo()
{
init();
}
public void init()
{
f = new Frame("my java");
//对窗体进行设置
f.setBounds(100,552,444,568);
f.setLayout(new FlowLayout());
but = new Button("my button");
//将按纽添加到窗体中去
f.add(but);
//加载下窗体事件
myEvent();
//显示窗体
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//让按纽具备退出程序的功能
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("按纽执行");
System.exit(0);
}
});
}
}
public class GuiDemes {
public static void main(String[] args)
{// TODO Auto-generated method stub
med2();
}
private static void med2()
{
FrameDemo f = new FrameDemo();
}
运行程序:
-----------------------------------------------------------------------------------------------------------------
建立窗体中按钮活动事件:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.A
ctionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2
{
public static void main(String[] args)
{
ButtonDemo b = new ButtonDemo();
}
}
class ButtonDemo
{
private Frame f;
private Button but;
ButtonDemo()
{
show();
}
private void show()
{
// TODO Auto-generated method stub
f= new Frame("myjava");
//设置窗体属性
f.setBounds(200,200, 200, 200);
f.setLayout(new FlowLayout());
//设置一个按纽,并将其添加到窗体中去
but = new Button("mybutton");
f.add(but);
//调用自定义事件监听机制
myEvent();
//设置在窗口中显示窗体
f.setVisible(true);
}
private void myEvent() {
//建立窗体中按钮活动事件
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("action ok ");
}
});
//建立关闭按钮关闭窗体事件
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
System.out.println("窗体关闭按钮执行");
}
});
}
}
-----------------------------------------------------------------------------------------------------------------
向窗体中的按纽添加鼠标单击监听
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2
{
public static void main(String[] args)
{
ButtonDemo b = new ButtonDemo();
}
}
class ButtonDemo
{
private Frame f;
private Button but;
ButtonDemo()
{
show();
}
private void show()
{
f= new Frame("myjava");
//设置窗体属性
f.setBounds(200,200, 200, 200);
f.setLayout(new FlowLayout());
//设置一个按纽,并将其添加到窗体中去
but = new Button("mybutton");
f.add(but);
//调用自定义事件监听机制
myEvent();
//设置在窗口中显示窗体
f.setVisible(true);
}
private void myEvent()
{
//建立窗体中按钮鼠标单击活动事件
but.addMouseListener(new MouseAdapter()
{
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标移动到了按纽上");
}
public void mouseClicked(MouseEvent e)
{
//方法getClickCount 是获取鼠标单击的次数的
if(e.getClickCount()==1)
{
System.out.println("鼠标单击了");
}
if(e.getClickCount()==2)
{
System.out.println("鼠标双击了");
}
}
});
//建立关闭按钮关闭窗体事件
f.addWindowListener(new 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.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2
{
public static void main(String[] args)
{
ButtonDemo b = new ButtonDemo();
}
}
class ButtonDemo
{
private Frame f;
private Button but;
ButtonDemo()
{
show();
}
private void show()
{
// TODO Auto-generated method stub
f= new Frame("myjava");
//设置窗体属性
f.setBounds(200,200, 200, 200);
f.setLayout(new FlowLayout());
//设置一个按纽,并将其添加到窗体中去
but = new Button("mybutton");
f.add(but);
//调用自定义事件监听机制
myEvent();
//设置在窗口中显示窗体
f.setVisible(true);
}
private void myEvent()
{
//建立窗体中按钮键盘点击活动事件
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
//设置esc键退出窗体功能
if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
{
System.out.println("键盘按银退出");
System.exit(0);
}
System.out.println("按键为"+e.getKeyChar());
}
});
//建立关闭按钮关闭窗体事件
f.addWindowListener(new 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.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemos2
{
public static void main(String[] args)
{
ButtonDemo b = new ButtonDemo();
}
}
class ButtonDemo
{
private Frame f;
private Button but;
private TextField tx;
ButtonDemo()
{
show();
}
private void show()
{
// TODO Auto-generated method stub
f= new Frame("myjava");
//设置窗体属性
f.setBounds(200,200, 200, 200);
f.setLayout(new FlowLayout());
//新建一个文本方框,并将其添加到显示窗体中去
tx = new TextField(20);
f.add(tx);
//设置一个按纽,并将其添加到窗体中去
but = new Button("mybutton");
f.add(but);
//调用自定义事件监听机制
myEvent();
//设置在窗口中显示窗体
f.setVisible(true);
}
private void myEvent()
{
//添加一个文本监听事件
tx.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
//设定输入文字的限定,如果输入的数据不合格,则给出相应提示,
int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
{
System.out.println("数据不合格");
//调用方法,只要按键不合格,那么对应的值就不会输入到文本框中去
e.consume();
}
}
});
//建立关闭按钮关闭窗体事件
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("窗体关闭按钮执行");
System.exit(0);
}
});
}
}
运行程序后;向显示窗体中的文本方框中输入
练习
在文本框中输入目录,点击“转到”按钮,将该目录中的文件与文件夹名称列在下面的文本区域中去
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class WindowDemo1
{
public static void main(String[] args)
{
MyWindowDemo m = new MyWindowDemo();
}
}
class MyWindowDemo
{
private Frame f;
private Button but;
private TextField t1;
private TextArea t2;
MyWindowDemo()
{
init();
}
public void init()
{
//新建一个窗体并设置窗体的属性
f= new Frame("myjava");
f.setBounds(200,200,500,400);
f.setLayout(new FlowLayout());
//新建一个提示按钮
but = new Button("转到");
t1=new TextField(40);
t2 = new TextArea(20,60);
f.add(t1);
f.add(but);
f.add(t2);
//调用自定义监听机制
myEvent();
//调用方法使窗体在窗口中显示
f.setVisible(true);
}
private void myEvent()
{
// TODO Auto-generated method stub
//添加一个窗口窗体活动事件,实现关闭按纽点击关闭窗体
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("窗体关闭按钮关闭");
System.exit(0);
}
});
//添加一个按钮监听事件
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String dirPath= t1.getText();
//将获取的文件路径封装对象
File dir = new File(dirPath);
//判断文件目录是否存在,如果不存在,则执行些代码块,给出相应提示
if(!dir.exists())
t2.setText("目录文件不存在,请重新输入");
//如果文件目录存在,则执行下面的操作
if(dir.exists()&&dir.isDirectory())
{
String[] names = dir.list();
for(String s :names)
{
t2.append(s+"\r\n");
}
}
//清空输入框
t1.setText("");
}
} );
}
}
运行程序,并在文本框中输入相应的目录路径
加入对话框Dialog
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class WindowDemo1
{
public static void main(String[] args)
{
MyWindowDemo m = new MyWindowDemo();
}
}
class MyWindowDemo
{
private Frame f;
private Button but;
private TextField t1;
private TextArea t2;
private Dialog d ;
private Label lab;
private Button okbut;
MyWindowDemo()
{
init();
}
public void init()
{
//新建一个窗体并设置窗体的属性
f= new Frame("myjava");
f.setBounds(200,200,500,400);
f.setLayout(new FlowLayout());
//新建一个提示按钮
but = new Button("转到");
t1=new TextField(40);
t2 = new TextArea(20,60);
f.add(t1);
f.add(but);
f.add(t2);
//创建一个显示窗口
d = new Dialog(f,"提示信息",true);
//设置显示窗口
d.setBounds(200, 200,400, 400);
d.setLayout(new FlowLayout());
lab = new Label();
okbut = new Button("确定");
d.add(lab);
d.add(okbut);
//调用自定义监听机制
myEvent();
//调用方法使窗体在窗口中显示
f.setVisible(true);
}
public void myEvent()
{
//添加一个文本框内容按键Enter输入
t1.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
show();
}
});
//添加点击按纽退出提示窗口监听事件
okbut.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
d.setVisible(false);
}
});
//添加点击Enter键 退出提示窗口
okbut.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
d.setVisible(false);
}
});
// TODO Auto-generated method stub
//添加d窗口的活动监听事件
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
//添加一个窗口窗体活动事件,实现关闭按纽点击关闭窗体
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//添加一个按钮监听事件
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
show();
}
});
}
public void show()
{
String dirPath= t1.getText();
//将获取的文件路径封装对象
File dir = new File(dirPath);
//如果文件目录存在,则执行下面的操作
if(dir.exists()&&dir.isDirectory())
{
String[] names = dir.list();
for(String s :names)
{
t2.append(s+"\r\n");
}
}
else
{
String info = "输入的信息"+dirPath+"不符合要求";
lab.setText(info);
d.setVisible(true);
}
//清空输入框
t1.setText("");
}
}
向对话框中添加菜单功能
import java.awt.*;
import java.awt.event.*;
public class MenuDemo
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
MyMenu m = new MyMenu();
}
}
class MyMenu
{
private Frame f;
private MenuBar mb;
private Menu m,subMenu;
private MenuItem closeItem,subItem;
MyMenu()
{
init();
}
public void init()
{
f = new Frame("myjava");
f.setBounds(200,200,200,200);
f.setLayout(new FlowLayout());
mb = new MenuBar();
m = new Menu("文件");
subMenu = new Menu("子菜单");
subItem = new MenuItem("子条目");
closeItem = new MenuItem("退出");
subMenu.add(subItem);
m.add(subMenu);
m.add(closeItem);
mb.add(m);
f.setMenuBar(mb);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}