java中的自定义布局(精确布局)

本文介绍了一种使用Java Swing和精确布局(null布局)创建GUI应用程序的方法,通过具体实例——一个计算器界面,详细展示了如何使用JTextField、JButton、JPanel等组件,并应用GridLayout进行布局设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的布局方式是由多种的
分别为流式布局,边界布局,网格布局,以及我们经常用的精确布局。
java中的GUI(图形用户界面)分别位于java.awt和java.Swing包中。
我们可以布局一个简单的计算器的界面来了解如何去精确布局

import javax.swing.*;
import java.awt.*;

public class Cal extends JFrame {

    JTextField showText;//文本框
    JButton equalBt;

    JPanel leftPanel;
    JButton[] leftButtons;


    JPanel rightPanel;
    JButton[] rightButtons;


    //构造方法的实现
    public Cal () {
        this.setSize(400,700);//大小
        this.setTitle("计算器");//名字

        this.setLayout(null);//设置默认布局为空
        this.init();//窗口的实现

        this.setVisible(true);//窗口的可视化

    }

    private void init() {
        showText = new JTextField();//文本框的实现
        showText.setSize(375,100);
        showText.setLocation(5,10);
        //showText.setBackground(Color.red);
        this.add(showText);

        equalBt = new JButton("=");//按钮
        equalBt.setSize(94,179);
        equalBt.setLocation(287,471);
        equalBt.setBackground(Color.gray);//背景色
        this.add(equalBt);

        //分成两个区域,分别实现这两个区域
        initLeftPanel();
        initRightPanel();


    }


    private void initLeftPanel() {
        leftPanel = new JPanel();//新的区域

        leftPanel.setSize(280,540);//大小
        leftPanel.setLocation(5,110);//位置
        leftPanel.setLayout(new GridLayout(6,3,2,2));
        String[] leftName = {"mc","m+","m-","C","/","X","7","8","9","4","5","6","1","2","3","%","0","."};
        leftButtons = new JButton[18];

        for (int i = 0; i < leftButtons.length; i++) {
            leftButtons[i] = new JButton(leftName[i]);
            leftPanel.add(leftButtons[i]);//将按钮加入到这个区域中
        }
        this.add(leftPanel);//将创建的这个区域加入到这个窗口中
    }

    private void initRightPanel() {
        rightPanel = new JPanel();
        rightPanel.setSize(93,360);
        rightPanel.setLocation(287,110);
        rightPanel.setLayout(new GridLayout(4,1,2,2));
        String[] rightName = {"mr","退格","-","+"};
        rightButtons = new JButton[4];
        for (int i = 0; i < rightButtons.length; i++) {
            rightButtons[i] = new JButton(rightName[i]);
            rightPanel.add(rightButtons[i]);
        }
        this.add(rightPanel);
    }

}

测试

public class Test {

    public static void main(String[] args) {
        Cal cal = new Cal();
    }
}

结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值