博客
关于我
java-图形用户界面(GUI)之AWT编程-整体思路与代码架构
阅读量:792 次
发布时间:2023-01-27

本文共 2076 字,大约阅读时间需要 6 分钟。

1. 整体思路

任何窗口都可以被分解成一个空的容器,容器中盛放了大量的基本组件,通过设置这些基本组件的大小、位置等属性,就可以将该空的容器和基本组件组成一个整体的窗口。

具体实现思路如下:

  • 创建一个Frame顶层窗口,用于容纳整个图形用户界面。
  • 如果需要,设置顶层窗口的布局,通常使用BorderLayout或GridLayout。
  • 创建Panel容器或ScrollPane容器,用于承载其他组件。
  • 如果需要,设置容器的布局,根据需求决定是BorderLayout还是GridLayout等。
  • 向容器中添加基本组件,如按钮、文本框等。
  • 将容器依次添加到顶层窗口中。
  • 设置顶层窗口的大小,通常采用f.pack()方法,让窗口自动调整到最佳尺寸。
  • 设置窗口的位置,例如f.setLocation(int x, int y)。
  • 如果需要,可以同时设置窗口的大小和位置,使用f.setBounds(int x, int y, int width, int height)。
  • 确保窗口可见性高,调用f.setVisible(true)方法。
  • 2. 代码架构

    这里提供两种代码组织方式:

  • 直接在主方法里边创建图形用户界面
  • import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import javax.swing.JFrame;
    public class GridLayoutTest {    public static void main(String[] args) {        JFrame f = new JFrame("计算器");        Panel p1 = new Panel();        p1.add(new TextField(30));        f.add(p1, BorderLayout.NORTH);        Panel p2 = new Panel();        p2.setLayout(new GridLayout(3, 5, 4, 4));        String[] name = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/"};        for (int i = 0; i < name.length; i++) {            p2.add(new Button(name[i]));        }        f.add(p2);        f.pack();        f.setVisible(true);    }}
    1. 通过init()方法创建图形用户界面
    2. import java.awt.BorderLayout;import java.awt.Button;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import javax.swing JFrame;
      public class DialogTest {    JFrame f = new JFrame("计算器");    Panel p1 = new Panel();        public void init() {        p1.add(new TextField(30));        f.add(p1, BorderLayout.NORTH);        Panel p2 = new Panel();        p2.setLayout(new GridLayout(3, 5, 4, 4));        String[] name = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/"};        for (int i = 0; i < name.length; i++) {            p2.add(new Button(name[i]));        }        f.add(p2);        f.pack();        f.setVisible(true);    }        public static void main(String[] args) {        new DialogTest().init();    }}

      以上两种代码组织方式都可以实现类似功能,但如果需要代码结构更清晰,建议使用第二种方式(通过init方法创建界面)。

    转载地址:http://hbryk.baihongyu.com/

    你可能感兴趣的文章
    Trae国内版发布,中国首款AI 原生IDE 正式上线,配置Doubao-1.5-pro,支持切换满血版DeepSeek 模型
    查看>>
    linux(CENTOS)系统各个目录的作用详解
    查看>>
    回溯法介绍
    查看>>
    2025最新智能优化算法:改进型雪雁算法(Improved Snow Geese Algorithm, ISGA)求解23个经典函数测试集
    查看>>
    有了Trae,人人都是程序员的时代来了
    查看>>
    数据分析与处理方法
    查看>>
    程序员都看不懂的代码
    查看>>
    LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践
    查看>>
    404页面自动跳转源码
    查看>>
    46:把数字翻译成字符串(动态规划)
    查看>>
    500套精美Logo样机模板可直接套用、轻松制作炫酷logo
    查看>>
    ASP.NET MVC4 json序列化器
    查看>>
    @ResponseBody 和 @RequestBody
    查看>>
    A + B 九度oj
    查看>>
    A DBA’s take on MSCA (Mobile supply chain applications)
    查看>>
    A DBA’s take on MSCA (Mobile supply chain applications)
    查看>>
    A20地址线
    查看>>
    abaqus质量缩放系数取值_ABAQUS的质量缩放
    查看>>
    Access restriction: The type FileURLConnection is not accessible due to restriction
    查看>>
    Accessibility
    查看>>