Java学习笔记(四)

十七、图形化界面-Swing

    在Java中所有的Swing都保存在javax.swing包中

    组件:JComponent

        常用的组件是JButton、JLabel、JTextField

    容器:Container

        所有的组件都应该放到容器之中。在容器之中,所有的组件都可以设置在容器中的位置、大小等等

        常用的容器是JFrame、JDialog、JPanel、JScrollPane(滚动条)

    布局管理器:LayoutManager

        使用布局管理器可以使容器中的组件按照指定的位置进行摆放,另外的一个好处是,即使容器改变了大小,布局管理器也可以准确的把组件放到指定的位置,这样就可以有效的保证版面不会混乱。

        常用的有FlowLayout、GridLayout

    (一) 容器之JFrame(java.swing.JFrame)

        背景颜色的设置利用Color.颜色英文大写(导包java.awt.Color)

        补充:Dimension类(java.awt.Dimension)

                    Point类:(java.awt.Point)

        (二) 组件之JLabel(java.swing.JLabel)

            JLabel组件表示的是一个标签,本身是用于显示信息的,一般情况下是不能直接更改其显示内容的。创建完的Label对象可以通过容器(比如JFrame)中的add()方法加入到容器之中。

            补充Font类(java.awt.Font)

//例子:
public static void main(String args[]) {
		JFrame frame = new JFrame("Welcome To MLDN") ;	// 实例化窗体对象
		JLabel lab = new JLabel("MLDN", JLabel.CENTER);// 实例化对象,使用居中对齐
		Font fnt = new Font("Serief", Font.ITALIC + Font.BOLD, 28);
		lab.setFont(fnt) ;	
		lab.setForeground(Color.RED) ;			// 设置标签的文字颜色
		frame.add(lab) ;					// 向容器中加入组件
		Dimension dim = new Dimension() ;			// 实例化Dimension对象
		dim.setSize(200, 70) ;				// 设置大小
		frame.setSize(dim) ;				// 设置组件大小
		frame.setBackground(Color.WHITE) ;			// 设置窗体的背景颜色
		Point point = new Point(300,200) ;			// 设置显示的坐标点
		frame.setLocation(point) ;				// 设置窗体的显示位置
		frame.setVisible(true) ;				// 让组件显示
	}

        (三) 组件之JButton(java.swing.JButton)

        (四) 组件之单行文本输入框JTextField(java.swing.JTextField)

        (五) 组件之密码文本输入框JPasswordField(java.swing.JPasswordField)

                             

        (六) 组件之多行文本输入框JTextArea(java.swing.JTextArea)

