当前位置: 首页 > news >正文

JAVA中AWT编程

 

JAVA使用AWT和Swing 类完成图形用户界面编程,AWT全称是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI库(Graphics User Interface)图形用户界面。

 

  AWT是窗口框架,它从不同平台的窗口系统中抽取共同组件,当使用AWT编写图形界面应用时,程序仅指定了界面组件的位置和行为,并为提供真正的实现,JVM 调用操作系统本地的图形界面来创建和平台一直的对等体。

 

  1.   java中所有和AWT编程相关的类放在java.awt包以及他的子包中。  AWT中有两个基类:Component和MenuComponent。

     Component代表一个以图形化方式显示出来,并可与用户交互的对象;

     MenuComponent则代表图形界面菜单组件,包括MenuBar(菜单条),MenuItem(菜单项)等。

    

 

    2.AWT容器

        在AWT中 Container  是一种特殊的Component。它代表一种容器。Container是Component的子类 。容器本身也是一个组件,具有组件的性质。可以调用Component类中的所有方法。

 

    AWT提供了两种主要容器类型

    • Window:可以独立存在的窗口。
    • Panel:可作为容器容纳其他组件,但不能独立存在,必须添加到其他容器中。 
      Frame代表常见的窗口,它是Window类的子类,
    • Frame 对象有标题,允许通过拖拉来改变窗口的位置,大小。
    • 初始化时不可见 ,可用setVisible(true)使其显示出来。
    • 默认使用 BorderLayout作为其布局管理器。

 

 

  

 

  通过Frame创建一个窗口

package AWT1;
import java.awt.Frame;
public class FrameTest {
     public static void main(String[] args) {
          Frame f = new Frame("测试窗口");//标题
          //设置窗口的大小和位置
          f.setLocation(30, 30);
          f.setSize(250, 200);
          //将窗口显示出来(默认隐藏)
          f.setVisible(true);
     }
}

 注意:设置窗口位置的下x,y 是从电脑屏幕的左上角开始。     ps(请问一下我在其他博客上看到的为什么背景是白色的,难道真的是桌面图片是白色?)

 如果点击此窗口的右上角的“×”,窗口不会关闭,这是因为该窗口还未编写任何事物响应,可以通过关闭程序命令关闭。

 

  通过Panel作为容器来盛装一个文本框和一个按钮,并将该Panel对象添加到Frame对象中

  

 1 package AWT1;
 2 import java.awt.Button;
 3 import java.awt.Frame;
 4 import java.awt.Panel;
 5 import java.awt.TextField;
 6 public class FrameTest {
 7      public static void main(String[] args) {
 8           Frame f = new Frame("测试窗口");
 9           //创建一个Panel 容器
10           Panel p=new Panel();
11           //向panel中添加两个组件
12           p.add(new TextField(20));//20列,虽然我不知道什么是20列。
13           p.add(new Button("单机我"));//按钮上的文字
14           //将panel放在frame
15           f.add(p);
16           f.setBounds(30, 30, 250, 200);
17           f.setVisible(true);//默认frame隐藏
18      }
19 }

ps(  TextField(20)  20列是指什么20列  )

   

   ScrollPane 是一个滚动条的容器,它不能独立存在,必须被添加到其他容器。

    ScrollPane 特点

      1.可作为容器盛装其他组件,当组件占用空间过大时,ScrollPane 自动产生滚动条,当然也可以通过指定特点的构造器参数来指定默认具有滚动条。

       2. 不能单独存在,必须放置到其他容器中

       3. 默认使用BorderLayout作为其布局管理器。

      

      使用ScrollPane容器来代替Panel容器

 

public class FrameTest {
    public static void main(String[] args) {
        Frame f = new Frame("测试窗口");
        //创建一个scrollPane 容器,指定总是具有滚动条。
        ScrollPane sp= new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
        //向scrollPane容器中添加两个组件
        sp.add(new TextField(20));
        sp.add(new Button("click"));
        //将scrollPane 容器添加到Frame 对象中
        f.add(sp);
        f.setBounds(30, 30, 250, 200);
        f.setVisible(true);
    }
}

             

注意:程序明明有一个文本框,一个按钮,但只能看到一个按钮,却看不到文本框? 这是因为ScrollPane 使用BorderLayout布局管理器,导致了只有一个组件显示出来。

  

 本人毫无编程经验,专科生,一边学一边分享。也希望有大牛帮我回答文章中的问题

 第一次写,什么也不懂,写博客的原因时想让大家能指出我的错误,欢迎指出。

转载于:https://www.cnblogs.com/gangjinkeng/p/10791047.html

相关文章:

  • swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~
  • Kubernetes单机部署操作学习
  • 第十周学习进度报告
  • 代码规范
  • 前端vue:节点、树以及虚拟 DOM
  • 【集合框架】JDK1.8源码分析之HashMap
  • leetcode--翻转二叉树
  • 学习笔记 12 数据库索引和锁
  • mac如何强制退出程序?强制退出程序的六种方法
  • 清空的回收站文件如何还原?这个方法超实用
  • Objc Runtime 类学习图(新旧版本)
  • sql插入时:注意事项
  • 函数的进阶
  • SFDC 开发实践
  • Python新手基础入门教程:那些年我们踩过的那些坑!
  • 【刷算法】从上往下打印二叉树
  • Akka系列(七):Actor持久化之Akka persistence
  • Apache Zeppelin在Apache Trafodion上的可视化
  • ES6之路之模块详解
  • Java小白进阶笔记(3)-初级面向对象
  • Koa2 之文件上传下载
  • Python学习之路13-记分
  • 关于Flux,Vuex,Redux的思考
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 利用DataURL技术在网页上显示图片
  • 前端之Sass/Scss实战笔记
  • Python 之网络式编程
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #13 yum、编译安装与sed命令的使用
  • (2.2w字)前端单元测试之Jest详解篇
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (6)STL算法之转换
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (java)关于Thread的挂起和恢复
  • (Matlab)使用竞争神经网络实现数据聚类
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (推荐)叮当——中文语音对话机器人
  • (一)80c52学习之旅-起始篇
  • (转)shell调试方法
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • @JoinTable会自动删除关联表的数据
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ 蓝桥杯Web真题 ]-布局切换
  • []串口通信 零星笔记
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [BT]BUUCTF刷题第9天(3.27)
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现