Java程序图形用户界面设计之按钮与布局
作者:小旺不正经 发布时间:2023-07-18 07:03:21
Java程序设计 图形用户界面【四】
按钮组件 JButton
JButton组件表示一个普通的按钮
JButton类常用方法
方法 | 作用 |
---|---|
public JButton() throws HeadlessException | 创建一个Button对象 |
public JButton(String label) throws HeadlessException | 创建一个Button对象,同时指定其显示内容 |
public JButton(Icon icon) | 创建一个带图片的按钮 |
public JButton(String text,Icon icon) | 创建一个带图片和文字的按钮 |
public void setLabel(String label) | 设置Button的显示内容 |
public String getLabel() | 得到Button的显示内容 |
public void setBounds(int x,int y,int width,int height) | 设置组件的大小及显示方式 |
public void setMnemonic(int mnemonic) | 设置按钮的快捷键 |
演示
import javax.swing.*;import java.awt.*;public class Hello { public static void main(String[] args) { JFrame frame = new JFrame("一"); JButton but = new JButton("点击"); Font font = new Font("Serief",Font.BOLD,25); but.setFont(font); frame.add(but); frame.setSize(200,70); frame.setLocation(500,300); frame.setVisible(true); }}
按钮上显示图片
import javax.swing.*;public class Hello { public static void main(String[] args) { JFrame frame = new JFrame("一"); String Path="C:\\Users\\30452\\Desktop\\123.jpg"; Icon icon = new ImageIcon(Path,"MLDN"); JButton but = new JButton(icon); frame.add(but); frame.setSize(500,600); frame.setLocation(300,200); frame.setVisible(true); }}
布局管理器
在Swing中主要使用以下5种常见的布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、绝对定位。
FlowLayout
流式布局管理器,使用此种布局方式会使所有的组件像流水一样依次进行排列
常量 | 作用 |
---|---|
public static final int CENTER | 居中对齐 |
public static final int LEADING | 与容器的开始端对齐方式一样 |
public static final int LEFT | 左对齐 |
public static final int RIGHT | 右对齐 |
public static final int TRAILING | 与容器的结束端对齐方式一样 |
方法 | 作用 |
---|---|
public FlowLayout() | 构造一个新的FlowLayout,居中对齐 |
public FlowLayout(int align) | 构造一个FlowLayout,并指定对齐方式 |
public FlowLayout(int align,int hgap,int vgap) | 指定对齐方式、水平、垂直间距 |
演示:
import javax.swing.*;import java.awt.*;public class Hello { public static void main(String[] args) { JFrame frame = new JFrame("一"); frame.setLayout(new FlowLayout(FlowLayout.CENTER,4,4)); JButton but = null; for(int i=0;i<16;i++){ but = new JButton("按钮"); frame.add(but); } frame.setSize(300,300); frame.setVisible(true); }}
BorderLayout
BorderLayout将一个窗体的版面划分成东、西、南、北、中5个区域
常量 | 作用 |
---|---|
public static final String EAST | 将组件设置在东区 |
public static final String WEST | 将组件设置在西区 |
public static final String SOUTH | 将组件设置在南区 |
public static final String NORTH | 将组件设置在北区 |
public static final String CENTER | 将组件设置在中区 |
方法 | 作用 |
---|---|
public BorderLayout() | 构造没有间距的布局器 |
public BorderLayout(int hgap,int vgap) | 构造有水平和垂直间距的布局器 |
演示:
import javax.swing.*;import java.awt.*;public class Hello { public static void main(String[] args) { JFrame frame = new JFrame("一"); frame.setLayout(new BorderLayout(3,3)); frame.add(new JButton("上"),BorderLayout.NORTH); frame.add(new JButton("下"),BorderLayout.SOUTH); frame.add(new JButton("左"),BorderLayout.WEST); frame.add(new JButton("右"),BorderLayout.EAST); frame.add(new JButton("中"),BorderLayout.CENTER); frame.pack(); frame.setVisible(true); }}
GridLayout
GridLayout布局管理器是以表格的形式进行管理
方法 | 作用 |
---|---|
public GridLayout(int rows,int cols) | 构造一个指定行和列的布局管理器 |
public GridLayout(int rows,int cols,int hgap,int vgap) | 构造时指定行和列、水平和垂直间距 |
演示:
import javax.swing.*;import java.awt.*;public class Hello { public static void main(String[] args) { JFrame frame = new JFrame("一"); frame.setLayout(new GridLayout(3,5,3,3)); JButton but = null; for(int i=0;i<15;i++){ but = new JButton("按钮"); frame.add(but); } frame.pack(); frame.setVisible(true); }}
CardLayout
CardLayout就是将一组组件彼此重叠地进行布局,就像一张张卡片一样,这样每次只会展现一个界面
方法 | 作用 |
---|---|
public CardLayout() | 构造CardLayout对象,各组件间距为0 |
public CardLayout(int hgap,int vgap) | 构造CardLayout对象,指定组件间距 |
public void next(Container parent) | 翻转到下一张卡片 |
public void previous(Container parent) | 翻转到上一张卡片 |
public void first(Container parent) | 翻转到第一张卡片 |
public void last(Container parent) | 翻转到最后一张卡片 |
public void show(Container parent,String name) | 显示具有指定组件名称的卡片 |
import javax.swing.*;
import java.awt.*;
public class Hello {
public static void main(String[] args) {
JFrame frame = new JFrame("一");
// 取得窗体容器
Container cont = frame.getContentPane();
CardLayout card = new CardLayout();
frame.setLayout(card);
cont.add(new JLabel("A",JLabel.CENTER),"first");
cont.add(new JLabel("B",JLabel.CENTER),"second");
cont.add(new JLabel("C",JLabel.CENTER),"third");
cont.add(new JLabel("D",JLabel.CENTER),"fourth");
cont.add(new JLabel("E",JLabel.CENTER),"fifth");
frame.pack();
frame.setVisible(true);
card.show(cont,"third");
for(int i=0;i<5;i++){
try {
Thread.sleep(3000);
}catch (InterruptedException e){
}
card.next(cont);
}
}
}
绝对定位
Component中提供了setBounds()方法,可以定位一个组件的坐标,使用X、Y的坐标表示方式
public void setBounds(int x,int y,int width,int height)
演示:
import javax.swing.*;
import javax.swing.plaf.ButtonUI;
public class Hello {
public static void main(String[] args) {
JFrame frame = new JFrame("一");
frame.setLayout(null);
JLabel title = new JLabel("确定要退出吗?");
JButton a = new JButton("确定");
JButton b = new JButton("取消");
frame.setSize(200,90);
title.setBounds(45,5,150,20);
a.setBounds(10,30,80,20);
b.setBounds(100,30,80,20);
frame.add(title);
frame.add(a);
frame.add(b);
frame.setVisible(true);
}
}
来源:https://blog.csdn.net/weixin_42403632/article/details/122811614


