java布局管理
布局管理器主要包括

布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout例3import java.awt.*;public class ExGui{private Frame f;private Button b1;private Button b2;public static void main(String args[]){ExGui that = new ExGui();that.go();}public void go(){f = new Frame("GUI example");f.setLayout(new FlowLayout());//设置布局管理器为FlowLayoutb1 = new Button("Press Me");//按钮上显示字符"Press Me"b2 = new Button("Don't Press Me");f.add(b1);f.add(b2);f.pack();//紧凑排列,其作用相当于setSize(),即让窗口尽量小,小到刚刚能够包容住b1、b2两个按钮f.setVisible(true);}}查看运行结果1. FlowLayoutFlowLayout 是Panel,Applet的缺省布局管理器。
其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。
构造方法主要下面几种:FlowLayout(FlowLayout.RIGHT,20,40);/*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。
JAVA基础:FlowLayout布局管理器

在前⾯的例⼦中,使⽤到了FlowLayout布局管理器。
FlowLayout型布局管理器对容器中组件进⾏布局的⽅式是将组件逐个地安放在容器中的⼀⾏上。
⼀⾏放满后就另起⼀个新⾏。
FlowLayout有三种构造⽅法: public FlowLayout() public FlowLayout(int align) public F10wLayout(int align,int hgap,int vgap) 在默认情况下,FlowLayout将组件居中放置在容器的某⼀⾏上,如果不想采⽤这种居中对齐的⽅式,考试,⼤提⽰FlowLayout的构造⽅法中提供了⼀个对齐⽅式的可选项align。
使⽤该选项,可以将组件的对齐⽅式设定为左对齐或者右对齐。
align的可取值有FlowLayout.LEFT,FlowLayout.RIGHT和FlowLayout.CENTER三种形式,它们分别将组件对齐⽅式设定为左对齐、右对齐和居中,例如: new FlowLayout(FlowLayout.LEFT)这条语句创建了⼀个使⽤左对齐⽅式的FlowLayout的实例。
此外,FlowLayout的构造⽅法中还有⼀对可选项hgap和vgap,使⽤这对可选项可以设定组件的⽔平间距和垂直间距。
与其他布局管理器不同的是,FlowLayout布局管理器并不强⾏设定组件的⼤⼩,⽽是允许组件拥有它们⾃⼰所希望的尺⼨。
注意:每个组件都有⼀个getPreferredSize()⽅法,容器的布局管理器会调⽤这⼀⽅法取得每个组件希望的⼤⼩。
下⾯是⼏个使⽤setLayout()⽅法实现FlowLayout的例⼦: setLayout(new FlowLayout(FlowLayout.RIGHT,20,40)); setLayout(new FlowLayout(FlowLayout.LEFT)); setLayout(new FlowLayout());。
浅谈Java布局管理器及其应用

Ca ao tFo au 等 。 图 1中 每 一 个 容 器 都 有 r y u、lwLo t L Ly u 属性 ,可 以在 对象 监 视 器 中 定义 布局 管 理 器 ao t
类型 , 如图 2 所示 。 2 Y ao t . X Ly u 布局管理器 1 这个布局管理器与其他开发工具 的窗体设计器
1112或 支 持 它 们 的 G 开 发 T. 如 : ule、 .、. UI 具 j i r b d
VsaAg r aa等等 。 i l ef v u oI 现在 就 以 fule 开 发 T具 bi r d 详 细说 明 AWT 中提 供 的 多种 布局 管 理 器 ,如 XY—
La o 、 r e La out fd y y ut Bo d r y G i La out rd g y G i Ba La out
工具 , 解决硬性设置组件而造成布局混乱的问题 , 这 就是布局管理器 (ao t ngr Ly u Maae 。 ) 在整 个 A T中 , 基 本 的关 系 就是 构 件 、 W 最 容器
维普资讯
一
一
一
Ja a 布局管理 v
新疆 天择数码科 技有 限公
摘
要
本 文 阐述 了Jv aa中的 布局 管 理 器在 开发 跨 平 台语 言的 重要 性 , 细 介 绍 了布局 管 理 详
器 的类 型 、 点及 其使 用方 法 , 特 列举 了 Jv 布 局 管理 器应 用 实例 。 aa
维普资讯
组 件 名称 , 回值 Байду номын сангаас C mp nn。 返 o o et
下 面我们 举 个 例子 看 如 何使 用 B r eLy u 布 od r ao t
Java AWT布局管理器使用技巧

Java AWT布局管理器使用技巧
玛依拉;王克宏
【期刊名称】《微型机与应用》
【年(卷),期】1999(018)005
【摘要】JavaAWT中的布局管理器以及对在何时使用何种布局管理器进行了详细地介绍。
【总页数】3页(P35-36,49)
【作者】玛依拉;王克宏
【作者单位】新疆农业大学计算中心;北京清华大学计算机科学与技术系
【正文语种】中文
【中图分类】TP312JA
【相关文献】
1.浅谈Java布局管理器及其应用 [J], 岳希华
2.布局管理器在Java程序设计中的应用 [J], 谢懿;王学军;张清涛
3.Java布局管理器在GUI设计中的应用 [J], 李利;王秀峰
4.谈谈Java中的布局管理器 [J], 潘国荣
5.关于Java2的网袋布局管理器GridBagLayout [J], 孙燮华
因版权原因,仅展示原文概要,查看原文内容请购买。
Java的GUI设计打造美观直观的用户界面

Java的GUI设计打造美观直观的用户界面Java是一种广泛使用的编程语言,拥有着强大的图形用户界面(GUI)设计能力。
通过使用Java提供的各种GUI库和工具,开发人员可以轻松地创建美观、直观的用户界面。
本文将介绍一些在Java中实现这样的GUI设计的方法和技巧。
一、选择合适的GUI库在Java中,有多个GUI库可供选择,比如Swing、JavaFX等。
选择合适的GUI库是设计美观直观界面的第一步。
Swing是一个成熟的GUI库,提供了丰富的组件和布局管理器,可以满足大部分GUI设计需求。
JavaFX是Java官方推荐的GUI库,它提供了更现代化的界面设计风格和更优秀的性能。
二、使用布局管理器布局管理器是GUI设计中重要的一环,它定义了组件在窗口中的位置和大小。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout等。
通过合理选择和组合这些布局管理器,可以实现各种复杂的界面布局。
三、使用合适的图标和图片图标和图片在GUI设计中起着很重要的作用,可以通过它们来提升用户界面的美观性和直观性。
Java提供了处理图标和图片的功能和类库,开发人员可以使用这些功能来加载、处理和显示各种图标和图片。
四、使用合适的颜色和字体颜色和字体也是GUI设计中非常重要的元素,可以用来强调界面的重要信息或者创建特定的视觉效果。
Java提供了各种颜色和字体的类库和功能,可以用来选择合适的颜色和字体样式。
五、增加交互性一个好的用户界面应该具有良好的交互性,能够方便用户进行操作。
Java提供了丰富的事件处理机制和监听器,可以实现交互性功能。
开发人员可以通过监听用户的操作,及时响应并更新界面,实现更好的用户体验。
六、进行界面美化除了以上的基本设计原则,开发人员还可以通过一些额外的技巧来进一步美化用户界面。
比如使用渐变色背景、添加阴影效果、使用动画效果等。
这些技巧可以使界面更加生动、有趣,并提升用户的整体体验。
JAVA SWING 4中布局方式

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水 平和垂直间隙。
方法摘要
void
addLayoutComponent(String name, Component comp) addLayoutComponent 将指定的组件添加到布局中。 getAlignment() getAlignment 获取此布局的对齐方式。 getAlignOnBaseline() getAlignOnBaseline 如果组件将沿其基线垂直对齐,则返回 true。 getHgap() getHgap 获取组件之间以及组件与 Container 的边之间的水平间 隙。
构造方法摘要
BorderLayout() BorderLayout 构造一个组件之间没有间距的新边框布局。 BorderLayout(int hgap, int vgap) BorderLayout 构造一个具有指定组件间距的边框布局。
方法摘要
void
addLayoutComponent(Component comp, Object constraints) addLayoutComponent 使用指定的约束对象将指定组件添加到布局中。 addLayoutComponent(String name, Component comp) addLayoutComponent 已过时。 已过时。 由 addLayoutComponent(Component, Object)
float
float
Component getLayoutComponent getLayoutComponent(Container target, Object constraints)
Component getLayoutComponent getLayoutComponent(Object constraints)
java设置组件位置的方法
java设置组件位置的方法
在Java的Swing库中,可以使用各种方法来设置组件的位置。
以下是一些常见的方法:
1. `setBounds(int x, int y, int width, int height)`: 这个方法可以设置组件的位置和大小。
x和y参数定义了组件左上角的位置,width和height参数定义了组件的宽度和高度。
```java
(50, 50, 200, 200);
```
2. `setLocation(int x, int y)`: 这个方法可以设置组件的位置。
x和y参数定义了组件左上角的位置。
```java
(50, 50);
```
3. `setLayout(LayoutManager layout)`: 这个方法可以设置组件的布局管
理器。
布局管理器决定了组件如何在容器中定位。
```java
(new FlowLayout());
```
4. `setPreferredSize(Dimension size)`: 这个方法可以设置组件的首选大小。
首选大小用于计算布局。
```java
(new Dimension(200, 200));
```
5. `pack()`: 这个方法用于调整窗口大小以适应其内容。
它会自动调整窗口的大小,使其恰好能容纳其子组件。
请注意,使用`setBounds()`方法设置的组件位置和大小是在绝对布局中使
用的,也就是说,它们不依赖于布局管理器。
而使用`setLayout()`方法设置的布局管理器则决定了组件如何在容器中定位。
JavaGUI布局管理器
JavaGUI布局管理器容器可设置布局管理器,管理容器中组件的布局:container.setLayout(new XxxLayout());Java有6种布局管理器,AWT提供了5种:FlowLayoutBorderLayoutGridLayoutGridBagLayoutCradLayoutSwing还提供了⼀种:BoxLayout1、FlowLayout 流式布局顾名思义,组件像⽔流⼀样,从第⼀⾏开始,从左向右依次排列,碰到边界时转到下⼀⾏继续。
三个构造函数:FlowLayout() //使⽤默认参数FlowLayout(int align) //设置对齐⽅式FlowLayout(int align,int hgap,int vgap) //设置对齐⽅式、⽔平间距、垂直间距align是FlowLayout类的常量,⽐如:FlowLayout.LEFT,FlowLayout.CENTER2、BorderLayout 边界布局将容器划分为EAST、WEST、SOUTH、NORTH、CENTER五个部分,每个部分可放置⼀个组件。
2个构造函数:BorderLayout() //使⽤默认参数BorderLayout(int hgap,int vgap) //设置⽔平间距、垂直间距放置组件时需指定位置:container.add(Component comp, Borderlayout.SOUTH); //第⼆个参数是BorderLayout类的常量,指定组件位置container.add(Component comp); //缺省位置时,默认为BorderLayout.CENTER,放在中间⼀共5个位置,⼀个位置最多放1个组件。
当然,可以在⼀个位置放置多个组件,只是后放置的组件会覆盖之前放置的组件。
也可以⼀个都不放。
3、GridLayout ⽹格布局将容器划分为指定⾏数、列数的⽹格,每个格⼦的尺⼨都相同,⼀个格⼦中放置⼀个组件,适合组件⼤⼩差不多的,⽐如放置计算器的按钮。
java自动化部署方案
Java自动化部署方案概述随着软件开发的快速发展,以及云计算和DevOps的兴起,自动化部署成为了现代软件开发流程中不可或缺的一环。
Java作为一种常用的编程语言,有许多自动化部署方案可供选择。
本文将介绍几种常见的Java自动化部署方案,并分析它们的特点和优缺点。
1. Apache MavenApache Maven 是一个流行的构建工具,它使用基于XML的项目对象模型(POM)来定义项目结构和依赖关系。
Maven 提供了一种可靠和一致的构建过程,可以自动下载依赖库并构建项目。
通过 Maven,可以很方便地构建、测试和打包Java 应用程序。
Maven 的自动化部署是通过 maven-deploy-plugin 插件实现的。
该插件可以将编译后的 Java 代码打包成可执行的JAR文件,并部署到 Maven 仓库中。
其他开发人员可以通过在自己的项目中指定相应的依赖来使用这个 JAR 文件。
使用 Maven 进行自动化部署的优点是易于使用和配置,可以与其他 Maven 插件无缝集成。
但是,当项目规模较大、复杂时,由于 Maven 需要下载大量的依赖库,构建过程可能较慢。
2. JenkinsJenkins 是一个强大的开源持续集成(CI)工具,可以实现自动化构建、测试和部署。
它提供了一个可视化的界面,允许用户配置和管理各个构建任务。
Jenkins 可以通过使用插件来支持 Java 项目的自动化部署。
例如,可以使用Jenkins 的 Maven 插件来触发 Maven 构建和部署。
此外,Jenkins 还支持其他构建工具和持续部署工具,如 Gradle、Ant、Docker 等。
使用 Jenkins 进行自动化部署的优点是可以轻松配置和管理多个构建任务,支持各种构建工具和部署策略。
它还提供了丰富的插件生态系统,可以扩展和定制自动化部署流程。
然而,Jenkins 的配置和管理可能相对复杂,并且需要额外的硬件资源。
JAVA图形界面各种布局及使用方法
1.布局对于JFrame窗口,默认布局是BorderLayout布局。
对于JPanel,默认布局是FlowLayout布局。
容器可以使用方法:setLayout(布局对象);来设置自己的布局。
(1)FlowLayout布局FlowLayout类创建的对象称做FlowLayout型布局。
FlowLayout类的一个常用构造方法如下:FlowLayout()该构造方法可以创建一个居中对齐的布局对象。
例如:FlowLayout flow=new FlowLayout();如果一个容器con使用这个布局对象:con.setLayout(flow);那么,con可以使用Container类提供的add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列。
FlowLayout布局对象调用flow.setAlignment(FlowLayout.LEFT);来设置组件靠左对齐FlowLayout布局对象调用setHgap(int hgap) 方法和setVgap(int vgap)可以重新设置布局的水平间隙和垂直间隙。
(2)BorderLayout布局BorderLayout 布局是Window型容器的默认布局,例如JFrame、JDialog都是Window类的间接子类,它们的默认布局都是BorderLayout 布局。
容器使用BorderLayout 布局,那么容器空间简单地划分为东、西、南、北、中五个区域。
每加入一个组件都应该指明把这个组件添加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示.添加到某个区域的组件将占据整个这个区域。
每个区域只能放置一个组件,如果向某个已放置了组件的区域再放置一个组件,那么先前的组件将被后者替换掉。
(3)CardLayout 布局使用CardLayout 的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,这个被显示的组件将占据所有的容器空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的:(详见指导书,宋体小四)掌握Java图形Swing组件和布局管理器的使用;掌握使用Java事件处理机制的使用。
掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。
二、实验要求:(详见指导书,宋体小四)1.采用布局管理器进行界面的布局;2. 学会对不同的事件用相应的事件处理器;3.写出实验报告。
要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。
(附运行界面、源代码)。
三、实验内容及过程:(宋体小四,)1.编写Application程序,在JFrame中加入2个按钮(JButton)和1个标签(Label),单击两个按钮,显示按钮的标签于Label。
过程:首先建立一个主类,让主类继承JFrame 类实现 ActionListener 接口。
然后在主类中声明变量JButton ,JPanel。
创建一个面板panel然后在创建两个按钮,面板使用流式布局,然后将两个按钮添加到面板中,再将面板添加到窗体的上部。
然后在建立一个标签,将标签添加到窗体的下方。
最后要在两个按钮失眠分别添加监听器,保证当触动按钮时按钮上的字体能够出现在标签上。
2.在JApplet中加入1个文本框,1个文本区,每次在文本框中输入文本,回车后将文本添加到文本区的最后一行。
过程:首先创建一个窗体,窗体里插入一个文本框和一个文本区,分别将文本框放在窗体的上方,文本区放在窗体的下方。
重点就是在文本框上添加一个键盘监听器,保证当触动Enter键时能够将文本框中的内容复制到文本区中即可。
3.设计一个简单计算器,如下图所示。
在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。
过程:首先创建一个窗体,窗体中含有七个组将,分别是三个可编辑文本框,四个按钮,按钮上分别是+、-、*、/,三个文本框中上面两个用来存储操作数,最后一个用来存储操作结果。
要在四个按钮上添加监听器,保证当触动对应的按钮时就能够产生对应的操作,得到正确的结果。
4.编写Application程序,在JFrame中加入80个按钮,分20行4列,用GridLayout布局方式,按钮背景为黄色(Color.yellow),按钮文字颜色为红色(Color.red)。
过程:首先创建一个窗体,窗体中使用的格式布局,由于是80个按钮,所以控制20行4列,而且按钮的数目太多,所以使用for 循环进行控制。
最后要注意按钮的背景颜色是黄色,字母颜色第红色,所以调用函数but.setBackground(Color.yellow);以及but.setForeground(Color.red)分别用来控制按钮的背景颜色和字母颜色。
5.编写Java JApplet程序,使它在浏览器中通过响应功能按钮的点击事件绘制各种简单的几何图形(矩形、圆形、扇形、多边形和他们的填充效果),并且能够通过接收传递参数控制图形的绘制。
过程:首先定义一个主类继承JApplet实现ActionListener接口,在窗体中添加四个按钮,按钮分别命名为“矩形”,“圆”,“扇形”,“多边形”,然后实例化一个Graphics 类的对象g,调用g.drawLine()绘制矩形,调用g.drawArc,并通过控制角度分别用来绘制圆以及扇形,调用drawLine(),并定义两个整数数组,分别用来表示x轴和y轴,每个数组都有五个元素。
调用setColor()以及fillArc(),fillLine()分别用来对矩形,圆...进行颜色的填充。
四、实验中的问题思考及讨论:(列出你实验中出现的问题,及解决的问题和解决的思路)实验一:注意把两个按钮添加到面板中,面板应该使用流式布局。
实验二:注意监听事件中的键盘监听事件,题目中要求必须是按Enter键才会把文本框中的字母传到文本区中,所以此处调用函数e.getKeyChar()==e.VK_ENTER.实验三:这一个题目中的监听器比较多,所以在重写监听器里面的函数时需要注意不要出现低级错误。
实验四:这个实验就是单纯的创建一个窗体,然后向里面增加80个按钮,在这里用到了for循环就简单的多了,注意填充背景颜色以及字母颜色是调用函数setBackground().setForeground()实验五:这个实验就是在窗体中绘制五种图像,并且每个图形的背景颜色不同,其实总的来说调用的函数并不是很多,主要是绘制直线的函数drawLine(),绘制曲线的函数drawArc(),以及确定颜色的函数setColor()还有起到填充作用的函数fillArc(),fillLine().五、实验总结:(简单、准确的总结本次实验的主要内容,个人收获)这次试验用到的只是主要是监听器和绘制图形的函数,相对来说监听器的使用难度更大,而绘制图形的函数相对单调。
通过本次试验我更加熟悉掌握了监听器的使用,以及绘制图形函数的使用。
六、源代码及运行结果实验一:package javaTest;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;public class Gui_12 extends JFrame implements ActionListener{JButton[] but=new JButton[2];JLabel lab;JPanel panel;public void init(){setLayout(new BorderLayout());panel=new JPanel();panel.setBounds(0,0,400,200);panel.setLayout(new FlowLayout());but[0]=new JButton("确定");but[1]=new JButton("取消");lab=new JLabel();getContentPane().add(BorderLayout.SOUTH,lab);for(int i=0;i<2;i++){but[i].addActionListener(this);panel.add(but[i]);}getContentPane().add(BorderLayout.NORTH,panel);setBounds(400,200,400,300);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==but[0]){lab.setText("");String str=but[0].getText();lab.setText(str);}if(e.getSource()==but[1]){lab.setText("");String str=but[1].getText();lab.setText(str);}}public static void main(String[] args) {// TODO Auto-generated method stubnew Gui_12().init();}}实验二:package javaTest;import javax.swing.*;//import java.awt.*;import java.awt.event.*;public class Gui_3{public static void main(String[] args){JFrame frm=new JFrame("窗体");frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(null);JTextField input=new JTextField(25);input.setEditable(true);input.setBounds(45,5,400,40);frm.getContentPane().add(input);JTextArea output=new JTextArea(6,25);output.setBounds(45,60,400,200);frm.getContentPane().add(output);A b=new A(input,output);input.addKeyListener(b);frm.setBounds(400,200,500,400);frm.setVisible(true);}}class A implements KeyListener{JTextField input;JTextArea output;public A(JTextField input,JTextArea output) {this.input=input;this.output=output;}public void keyPressed(KeyEvent e ){if(e.getKeyChar()==e.VK_ENTER){String s=input.getText();output.setText(s);}}public void keyReleased(KeyEvent e){}public void keyTyped(KeyEvent e){}}实验三:package javaTest;import javax.swing.*;//import java.awt.*;import java.awt.event.*;public class Gui_6{public static void main(String[] args){JFrame frm=new JFrame("窗体");frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(null);JLabel label1=new JLabel("操作数");label1.setBounds(10,20,60,30);JTextField input1=new JTextField();input1.setEditable(true);input1.setBounds(80,20,100,30);frm.add(label1);frm.add(input1);JLabel label2=new JLabel("操作数");label2.setBounds(10,80,100,30);JTextField input2=new JTextField();input2.setEditable(true);input2.setBounds(80,80,100,30);frm.add(label2);frm.add(input2);JLabel label3=new JLabel("结果");label3.setBounds(10,140,100,30);JTextField input3=new JTextField();input3.setEditable(true);input3.setBounds(80,140,100,30);frm.add(label3);frm.add(input3);JButton but1=new JButton("+");but1.setBounds(250,20,100,30);frm.add(but1);JButton but2=new JButton("-");but2.setBounds(250,60,100,30);frm.add(but2);JButton but3=new JButton("*");but3.setBounds(250,100,100,30);frm.add(but3);JButton but4=new JButton("/");but4.setBounds(250,140,100,30);but1.addActionListener(new S(input1,input2,input3,but1,but2,but3,but4));but2.addActionListener(new S(input1,input2,input3,but1,but2,but3,but4));but3.addActionListener(new S(input1,input2,input3,but1,but2,but3,but4));but4.addActionListener(new S(input1,input2,input3,but1,but2,but3,but4));frm.add(but4);frm.setBounds(400,200,400,300);frm.setVisible(true);}}class S implements ActionListener{JTextField input1;JTextField input2;JTextField input3;JButton but1;JButton but2;JButton but3;JButton but4;int x,y;public S(JTextField input1,JTextField input2,JTextField input3,JButton but1,JButton but2,JButton but3,JButton but4){this.input1=input1;this.input2=input2;this.input3=input3;this.but1=but1;this.but2=but2;this.but3=but3;this.but4=but4;}public void actionPerformed(ActionEvent e2){try{int x=Integer.parseInt(input1.getText());int y=Integer.parseInt(input2.getText());if(e2.getSource()==but1)input3.setText(""+(x+y));if(e2.getSource()==but2)input3.setText(""+(x-y));if(e2.getSource()==but3)input3.setText(""+(x*y));if(e2.getSource()==but4)input3.setText(""+(x/y));}catch(NumberFormatException e){input3.setText("数字格式异常");}}}实验四:package javaTest;import javax.swing.*;import java.awt.*;public class Gui_4{public static void main(String[] args){JFrame frm=new JFrame("网格布局");frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(20,4));for(int i=0;i<80;i++){JButton but=new JButton("确定"+i);but.setBackground(Color.yellow);but.setForeground(Color.red);frm.getContentPane().add(but);}frm.setBounds(400,100,500,600);frm.setVisible(true);}}实验五:package AppletTest;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.Polygon;import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JApplet;import javax.swing.JButton;public class AppletTest_4 extends JApplet implements ActionListener{ JButton[] but=new JButton[4];public void init(){setLayout(new FlowLayout());but[0]=new JButton("画矩形");but[1]=new JButton("画圆");but[2]=new JButton("画扇形");but[3]=new JButton("画多边形");for(int i=0;i<4;i++){but[i].addActionListener(this);getContentPane().add(but[i]);}}public void actionPerformed(ActionEvent e){Graphics g=this.getGraphics();if(e.getSource()==but[0]){g.setColor(Color.red);g.drawLine(100, 50, 100, 60);g.fillRect(100, 50, 100, 60);}if(e.getSource()==but[1]){g.setColor(Color.green);g.drawArc(300, 200, 100, 100, 0, 360);g.fillArc(300, 200, 100, 100, 0, 360);}if(e.getSource()==but[2]){g.setColor(Color.black);g.drawArc(300,50, 100, 100, 0, 120);g.fillArc(300,50,100,100,0,120);}if(e.getSource()==but[3]){Polygon p=new Polygon();int[] x=new int[5];int[] y=new int[5];x[0]=200;x[1]=300;x[2]=300;x[3]=250;x[4]=200;y[0]=50;y[1]=50;y[2]=100;y[3]=150;y[4]=100;p.xpoints=x;p.ypoints=y;p.npoints=5;g.setColor(Color.blue);g.fillPolygon(x, y, 5);g.drawPolygon(p);}}}。