java-GUI编程(不常用)
·
什么是GUI编程
全称Graphic User Interface,指图形用户界面
java的GUI编程包
- AWT(Abstract Window Toolkit)(淘汰)
依赖操作系统的本地窗口 - Swing
基于AWT,轻量级组件,不依赖本地窗口系统
常用的Swing组件
- JFrame:窗口
- JPanel:组织其他组件的容器
- JButton:按钮
- JTextField:输入框
- JTable:表格
public class demo1 {
public static void main(String[] args) {
// GUI
//创建一个窗口,有一个登录按钮
JFrame jf = new JFrame("登陆窗口");
JPanel panel = new JPanel();//创建面板
jf.add(panel);//添加面板
jf.setSize(400, 300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口退出程序
jf.setLocationRelativeTo(null);//居中
JButton jb = new JButton("登录");//创建按钮
//jb.setBounds(100, 100, 100, 50);//设置按钮的位置和宽高
panel.add(jb);//添加按钮
jf.setVisible(true);//显示窗口
}
}
常见的布局管理器(layout manager)
- FlowLayout
- BorderLayout
- GridLayout
- BoxLayout
事件处理
GUI编程中,事件的处理是通过**事件监听器(Event Listener)**完成的
public class test {
public static void main(String[] args) {
//GUI事件处理机制
JFrame jf = new JFrame("登陆窗口");
JPanel panel = new JPanel();//创建面板
jf.add(panel);//添加面板
jf.setSize(400, 300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口退出程序
jf.setLocationRelativeTo(null);//居中
JButton jb = new JButton("登录");//创建按钮
//jb.setBounds(100, 100, 100, 50);//设置按钮的位置和宽高
panel.add(jb);//添加按钮
//给按钮绑定点击事件监听器对象
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
//一旦点击jb按钮,底层就会触发这个方法
//e 是一个事件对象,封装了事件信息
JOptionPane.showMessageDialog(jf, "点击了登录按钮");
}
});
//监听用户键盘上下左右四个按键的事件
//给jf窗口整体绑定按键事件
jf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
int keyCode = e.getKeyCode();//拿事件源头的键帽编号
//一旦用户按下任意按键,底层就会触发这个方法
//e 封装了按键信息
switch (keyCode) {
case KeyEvent.VK_LEFT:
JOptionPane.showMessageDialog(jf, "点击了左键");
break;
case KeyEvent.VK_UP:
JOptionPane.showMessageDialog(jf, "点击了上键");
break;
case KeyEvent.VK_RIGHT:
JOptionPane.showMessageDialog(jf, "点击了右键");
break;
case KeyEvent.VK_DOWN:
JOptionPane.showMessageDialog(jf, "点击了下键");
break;
}
}
});
jf.setVisible(true);//显示窗口
//让窗口成为焦点
jf.requestFocus();
}
}
事件的几种常见写法
- 直接提供实现类,用于创建事件监听对象
public class test2 {
public static void main(String[] args) {
//第一种:提供实现类,创建实现类对象代表事件监听器对象
JFrame jf = new JFrame("登陆窗口");
JPanel panel = new JPanel();//创建面板
jf.add(panel);//添加面板
jf.setSize(400, 300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口退出程序
jf.setLocationRelativeTo(null);//居中
JButton jb = new JButton("登录");//创建按钮
//jb.setBounds(100, 100, 100, 50);//设置按钮的位置和宽高
panel.add(jb);//添加按钮
jb.addActionListener(new MyActionListener());
jb.setVisible(true);
}
}
class MyActionListener implements ActionListener {
private JFrame jf;
public MyActionListener() {
jf = new JFrame("登陆窗口");
}
public MyActionListener(JFrame jf) {
this.jf = jf;
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(jf, "点击了登录按钮");
}
}
- 直接使用匿名内部类的对象,代表事件监听对象
见上文事件处理部分 - 自定义窗口,让窗口对象实现事件接口
//自定义的登陆界面,认JFrame做父类
public class LoginFrame extends JFrame implements ActionListener{
public LoginFrame() {
setTitle("登录界面");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
//setVisible(true);
init();//初始化窗口组件
}
private void init() {
//加一个登录按钮
JButton jb = new JButton("登录");
jb.addActionListener(this);//添加监听器
JPanel panel = new JPanel();
this.add(panel);
panel.add(jb);
}
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(this, "点击了登录按钮");
}
}
public class test3 {
public static void main(String[] args) {
//自定义一个登录界面,让界面对象本身也是事件监听器对象
LoginFrame lf = new LoginFrame();//登录界面
lf.setVisible(true);//显示界面
}
}
更多推荐



所有评论(0)