AWT和Swing的关系

1.AWT和Swing都是java中的包。

2.AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包,AWT是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。因为AWT是依靠本地方法来实现功能的,所以AWT控件称为“重量级控件”。

3.Swing 为解决 AWT 存在的问题而新开发的图形界面包,Swing是对AWT的改良和扩展。    

4.AWT和Swing的实现原理不同:

  • AWT的图形函数与操作系统提供的图形函数有着一一对应的关系。也就是说,当我们利用 AWT构件图形用户界面的时候,实际上是在利用操作系统的图形库。
  • 不同的操作系统其图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT不得不通过牺牲功能来实现平台无关性。因此,AWT 的图形功能是各操作系统图形功能的“交集”。
  • Swing ,不仅提供了AWT 的所有功能,还用纯粹的Java代码对AWT的功能进行了大幅度的扩充。

       例如:并不是所有的操作系统都提供了对树形控件的支持, Swing则利用了AWT中所提供的基本作图方法模拟了一个树形控件。
       由于 Swing是用纯粹的Java代码来实现的,因此Swing控件在各平台通用。
       因为Swing不使用本地方法,故Swing控件称为“轻量级控件”。 

 5.AWT和Swing之间的区别:
       1)AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。
       2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。

 6.实际应用中,应该使用AWT还是Swing取决于应用程序所部署的平台类型。

例如:
       1)对于一个嵌入式应用,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT当然成了嵌入式Java的第一选择。
       2)在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素。所以在标准版的Java中则提倡使用Swing, 也就是通过牺牲速度来实现应用程序的功能
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个简单的Java Swing程序,用于演示地球绕太阳转、月亮绕地球转的过程: ```java import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class SolarSystem extends JPanel implements ActionListener { private final int WIDTH = 800; private final int HEIGHT = 600; private final int EARTH_RADIUS = 30; private final int MOON_RADIUS = 10; private final int SUN_RADIUS = 50; private final double EARTH_ORBIT_RADIUS = 200; private final double MOON_ORBIT_RADIUS = 50; private double earthAngle = 0; private double moonAngle = 0; public SolarSystem() { Timer timer = new Timer(10, this); timer.start(); } @Override public void actionPerformed(ActionEvent e) { earthAngle += 0.01; moonAngle += 0.05; repaint(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); g.fillRect(0, 0, WIDTH, HEIGHT); Point center = new Point(WIDTH / 2, HEIGHT / 2); // 画太阳 g.setColor(Color.YELLOW); g.fillOval(center.x - SUN_RADIUS, center.y - SUN_RADIUS, SUN_RADIUS * 2, SUN_RADIUS * 2); // 画地球 int earthX = (int) (center.x + EARTH_ORBIT_RADIUS * Math.cos(earthAngle)); int earthY = (int) (center.y + EARTH_ORBIT_RADIUS * Math.sin(earthAngle)); g.setColor(Color.BLUE); g.fillOval(earthX - EARTH_RADIUS, earthY - EARTH_RADIUS, EARTH_RADIUS * 2, EARTH_RADIUS * 2); // 画月亮 int moonX = (int) (earthX + MOON_ORBIT_RADIUS * Math.cos(moonAngle)); int moonY = (int) (earthY + MOON_ORBIT_RADIUS * Math.sin(moonAngle)); g.setColor(Color.GRAY); g.fillOval(moonX - MOON_RADIUS, moonY - MOON_RADIUS, MOON_RADIUS * 2, MOON_RADIUS * 2); } public static void main(String[] args) { JFrame frame = new JFrame("Solar System"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600); frame.add(new SolarSystem()); frame.setVisible(true); } } ``` 在这个程序中,我们使用了Java Swing中的JPanel类来实现画图功能,并利用Timer类来实现动画效果。程序中有几个常量,分别代表了地球、月亮和太阳的半径以及它们的轨道半径。在paintComponent方法中,我们首先用黑色填充整个面板,然后画出太阳、地球和月亮。太阳是一颗黄色的圆,地球和月亮则通过计算它们在轨道上的位置来画出来。通过不断改变地球和月亮的角度,我们就可以实现它们绕着太阳和地球转动的效果。 运行程序,即可看到地球和月亮绕太阳和地球转的效果。 ### 回答2: 要使用AWTSwing设计一个地球绕太阳转、月亮绕地球转的程序,可以按照以下步骤进行: 1. 创建一个主窗口,并设置好窗口的大小、标题等属性。 2. 在主窗口中创建一个自定义的“太阳面板”来表示太阳。可以使用Java绘图工具(如Graphics类)在面板上绘制一个黄色的圆形。 3. 在主窗口中创建一个自定义的“地球面板”来表示地球。可以使用Graphics在面板上绘制一个蓝色的圆形。 4. 在地球面板中再创建一个“月亮面板”来表示月亮。可以使用Graphics在面板上绘制一个灰色的圆形。 5. 定义一个定时器,每隔一段时间(如100毫秒)触发一次,并在事件中更新太阳、地球和月亮面板的位置。 6. 在定时器事件中,可以根据一定的速度和角度计算出太阳、地球和月亮的新位置,并使用repaint()方法重新绘制面板。 7. 为了实现地球绕太阳转和月亮绕地球转的效果,可以设置不同的角速度和半径参数,并在计算新位置时使用不同的角度。 8. 最后,将太阳面板、地球面板和月亮面板添加到主窗口中,并使用布局管理器来确定它们之间的位置关系和大小。 通过以上步骤,就可以设计一个利用AWTSwing实现地球绕太阳转、月亮绕地球转的程序。在运行程序时,太阳、地球和月亮将会按照设定的速度和轨迹运动,从而展现出宇宙中天体运行的奇妙景象。 ### 回答3: 使用Java中的AWTSwing库,我们可以设计一个地球绕太阳转,月亮绕地球转的程序。 首先,我们需要创建一个窗口来显示地球、太阳和月亮。可以使用 JFrame 类来创建一个窗口,然后在窗口中添加绘制图形的组件。 接下来,我们需要定义地球、太阳和月亮的位置和大小。这可以通过定义相应的变量来实现。例如,可以使用坐标和半径来表示地球、太阳和月亮的位置和大小。在程序中,我们可以使用 data 类型(例如,整数或浮点数)来存储这些信息。 然后,我们需要在窗口上绘制地球、太阳和月亮。可以使用 Java 的绘图类来完成这个任务。例如,可以使用 Graphics 类的方法(例如 drawOval())来绘制圆形来表示地球、太阳和月亮。 为了使地球和月亮绕太阳和地球转动,我们可以使用定时器。在每个时间间隔内,我们可以更新地球和月亮的位置和角度,然后重新绘制它们。可以使用 javax.swing.Timer 类来创建一个定时器,然后为它设置一个固定的时间间隔,以更新图形的位置和角度。 最后,我们需要运行程序,并观察地球绕太阳转、月亮绕地球转的效果。可以使用主方法来启动程序。 这样,我们就可以使用AWTSwing库设计一个地球绕太阳转,月亮绕地球转的程序了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值