java之旅之GUI
来源:互联网 发布:table2excel.js 编辑:程序博客网 时间:2024/05/17 02:22
事件处理(响应)
委托事件模型 事件源对象 监听器对象步骤 ①写好界面,事件源对象已经有了 ②选择合适的监听器类型 ③书写监听器的实现类(写好处理代码) ④产生监听器对象 和事件源对象进行绑定。监听器 ActionListener 默认动作 单独书写一个类,实现监听器接口。 监听器实现方式一: 特点: ①可以让一个监听器监听多个事件源,用if判断进行分割,但这么做违背了单一职责。因此从设计上讲应该为每一个事件书写单独的监听器(就算辛苦,也要这么做) 如果需要操作非事件源的其他组件,应该传参。 监听器提供的抽象方法--回调方法
书写了这个方法的实现,但不主动调用,交由系统自动调用。
监听器实现方式二:
特点:让容器类同时充当监听器
①只能让一个监听器监听多个事件源,用if判断进行分割,但这么做肯定违背了单一职责
②操作本容器的组件或中间容器,不用传参。
监听器实现方式三:
匿名内部类
在跟事件源对象绑定监听器对象的同时实现监听器类。
特点:
1、每个事件源对象拥有独立的监听器类,同时没有多的java文件,既满足单一,有没有增加文件的数量。
2、操作外部容器类的任何组件或子容器不用传参。
①一个监听器可以绑定多个事件源对象
②一个事件源也可以绑定多个监听器对象
③每个监听器有各自的监听事件类型
布局
空布局边界布局 BorderFrame BorderLayout 布局方式:
整个布局划分为5个部分,东西南北中,南北要贯通,中间(范围,权利)最大,周边不存在,中间会占领周边,但周边不能占领中间。
使用场景:
不是用来直接放按钮的,是用来放置子容器(中间容器)的。
流布局
FlowFrame
FlowLayout
布局方式:
按从左往右,从上往下,由中间开始的方式依次排放,组件大小根据组件内容确定
组件的位置会随着容器的大小的改变而改变。
使用场景:
放置组件的,不是放置中间容器的,最好只做单行布局
网格布局
GridFrame
GridLayout
布局方式:
按行列将整个容器划分为等大的区域。放入的子容器的数目如果与设置数目不等,优先保证行改变列。
使用场景:
不是用来直接放按钮的,是用来放置子容器(中间容器)的。
嵌套布局
面板嵌套(1、大问题域化小问题域。2、分工合作。)
JPanel
事件处理
卡片布局
翻页效果
整个界面翻页
内容面板ContentP布局设置为卡片布局
局部界面翻页
JPanel设置为卡片布局
第一张被放入的卡片被放在最上面。
每张卡片放入的时候要给出别名
默认显示第一张卡片
翻页步骤:
1、首先得到被设置为卡片布局的那个容器
2、得到这个容器的布局管理器
3、调用布局管理器翻页
界面元素
容器 容器类与组件类 java.swing.包
容器与组件使用这个包
java.awt.摒弃图形
颜色字体类使用这个包
工具类
颜色
字体
首层容器
JWindom
一个白色框体
JFrame
获取工具对象 ToolKit.getDefaultToolKit()
①设置窗体大小 setSize 像素
②设置窗体位置 setLocation 距离窗体左上角 X Y
窗体退出即关闭 setDefaultCloseOperation(JFrame.退出方法)
最后设置窗体可见 setVisible
JDialog
JOptionpane自带三种对话框
JOptionpane.showInputDialog
JOptionpane.showMessageDialog
JOptionpane.showConfirmDialog
int 类型 0 1 2 -1
JApplet
java小应用程序
子容器(中间容器)
内容面板
组件
标签
JLabel 匈牙利命名法 前半部分 功能描述缩写 后半部分 类型描述
文本框
按钮
下拉列表
单选框
复选框
文本域
package com.lovo.frame;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.Toolkit;import javax.swing.BorderFactory;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPasswordField;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class MyFrame extends JFrame{ private Container contentP;//内容面板 private JLabel msgLab;//文字标签 private JLabel imgLab;//图片标签 private JTextField usernameTxt;//文本框 private JPasswordField pwdTxt;//密码框 private JButton okBtn;//按钮 private JButton getMoentyBtn;//取钱按钮 private JComboBox<String> teacherCmb;//下拉列表 private JTextArea selfArea;//文本域 private JRadioButton maleRad;//单选框 private JRadioButton femaleRad; private JCheckBox hobbitBox;//复选框 public MyFrame(){ Toolkit tk = Toolkit.getDefaultToolkit();//获取工具对象 this.setSize(500, 400);//设置窗体大小--像素 this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体关闭即退出程序 this.setTitle("我的第一个GUI窗体");//标题栏设置标题 this.setIconImage(tk.createImage("image/icon.png"));//设置标题栏图标 this.setResizable(false);//设置窗体改变大小的能力 this.addContent(); this.setVisible(true);//设置该窗体可见 } private void addContent(){ this.contentP = this.getContentPane();//获取内容面板 this.contentP.setBackground(Color.WHITE);//设置窗体背景色 this.contentP.setLayout(null);//设置布局管理器为null---代表放入该容器的组件的大小位置全靠自定义 //文本标签 this.msgLab = new JLabel("/"+100);//产生对象 this.msgLab.setText("/"+100);// this.msgLab.setBorder(BorderFactory.createLineBorder(Color.BLACK));//给标签设置边框--调试用 this.msgLab.setFont(new Font("微软雅黑",Font.BOLD,16));//设置字体// this.msgLab.setForeground(new Color(82,254,211));//设置字体颜色 this.msgLab.setBounds(100, 20, 40, 25);//设置大小位置 this.contentP.add(this.msgLab);//放入容器 //图片标签 this.imgLab = new JLabel(new ImageIcon("image/fish.jpg")); this.imgLab.setBounds(200, 20, 243, 167); this.contentP.add(this.imgLab); //文本框 this.usernameTxt = new JTextField(); this.usernameTxt.setBounds(20, 70, 40, 25); this.usernameTxt.setFont(new Font("微软雅黑",Font.BOLD,16));//设置字体// this.usernameTxt.setForeground(new Color(82,254,211));//设置字体颜色// this.usernameTxt.setEditable(false);//设置文本框不可编辑 this.contentP.add(this.usernameTxt); //密码框 this.pwdTxt = new JPasswordField(); this.pwdTxt.setEchoChar('*'); this.pwdTxt.setFont(new Font("微软雅黑",Font.BOLD,16));//设置字体 this.pwdTxt.setForeground(new Color(82,254,211));//设置字体颜色 this.pwdTxt.setBounds(20, 120, 100, 30); this.contentP.add(this.pwdTxt); //按钮 this.okBtn = new JButton("<"); this.okBtn.setText("<"); this.okBtn.setFont(new Font("微软雅黑",Font.BOLD,16));//设置字体// this.okBtn.setForeground(new Color(82,254,211));//设置字体颜色 this.okBtn.setBounds(20, 160, 50, 22); this.contentP.add(this.okBtn); this.getMoentyBtn = new JButton(new ImageIcon("image/buttonGet.jpg")); this.getMoentyBtn.setBounds(20, 200, 140, 50); this.contentP.add(this.getMoentyBtn); //下拉列表 this.teacherCmb = new JComboBox<String>(); this.teacherCmb.addItem("周春艳"); this.teacherCmb.addItem("刘弯弯"); this.teacherCmb.addItem("万洁"); this.teacherCmb.addItem("张欣"); this.teacherCmb.addItem("何茹薇"); this.teacherCmb.setEditable(true);//设置为可编辑为true this.teacherCmb.setBounds(20, 260, 100, 20); this.contentP.add(this.teacherCmb); //文本域 this.selfArea = new JTextArea(); JScrollPane scrollP = new JScrollPane(this.selfArea); scrollP.setBounds(200, 200, 280, 160); this.contentP.add(scrollP); //单选框 this.maleRad = new JRadioButton("男"); this.femaleRad = new JRadioButton("女"); this.maleRad.setBounds(20, 290, 50, 25); this.femaleRad.setBounds(80, 290, 50, 25); this.maleRad.setBackground(Color.WHITE); this.femaleRad.setBackground(Color.WHITE); this.maleRad.setSelected(true);//设置默认选中 this.contentP.add(this.maleRad); this.contentP.add(this.femaleRad); ButtonGroup bGroup = new ButtonGroup();//按钮分组 bGroup.add(this.maleRad); bGroup.add(this.femaleRad); //复选框 this.hobbitBox = new JCheckBox("兴趣爱好"); this.hobbitBox.setBounds(20, 325, 100, 25); this.contentP.add(this.hobbitBox); }}
- java之旅之GUI
- java之GUI
- Java GUI之JButton
- Java GUI之GraphicsEnvironment
- JAVA之GUI
- Java之GUI编程
- java 之GUI
- java基础之GUI
- java基础之GUI
- Java基础之GUI
- JAVA之GUI
- Java之GUI
- java之GUI!!!
- Java GUI之JMenuBar
- Java GUI之JDialog
- Java GUI之JTextArea
- Java GUI之ActionListener
- Java GUI之KeyListener
- mvn编译java和groovy
- Windows系统压缩卷时可压缩空间远小于实际剩余空间解决方法
- Pascal's Triangle
- uImage
- Android线程和线程池(二)
- java之旅之GUI
- python数据分析之(1)前期入门准备
- Github上Stars超过1000的优秀开源项目推荐(值得收藏)
- Spring JdbcTemplate方法详解
- 微信开发之公众号支付
- POJ 3009Curling 2.0(DFS)
- 看了《C++高级编程》的一点感受
- sklearn中SVM简单使用
- JAVA API调用OOZIE作业运行