JAVA的图形用户界面布局GUI入门(上)

java的GUI企业里面用的比较少,现在主流的UI都使用HTML5 开发。

Java提供了三个主要包 做GUI开发:

java.awt 包 – 主要提供字体/布局管理器
javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)
java.awt.event 包 – 事件处理,后台功能的实现。

界面主要包括:

组件/控件 – 就是界面中的各种组成部分,比如:按钮、文本框、标签、表格…
容器 – 容器也是组件的一种,能容纳其它组件,比如:窗口、面板
布局管理器 – 组件在容器中的大小和位置由 布局管理器 控制。

常见的类/接口:

JFrame(窗口)、JPanel(面板)、JButton(按钮)、JTextField(文本框)、JLabel(标签)

常见的布局方式

FlowLayout(流布局)、BorderLayout(边框布局)、GridLayout(网格布局)

FlowLayout(流布局)

流布局象在word中打字,组件从左向右排列,一行排满后自动换下一行。组件默认居中对齐,可以设置为左/右对齐。流布局会维持组件的原始大小。流布局是 JPanel(面板)的默认布局。
容器可以使用setLayout()方法改变布局。

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class TestFlowLayout {
    public static void main(String[] args) {
        JFrame jf = new JFrame("流布局DEMO"); //建立一个窗口
        FlowLayout fl = new FlowLayout();  //使用流布局
        jf.setLayout(fl);//修改布局管理
        JButton jb1 = new JButton("按钮1"); //创建一个按钮
        jf.add(jb1); //把按钮jb1放入窗口
        JButton jb2 = new JButton("按钮2");//创建一个按钮
        jf.add(jb2);//把按钮jb2放入窗口
        jf.setSize(600, 300); //设置窗口的大小
        jf.setLocation(300,200);//设置窗口的初始位置
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口
        jf.setVisible(true); //显示窗口
    }
}

界面显示如下:
流布局

BorderLayout(边框布局)

边框布局把整个窗口分成了5个部分,上北下南左西右东,剩下的是中部。其中,北和南是整行,而中/西/东都不是整列。一般只会出现2个或3个部分。组件放入时需要指定放在哪个区域,默认放在中部。每个部分只能存放一个组件,如果存放多个就会覆盖前面的。如果想放多个组件,必须借助面板。组件在边框布局中不保持原始大小,会充满整个区域。JFrame的默认布局就是边框布局。如果某个部分不出现,这个区域会被出现的部分挤占。

import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class TestBorderLayout {
    public static void main(String[] args) {
        JFrame jf = new JFrame("DEMO窗口");
        JButton jb = new JButton("红中");
        jf.add(jb); //把按钮放入边框布局的中部

        JButton jb1 = new JButton("东风");  //创建一个按钮
        jf.add(jb1,BorderLayout.EAST);     //放在东部

        JButton jb2 = new JButton("南风"); 
        jf.add(jb2,BorderLayout.SOUTH);     //放在南部

        JButton jb3 = new JButton("西风"); 
        jf.add(jb3,BorderLayout.WEST);      //放在西部  

        JButton jb4 = new JButton("北风"); 
        jf.add(jb4,BorderLayout.NORTH);     //放在北边

        jf.setSize(600, 300);               //设置按钮的大小
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭
        jf.setVisible(true);//显示窗口
    }
}

界面显示如下:
边框布局

GridLayout(网格布局)

网状布局就是把窗口分成几行几列的表格方式,构造时需要指定行数和列数。组件在网状布局中不保持原始大小,会充满整个区域。组件在网状布局中,一个格子只放一个组件,自动向后走。

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class TestGrid {
    public static void main(String[] args) {
        JFrame jf = new JFrame("网状布局DEMO");
        GridLayout gl = new GridLayout(5,4); //5行4列的表格
        jf.setLayout(gl); //修改布局为网状 5 行 4 列
        for(int i=0;i<20;i++){
            JButton jb = new JButton(i+""); //数字转String
            jf.add(jb);
        }
        //jf.setSize(600,300); //设置大小
        jf.pack(); //自动调整大小
        jf.setLocation(300,200); // 设置初始的位置
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭
        jf.setVisible(true); //解决了初始不可见的问题
    }

}

界面显示如下:
网状布局