//例子(为文本域加入滚动条):
public static void main(String args[]) {
		JFrame frame = new JFrame("Welcome To MLDN") ;	// 实例化窗体对象
		JTextArea jta = new JTextArea(3,20) ;		// 构造一个文本域
		jta.setLineWrap(true) ;			// 如果内容过长,自动换行
		// 在文本域上加入滚动条,水平和垂直滚动条始终出现
		JScrollPane scr = new JScrollPane(jta,
				JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
				JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		JLabel lab = new JLabel("多行文本域:") ;		// 定义标签
		frame.setLayout(new GridLayout(2,1));		// 设置布局管理器	
		frame.add(lab) ;				// 向容器中增加组件
		frame.add(scr) ;				// 向容器中增加组件
		frame.setSize(300, 150) ;			// 设置窗体大小
		frame.setLocation(300,200) ;			// 设置窗体的显示位置
		frame.setVisible(true) ;			// 让组件显示
	}

      (七) 布局管理器之FlowLayout(java.awt.FlowLayout)

                组件像流水一样依次进行排列

                        

        (八) 布局管理器之BorderLayout(java.awt.BorderLayout)

            将一个窗体的版面划分成东、西、南、北、中五个区域,可以直接将需要的组件放到这五个区域中即可。

        (九) 布局管理器之GridLayout(java.awt.GridLayout)

                    表格式存放组件


        (十) 布局管理器之绝对定位

                              

        (十一) JMenu、JMenuBar、JMenuItem

                JMenu由JMenuItem组成,JMenuBar由JMenu组成。

                                     

                                     

                                      

//例子:
public static void main(String[] args) {
		JFrame frame = new JFrame("Welcome To MLDN"); 	// 定义窗体
		JTextArea text = new JTextArea(); 		// 定义文本域
		text.setEditable(true); 			// 定义文本组件可编辑
		frame.getContentPane().add(new JScrollPane(text)); // 在面板中加入文本框及滚动条
		JMenu menuFile = new JMenu("文件");			// 定义JMenu组件
		menuFile.setIcon(new ImageIcon("d:" + File.separator + "icons"+ File.separator + "file.gif"));// 定义显示图标
		JMenuBar menuBar = new JMenuBar(); 					// 定义JMenuBar
		JMenuItem newItem = new JMenuItem("新建", 
			new ImageIcon("d:" + File.separator + "icons" + File.separator + "new.gif"));	// 创建JMenuItem
		JMenuItem openItem = new JMenuItem("打开", 
			new ImageIcon("d:" + File.separator + "icons" + File.separator + "open.gif"));	// 创建JMenuItem
		JMenuItem closeItem = new JMenuItem("关闭", 
			new ImageIcon("d:" + File.separator + "icons" + File.separator + "close.gif"));	// 创建JMenuItem
		JMenuItem exitItem = new JMenuItem("退出", 
			new ImageIcon("d:" + File.separator + "icons" + File.separator + "exit.gif"));	// 创建JMenuItem
		newItem.setMnemonic('N') ;						// 设置快捷键N
		openItem.setMnemonic('O') ;					// 设置快捷键O
		closeItem.setMnemonic('C') ;					// 设置快捷键C
		exitItem.setMnemonic('E') ;					// 设置快捷键E
		newItem.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK));		// Ctrl + N
		openItem.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK));		// Ctrl + O
		closeItem.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.ALT_MASK));		// Alt + C
		exitItem.setAccelerator(KeyStroke.getKeyStroke('E',	java.awt.Event.ALT_MASK));		// Alt + E
		menuFile.add(newItem) ;					// 加入菜单项
		menuFile.add(openItem) ;					// 加入菜单项
		menuFile.add(closeItem) ;					// 加入菜单项
		menuFile.addSeparator() ;					// 加入分隔线
		menuFile.add(exitItem) ;					// 加入菜单项
		menuBar.add(menuFile);					// 加入JMenu
	}

         (十二) 事件处理

                             

            首先,对于某种类型的事件XXXEvent,要想接收并处理该类事件,必须定义相应的事件监听器类,这个类需要实现针对该类事件的特定接口XXXListener。

            其次,事件监听器类要实现该接口XXXListener中对事件处理的方法。

            第三,对于事件源,必须使用addXXXListener(XXXListener)注册事件监听器类,以便当事件产生时,能够被监听器接收和处理。

            常见的事件监听:


            在整个事件处理中Java提供了很多的适配器类XXXAdapter,方便用户进行事件的处理,如果只想覆写一两个方法,就可以用适配器类作为匿名内部类使用。

十八、泛型

    泛型类定义格式:

        [访问权限] class 类名称<泛型类型1,泛型类型2,…泛型类型3>{

                     [访问权限] 泛型类型标识 变量名称 ;

                     [访问权限] 泛型类型标识 方法名称(){} ;

                     [访问权限] 返回值类型声明 方法名称(泛型类型标识 变量名称){} ;}

     泛型对象定义:

            类名称<具体类> 对象名称 =new 类名称<具体类>() ;

     泛型方法的简单定义:

            [访问权限] <泛型标识> 泛型标识方法名称([泛型标识 参数名称])

     Collection(类集): 一组单独元素集合

            List :保存的对象有顺序,按照元素的索引位置检索对象。允许重复元素。

            Set :不允许保存重复的元素。元素之间没有顺序。靠元素值检索对象。

            List中最主要的是动态数组(ArrayList(java.util.ArrayList))










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值