第十六章图形用户界面编程(GUI)

本文详细介绍Java中GUI编程的基础知识,包括AWT和Swing组件的使用、布局管理器的选择与配置,以及事件处理模型等内容。通过实例展示如何创建基本的窗口应用程序,并介绍各种常用的界面元素及其特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.根据比较,显示相应信息在中间面板的信心栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值