实用案例:制作一个计算器界面
注意:JPanel(面板)的默认布局是流布局,setLayout()方法可以改变容器的布局方式

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyCompute {
    public static void main(String[] args) {
        JFrame jf = new JFrame("计算器"); //创建一个窗口
        JTextField jtf = new JTextField("0",20); //初始的文本为0,长度是20
        jf.add(jtf,BorderLayout.NORTH); 
        String[] lab = {"CE","C","+/-","BackS","7","8","9","+","4","5","6",
            "-","1","2","3","*","0",".","=","/"}; //按键上的文本
        JPanel jp = new JPanel(); //创建面板
        GridLayout gl = new GridLayout(5,4); //创建网格布局
        jp.setLayout(gl); //将面板的布局方式改为网格布局
        for(int i=0;i<lab.length;i++){
            JButton jb = new JButton(lab[i]); //创建按钮
            jp.add(jb);//将创建出来的按钮都放入面板
        }
        jf.add(jp);//将面板放入窗口
        jf.pack(); //自动调节大小
        jf.setResizable(false);//不能改变窗口的大小
        jf.setLocation(300,200); // 设置初始的位置
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭
        jf.setVisible(true); //解决了初始不可见的问题
    }
}
  • 97
    点赞
  • 512
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
### 回答1: Java图形用户界面Java GUI)是使用Java编程语言和Java平台创建的用户界面Java GUI通常使用Java Swing库创建,Swing库是Java标准库的一部分,提供了一套丰富的组件,例如按钮,文本框,标签,下拉列表等。通过组合这些组件,您可以创建一个美观且易于使用的界面。 以下是一些创建Java GUI的步骤: 1. 导入Java Swing库 在Java文件中,您需要导入Java Swing库,以便能够使用Swing组件。您可以使用以下代码将Swing库导入到Java文件中: import javax.swing.*; 2. 创建一个JFrame对象 JFrame是一个Swing组件,它代表整个窗口。您可以使用以下代码创建一个JFrame对象: JFrame frame = new JFrame("My Frame"); 3. 添加组件 您可以使用以下代码向JFrame对象添加组件: frame.add(new JButton("My Button")); 4. 设置窗口大小和位置 使用以下代码设置窗口的大小和位置: frame.setSize(400, 400); frame.setLocationRelativeTo(null); 5. 显示窗口 使用以下代码显示窗口: frame.setVisible(true); 这些步骤只是创建Java GUI的一个基本示例。您可以根据需要添加更多的组件和自定义样式。 ### 回答2: Java图形用户界面设计是一种基于Java语言的界面设计技术,用于创建交互式的用户界面。它提供了一系列的API(应用程序接口)和组件,以帮助开发人员创建各种各样的界面Java图形用户界面设计具有以下特点: 1. 跨平台性:Java是一种平台无关的编程语言,它的图形用户界面设计也是跨平台的。无论是在Windows、Mac还是Linux等操作系统上,都可以运行Java应用程序,并且界面的外观和行为都是一致的。 2. 可扩展性:Java图形用户界面设计提供了丰富的组件库,包括按钮、文本框、标签、下拉框等等。开发人员可以通过组合这些组件来创建自定义的界面,并且可以根据需要编写自定义的组件。 3. 事件驱动:Java图形用户界面设计采用了事件驱动的编程模型。当用户与界面进行交互时,例如点击按钮或输入文本,相应的事件会触发,并且可以通过编写事件处理程序对事件进行响应。 4. 布局管理:Java提供了多种布局管理器,用于控制界面组件的位置和大小。开发人员可以根据需要选择不同的布局管理器,以实现灵活的界面布局。 5. 可视化设计工具:有许多可视化设计工具可以帮助开发人员创建Java图形用户界面。这些工具提供了可视化的界面设计界面,开发人员可以通过拖拽和放置组件的方式来创建界面,而无需编写代码。 总的来说,Java图形用户界面设计是一种强大的界面技术,它可以帮助开发人员快速创建跨平台、可扩展和用户友好的界面。通过使用Java图形用户界面设计,开发人员可以实现各种各样的应用程序,包括桌面应用程序、移动应用程序等。 ### 回答3: Java图形用户界面(Graphical User Interfaces, GUI)设计是指使用Java编程语言设计和开发用户界面的过程。Java提供了一组丰富的GUI组件,开发者可以利用这些组件创建交互式的应用程序界面。 在Java图形用户界面设计中,通常使用的组件包括按钮、文本框、标签、复选框、单选按钮、下拉列表、滚动条等。这些组件可以用来构建各种复杂的用户界面。开发者可以使用布局管理器来控制组件的位置和大小,以及组件之间的相对关系。 Java图形用户界面设计的另一个重要方面是事件处理。通过为组件注册相应的事件监听器,开发者可以实现对用户输入的响应。例如,当用户点击按钮时,可以通过事件监听器来执行相应的操作,比如打开一个新窗口或执行一段代码。 与其他绘图库相比,Java图形用户界面设计具有一些优势。首先,Java是一种跨平台的编程语言,可以在不同的操作系统上运行。因此,开发者可以使用一套代码编写适用于多个平台的用户界面。其次,Java提供了丰富的GUI组件和布局管理器,使得界面的构建更加灵活和方便。此外,Java还提供了一些强大的工具和框架,如Swing和JavaFX,可以帮助开发者更好地设计和开发用户界面。 总而言之,Java图形用户界面设计是使用Java编程语言创建用户界面的过程。开发者可以利用Java提供的丰富组件和布局管理器来构建交互式的应用程序界面,并通过事件处理来实现用户输入的响应。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值