十四.Java Swing

十四.Java Swing

1.窗口

1.JFrame常用方法

JFrame()	//创建一个无标题的窗口
JFrame(String a)	//创建一个窗体对象,并指定标题
public void setBounts(int a, int b, int width, int heigth)	//设置窗口位置和大小
public void setSize(int width,int height)	//设置窗体大小
public void setLocation(int x,int y)	//设置组件的显示位置
public void setBackgorund(color.red)	//设置窗体背景颜色
public void setVisible(boolean b)	//设置窗口是否可见,默认为不可见
public void setResizable(boolean b)	//设置窗口是否可调整大小,默认为可调整
public void dispose()	//撤销当前窗口,并释放当前窗口所使用的所有资源
public void setLocation(point p)	//通过point来设置组件的显示位置
public void setVisible(true/false)	//显示或隐藏组件
public void add(Component comp)	//向容器中增加组件
setLay·out(LayoutManager mgr)	//设置局部管理器,如果设置为null表示不使用
public void pack()	//调整窗口大小,以适合其子组件的首选大小和局部
public void getContentpane()	//返回此窗口的容器对象
public void removeAll()		//移除掉容器中的全部组件
public void remove(Component c)	//移除掉容器中参数c指定的组件
public void setExtendedState(int state) //设置窗口的扩展状态
public void setDefaultCloseOperation(int operation)	//设置单击关闭窗口程序会做怎样的处理

2.菜单条,菜单,菜单项

1.菜单条

setJMenuBar(JMenuBar bar);

2.菜单

JComponent类的子类JMenu负责创建菜单,即JMenu的一个实例就是菜单

3.菜单项

JComponent类的子类JMenuItem负责创建菜单项,即JMenuItem的一个实例就是菜单项

4.嵌入子菜单

JMenu是JMenuItem的子类,因此,菜单项也可以是一个菜单,这样的菜单项是嵌入子菜单

5.菜单上的图标

Icon icon = new ImageIcon(“a.gif”);

6.实例

WindowMenu.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class WindowMenu extends JFrame{
    JMenuBar menubar;       //菜单条
    JMenu menu, subMenu;    //菜单
    JMenuItem item1, item2; //菜单项

    public WindowMenu() {}
    public WindowMenu(String s, int x, int y, int w, int h){
        init(s);                //创建一个名为s的带有对应菜单的窗口
        setLocation(x, y);      //设置位置
        setSize(w, h);          //设置大小
        setVisible(true);       //设置成为可见
        setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置点x为释放当前窗口
    }
    void init(String s){
        setTitle(s);
        menubar = new JMenuBar();           	//创建菜单条
        menu = new JMenu("菜单");           	//创建菜单
        subMenu = new JMenu("子菜单");      	//创建子菜单
        item1 = new JMenuItem("菜单项1"); 		//创建菜单项1
        item2 = new JMenuItem("菜单项2"); 		//创建菜单项2
        item1.setAccelerator(KeyStroke.getKeyStroke('A'));  //给菜单项1设置一个快捷键A
        item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));  //给菜单项2设置一个快捷键ctrl+s
        menu.add(item1);    		//将菜单项1加入到菜单menu中
        menu.addSeparator();		//菜单中加入横线分隔符号
        menu.add(item2);    		//将菜单项2加入到菜单中
        menu.add(subMenu);  		//将子菜单加入到菜单中
        subMenu.add(new JMenuItem("子菜单里的菜单项")); //创建一个菜单项加入到子菜单中
        menubar.add(menu);  		//将菜单加入到菜单条中
        setJMenuBar(menubar);		//创建菜单条
    }
}

Main.java

public class Main{
    public static void main(String args[]){
        WindowMenu win = new WindowMenu("带窗口的菜单", 1000,500,200, 190);
    }
}

3.常用组件、容器与布局

1.常用组件

1.文本框

使用JTextField类创建文本框,运行用户在文本框中输入单行文字

2.文本区

使用JTexArea类创建文本区,允许用户在文本区输入多行文本

3.按钮

使用JButton类创建按钮,允许用户单击按钮

4.标签

JLable

5.复选框

JCheckBox 为用户提供多种选择

6.单选按钮
7.下拉列表
8.密码框

JPasswordField类
密码框的默认回显字符是 ’ * ’
可以使用setEchoChar(char c)重新设置回显字符

2.常用容器

1.JPanel面板

默认使用FlowLayout布局

2.滚动窗格

一次只能添加一个组件,可以把一个组件放到一个滚动窗格中,然后通过滚动条来观看该组件

3.拆分窗格

水平拆分、垂直拆分

4.分层窗格

如果添加到容器中的组件经常需要处理重叠问题(蜘蛛纸牌),就可以考虑使将组件添加到分层窗格中

3.常用布局

容器可以使用方法 setLayout(布局对象)

一、布局管理器所属类包
所属类包布局管理器名称说明
Java.awtFlowLayout(流式布局)组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列
BorderLayout(边界布局)容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。
GridLayout(网格布局)容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。
CardLayout(卡片布局)如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况
GridBagLayout(网格包布局)GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格
Java.swingBoxLayout(箱式布局)允许在容器中纵向或者横向防止多个控件
SprigLayout(弹簧布局)根据一组约束条件放置控件
空布局不使用布局管理器,按照控件自身提供的大小、位置信息放置控件
二、容器的默认布局管理器
容器默认布局方式
顶层容器JFrameBorderLayout(边界布局)
JDialogBorderLayout(边界布局)
JAppletFlowLayout(流式布局)
中间容器JPanelFlowLayout(流式布局)
三、FlowLayout(流式布局)

使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。

1、流式布局特征如下:

l 组件按照设置的对齐方式进行排列

l 不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列)

2、流式布局FlowLayout类的常用构造函数和方法
构造函数
名称用途
FlowLayout()构造一个新的 FlowLayout,它是默认居中对齐的,默认的水平和垂直间隙是5个像素
FlowLayout(int align)构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个像素 五个参数值及含义如下: 0或FlowLayout.lEFT ,控件左对齐 1或FlowLayout.CENTER ,居中对齐 2或FlowLayout.RIGHT ,右对齐 3或FlowLayout.LEADING,控件与容器方向开始边对应 4或FlowLayout.TRAILING,控件与容器方向结束边对应 如果是0、1、2、3、4之外的整数,则为左对齐
FlowLayout(int align, int hgap, int vgap)创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。
方法
名称用途
Void setAlignment(int align)设置此布局的对齐方式。
void setHgap(int hgap)设置组件之间以及组件与 Container 的边之间的水平间隙。
void setVgap(int vgap)设置组件之间以及组件与 Container 的边之间的垂直间隙。

4. 处理事件

1. 处理事件模式

1. 事件源
2. 监视器

addActionListener(监视器)

3. 处理事件的接口

2. ActionEvent 事件

1. ActionEvent 事件源
  • 文本框或密码框 java运行环境自动用ActionEvent类创建一个对象,触发 ActionEvent事件
  • 按钮和单选按钮 单击就会触发ActionEvent事件
  • 菜单项 选中菜单项,就会触发ActionEvent事件
2. 注册监视器

addActionListener(ActionListener Listen)

3. ActionListener 接口

ActionListener接口在java.awt.event包中,该接口中只有一个方法:

public void actionPerfromed(ActionEvent e)

事件源触发 ActionEvent 事件后,监视器调用接口中的方法 actionPerfromed(ActinEvent e)

对发生的事件做出处理,同时ActionEvent类事先按创建的事件对象就会传递给参数e

4. ActionEvent 类中的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值