1.GUI容器和组件
- AWT包(抽象窗口工具):包括容器,组件,颜色,字体
- Swing包():在AWT基础上重新设计了容器,组件
- SWT= Swing+AWT
- 首层容器分四种:JWindow,JFane,JOptionPane,JApplet
-
中间容器
-
输入对话框:String inputName = JOptionPane.showInputDiajog("请输入你的名字");
- 确认对话框:int choiec = JOptionPane.showConfifrmDiajog(null,"你确定吗?");
- 消息框:JOptionPane.showMessageDiajog(null,);
JFrame:
public classs MyFrame extends JFrame{ private Conntainer contentP //内容面板 public MyFrame (){ Toolkit tk = Toolkit.getDefaultToolkit();//工具类--很常用,可以获取屏幕信息还可以操作图标图片 (int)(tk.getScreenSize().getWidth()); (int)(tk.getScreenSize().getHight()); this.setTitle("标题")//设置标题 this.setIconImage(tk.createImage("文件夹\图片名.jpg"));//设置图标 this.setSize(500,300);//尺寸初始发(宽500.高300) this.setLocatuon(100,100)//位置设置(x,y轴) this.seResizable(false);//设置窗体大小不可变 this.setDdefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体设置为关闭程序 this. this.setVisible(true);//设置窗体可见--一定放到构造方法最后一句 } private void addContent(){//专门用来操作内容面板上的东西 this.contentP = this.getCntentpane//获取内容面板 this.contentP.setBackground(new Color.RED);//获取颜色 this.contentP.setBackground(new Color(12,21,32));//获取颜色(括号中调用三颜色的值) } }
组件:Selected(true)默认的
JLabel(标签),特点是:命名是放在对象后面如:namelab
设置内容面板的布局管理器为NUll,---使用绝对方法的方式设置组件。 放置标签步骤:1.产生对象。2.设置文本和放入字体。3.设置边框--用于调试文本。4.设置位置和大小。5.放入容器。
文本框(JTextFiled)
密码框(JPasswordfiled)特有方法:设置密码框的回显字符(get,setEchoChar();)
下拉框(JComboBox)特有的:addItem(""); SelectedIndex是指定的下标 setEditable指可以编辑
按钮(JButton) 特有:setRollover();鼠标移动图标变化。
单选框(JRadioButton)特有方法:ButtonGroup()不是组件,new一个对象,然后把按钮放入当中
多选框(JCheckBox)
文本域(JTextArea)
滚动条(JScrollPane)和文本域配合
菜单栏(JMenuBar)菜单(JMenu)菜单项(JMenuIten)是直接往窗体上方的,其他的是往内容面板上放的
2.布局管理和面板嵌套
空布局:
this.contentp.setLayout(null);
边界布局管理器(Border Layout):主要是用来放中间容器的
JFrame面板控制在默认的情况下,自动使用边界管理器,界面划分成东西南北中,南北要贯通,中间要最大。中间可以占领周边,但周边不允许占领中间的
****边界管理器不是用来放一个个组件的,而是用来放中间容器的
this.contentp.setLayout(new borderLayout(10,20));//设置边界管理器,通过参数设置水平和垂直间距 this.contentp.add(this.anniu,BorderLayout.north);//add同时添加new borderlayout,设置按钮区域
center中间 north 北边 south南 east东 west西
流布局(FLow Layout):主要用来放一行组件的
效果上流布局更适合放置组件,放置顺序为从左往右,从上往下,由中间开始,进行顺序排放,放不够换到下一行显示
大小有组件里面的内容决定。
主要适合一行组件的设置。
this.contentp.setLayout(new FlowLayout());//设置流布局管理器
网格布局(Grid Layout):主要用来放中间容器的
按照行列方式划分空间,每个空间等大,如果划分空间不够,优先保证行不变,增加列!
this.contentp.setLayout(new GridLayout(2,3))//设置网格布局管理器。标清几行几列。
卡片布局(Card Layout):用来放中间容器的-----div(层)
特性:放置层的时候或添加层的时候,第二个参是该层的别名。2.放置顺序是和add顺序是有关的默认显示第一个。
步骤:首先扥到被翻页容器的CardLayout对象,2.然后调用CardLayout对象的next()翻页,传入翻页容器。
面板嵌套:JPanel默认的管理器为流布局管理器
3.事件处理模型:事件(event)-----ActionListener ------ActionEvent
---委托事件模型是java特有的事件模型。二个对象:事件源对象和监听器对象,二者需绑定事件源和监听器,监听器有职责范围,一个事件源可以绑定多个不同职责范围的监听器,一个监听器也可以监听多个事件源
监听器实现方式一:单独书写一个监听器类,实现监听接口,重写抽象方法,可以为不同的事件源使用同一个监听器类,也可以为每个时间圆书写单独的监听器类,如果要操作窗体上的其他元素,就必须要传参。
好处:1.代码独立,任务清晰。2.使用灵活,及可以为不同的事件源书写同一个监听器类,也可以书写各自的。
坏处:1.1类的数量增加了,维护量也增加了。2.如果要操作非事件源的容器和组件必须传参。
监听器实现方式二:让容器类充当监听器,重写监听方法。
好处:操作本容器的子容器或组件不需要传参。
坏处:1.类的任务不明确。2.无法为不同的事件源书写各自的监听方法
监听器实现方式三:使用匿名内部类,在绑定的时候同时实现接口的重写
好处:1.访问本容器的子容器或组件,不传参;2.每个事件源书写各自的监听器;3.类的功能各自独立;
步骤:1.得到随机数,2.得到用于输入的文本框,3.比较随机数和文本框的输入数字,4.根据比较,显示相应信息在中间面板的信心栏