猜你喜欢
- 与链表、堆栈和队列不一样,二叉查找树不是线性数据结构,是二维数据结构。每个节点都包含一个LeftNode和RightNode,二叉查找树把比
- 本篇介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实
- W3C制定了XML DOM标准,.Net为了支持W3C的标准,从1.1版本开始就引入了XmlDocument类。我在前一篇博客中,介绍了如何
- 配置两个parent的方法在向pom.xml 文件中添加依赖之前需要先添加spring-boot-starter-parent。spring
- jol(java object layout)需要的依赖<dependency> <
- 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善,上层软件开发者往
- Android 自定义View实现抽屉效果说明这个自定义View,没有处理好多点触摸问题View跟着手指移动,没有采用传统的scrollBy
- ImGUI 它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,该框架通常会配合特定
- 2.4.6 BoxLayout为了简化开发,Swing 引入了 一个新的布局管理器 : BoxLayout 。 BoxLayout 可以在垂
- 1. 你知道线程安全问题吗?线程安全问题:一般指在多线程模式下,多个线程对同一个共享数据进行操作时,第一个线程还没来得及更新共享数据,从而导
- 获取当前年的周数 /// <summary> /// 获得今年有几周 /// </summa
- Java连接SQLServer 2008数据库的步骤:1.到微软官方下载jdbc 并解压,得到sqljdbc.jar和sqljdbc4.ja
- 一、简介在现阶段的Android开发中,注解越来越流行起来,比如ButterKnife,Retrofit,Dragger,EventBus等
- Spring相关的依赖导入进去,即可使用spring的定时任务!<!-- spring核心包 -->
- 现在越来越多的软件都开始使用沉浸式状态栏了,下面总结一下沉浸式状态栏的两种使用方法注意!沉浸式状态栏只支持安卓4.4及以上的版本状态栏:4.
- Unity脚本中枚举类型在inspector面板中文显示,供大家参考,具体内容如下效果:工具脚本:ChineseEnumTool.csusi
- 前言通常在工作中比较常用到的Microsoft Word是属于国外的文档内容编辑软件,其编译技术均属国外。而OFD是一种我国的自主文档格式,
- 本文实例讲述了Android编程实现拍照功能的2种方法。分享给大家供大家参考,具体如下:Android系统的照相功能,已实现2种方法,可供大
- 前言这两天面试了一个物联网公司高级研发,面试题是下面这样子公司领导,部门主管,小组组长,组成员4级,假如有个 疫情预警,先通知组人员(对个人
- 在学习SpringBoot的过程中遇到一个问题,因为SpringBoot是集成了tomcat的,所以项目是打成jar包,通过SpringMV