问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java编写计算器,怎样把标签加入加到JFrame上(用GridBagLayout布局管理器)

发布网友 发布时间:2022-04-07 19:31

我来回答

3个回答

懂视网 时间:2022-04-07 23:52

GridBagLayout相对于GridLayout来说更灵活,功能也更强大,用它实现的计算器的布局效果图如下:

技术分享

 

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

/**
 * Calculator类,实现计算器界面
 * @author Ares
 */
public class Calculator{
	final String[] KEYS = { "CE", "C", "←", "÷", "7", "8", "9", "×", "4","5", "6", "-", "1", "2", "3", "+", "0", ".", "=" };
	JButton[] keys = new JButton[KEYS.length];
	JTextField resultText = new JTextField("0");
	
	public void addComponentsToPane(Container pane) {
		GridBagLayout layout = new GridBagLayout();
		pane.setLayout(layout);
		resultText.setFont(new Font("Century Schoolbook", Font.PLAIN, 14));
		resultText.setEditable(false);
		resultText.setHorizontalAlignment(SwingConstants.RIGHT);
		pane.add(resultText,new GBC(0, 0, 4, 1).setIpad(400, 50).setWeight(0.5, 0.5).setFill(GridBagConstraints.BOTH));
		for (int i = 0; i < keys.length; i++) {
			keys[i] = new JButton(KEYS[i]);
			if(i == keys.length-3){
				pane.add(keys[i],new GBC(i % 4, i / 4 + 1,2,1).setIpad(0, 12).setInsets(1).setFill(GridBagConstraints.BOTH).setWeight(0.5, 0.5));
			}else if (i == keys.length-2 || i == keys.length-1) {
				pane.add(keys[i],new GBC(i % 4+1, i / 4 + 1).setIpad(0, 12).setInsets(1).setFill(GridBagConstraints.BOTH).setWeight(0.5, 0.5));
			}else {
				pane.add(keys[i], new GBC(i % 4, i / 4 + 1).setIpad(0, 12).setInsets(1).setFill(GridBagConstraints.BOTH).setWeight(0.5, 0.5));
			}
		}
	}
	
	public void createAndShowGUI() {
		JFrame frame = new JFrame("Calculator");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		addComponentsToPane(frame.getContentPane());
		frame.pack();
		frame.setVisible(true);
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				new Calculator().createAndShowGUI();
			}
		});
	}
}


用来设置GridBagConstraints的类如下:


import java.awt.GridBagConstraints;
import java.awt.Insets;

public class GBC extends GridBagConstraints {
	/**
	 * 构造函数,用来设置组件所占单元格的坐标
	 * 
	 * @param gridx 横向坐标
	 * @param gridy 纵向坐标
	 */
	public GBC(int gridx, int gridy) {
		this.gridx = gridx;
		this.gridy = gridy;
	}

	/**
	 * 构造函数,用来设置组件所占单元格的坐标,同时指定宽度和高度
	 * @param gridx 横向坐标 
	 * @param gridy 纵向坐标
	 * @param gridwidth 组件宽度
	 * @param gridheight 组件高度
	 */
	public GBC(int gridx, int gridy, int gridwidth, int gridheight) {
		this.gridx = gridx;
		this.gridy = gridy;
		this.gridwidth = gridwidth;
		this.gridheight = gridheight;
	}

	/**
	 * 当组件没有空间大时,设置组件的位置
	 * @param anchor 组建位置
	 * @return 当前对象
	 */
	public GBC setAnchor(int anchor) {
		this.anchor = anchor;
		return this;
	}

	/**
	 * 设置填充
	 * @param fill 设置填充方式
	 * @return 当前对象
	 */
	public GBC setFill(int fill) {
		this.fill = fill;
		return this;
	}

	/**
	 * 设置组件随窗口延伸的幅度
	 * @param weightx 横向延伸大小
	 * @param weighty 纵向延伸大小
	 * @return 当前对象
	 */
	public GBC setWeight(double weightx, double weighty) {
		this.weightx = weightx;
		this.weighty = weighty;
		return this;
	}

	/**
	 * 设置组件之间的间距
	 * @param distance 上下左右间距一样
	 * @return 当前对象
	 */
	public GBC setInsets(int distance) {
		this.insets = new Insets(distance, distance, distance, distance);
		return this;
	}

	/**
	 * 设置组件之间的间距
	 * @param top 上间距
	 * @param left 左间距
	 * @param bottom 底间距
	 * @param right 右间距
	 * @return 当前对象
	 */
	public GBC setInsets(int top, int left, int bottom, int right) {
		this.insets = new Insets(top, left, bottom, right);
		return this;
	}

	/**
	 * 设置组件内部填充空间,即给组件的最小高度或宽度添加多大的空间
	 * @param ipadx 横向填充
	 * @param ipady 纵向填充
	 * @return 当前对象
	 */
	public GBC setIpad(int ipadx, int ipady) {
		this.ipadx = ipadx;
		this.ipady = ipady;
		return this;
	}
}

  

 

使用GridBagLayout实现的计算器UI

标签:

热心网友 时间:2022-04-07 21:00

JLabel jLabel= new JLabel();
jLabel.setText("jLabel");
GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;//确定列,0开始表示第一列
gridBagConstraints.gridy = 1;//确定行
add(jLabel, gridBagConstraints);

因为是GridBagLayout布局,所以用GridBagConstraints 的gridx确定X坐标,也就是列的位置
用gridy确定y坐标,也就是行的位置,然后加到JFrame里面去就可以了。。。

希望能帮到你。。。仍有问题可以直接hi我。。。。

热心网友 时间:2022-04-07 22:18

这个你到网上一搜一大把
如何用坐标设计JAVA面板——比如计算器这个软件

把JFrame的布局方式设置为BorderLayout;然后分为两部分 显示部分和键入部分 在JFrame中添加两个JPane ,panel1设置位置为BorderLayout.North ;//也就是显示在最上面 panel2设置为BorderLayout.Center;// 占满剩下的地方 然后吧panel的布局方式设置为GridLayout 或FlowLayout GridLayout可以带两个参数 就...

计算器制作JAVA版(第三步,表达式求值(+

1.首先思考一下制作计算器需要哪些Swing组件,下面列出一些制作计算器的一些常用组件:JFrame Jpanel JButton JTextField 2.选用布局管理器:这里采用的是GridBagLayout,即网格包布局管理器。3.如何处理按钮事件:这里可以分两种情况来考虑,一:处理0~9的数字按钮和"."按钮,这种按钮的单击事件很...

Java中如何设置在JFrame中控件的位置和大小

Java中通过布局管理器(LayoutManager)来布局控件。常见的布局管理器如下:BorderLayout:Frame和Dialog的默认布局管理器。其把面板分为上北、下南、左西、右东和中间,5个部分,在未指定控件大小的情况下,被加入的控件将会随着内容大小自动伸缩,随着窗口的放大缩小也相应的产生伸缩。FlowLayout :按顺序...

用Java程序设计语言设计一个计算器

import java.awt.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener { private boolean dotExist, operated, equaled; // 帮助运算的布尔变量 private double storedNumber; // 目前的结果 private char lastOperator; // 表示上一运算符 private JTextField o...

求"用JAVA编写的计算器程序代码"

import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class jsq { public static void main(String[] str){ jisuanqi jsq=new jisuanqi();jsq.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jsq.setVisible(true);jsq.setSize(300,300);} } class jisuanqi extends...

求Java计算器标准的布局代码

import java.awt.*;import javax.swing.*;public class Conputer extends JFrame { protected Container con = getContentPane();// 指向内容面板 protected JMenuBar a = new JMenuBar();// 菜单条 protected JMenu a1 = new JMenu("编辑(E)");// 菜单1 protected JMenu a2 = new JMenu("...

java 计算器代码

这个是最合适你了!import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame { private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField;//计算结果显示区 private String lastCommand;/...

用java编写一个简单计算器

/ import java.awt.*;import java.awt.event.*;import javax.swing.*;/ A simple calculator program.&lt;p&gt;I saw this program in a QQ group, and help a friend correct it.&lt;/p&gt; author Singyuen Yip version 1.00 12/29/2009 see JFrame see ActionListener / public class JCalculator ...

java 在有GridLayout布局管理器的情况下,怎么设置元件大小

GridLayout 似乎会忽略组件的大小,然后自己去平均分配每个组件的大小。这种情况一般都是用GridBagLayout

请帮忙编辑一Java计算器程序

本人也是在网上刚看到2个...还有一个...import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class jsq{ public static void main(String[] str) { jisuanqi jsq=new jisuanqi(); jsq.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jsq.setVisible(true...

java用类编写计算器 java编写计算器程序的设计过程 用eclipse编写简单计算器 java编写计算器代码 java编写简易计算器 用java编程计算器 用java写一个计算器程序 用java编一个计算器 java怎么做计算器
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...90千瓦星角起动.60千瓦小容量电机和照明.请问用多大的铝芯线合适... ...星、三角起动,需截面多大的主线和电机负荷线,最好有计公式 梦见有人不断说我是魂古命的人 手相有田字纹代表什么,会越来越富的女人手相 ...旁边有活水流出!同时还梦见一个道士给看手相说过一阵运气就会好,今... 王者荣耀新英雄影如何获得 王者新英雄影怎么获得 说话中气不足锻炼方法 ...里面的油,可以用吸油管子吸出来吗?小车,凯美瑞。不知道有防盗网吗... qq密码忘记我输入现在的qq密码为什么出现以前的qq号呢我想 访问好友的人人主页一次就会留下痕迹吗? 横拍打法能不能用直拍乒乓球拍? 直拍改横拍 横拍当直拍用好吗? 乒乓球直拍握拍不知道该不该改横排 我姿势错的地方就是一击球是 撇了~下面的有图 能改不? 抓正我很辛苦~ 电蚊拍变压器部分三极管温度很高是什么原因? 乒乓球直板改横板问题 横排和直拍什么区别 win7笔记本很卡怎么办 win7笔记本卡慢的处理办法 怎么练直拍横打 直拍改横拍难不难 乒乓球拍什么是直拍,什么是横排? 从理论上来说,直拍可以改装横拍吗? 为什么笔记本电脑可以连上手机热点连不上家里wifi? 电蚊拍电路部分问题 电蚊拍电路可以改升压电路吗? 电脑无线网怎么修改密码 剖腹产多久肚子变平? 电蚊拍三极管是什么型号 吃完流产药后需要吃头孢药吗 举例说明中外合资经营企业的项目申请、可行性研究报告、协议、章程与合同是什么关系 为什么还要写可行性研究报告 济南如何注册商标,要多少费用,在哪里办理 坐标济南,想注册一个服装类的商标,请问需要走哪些流程?麻不麻烦? 济南商标注册流程是怎样的? 济南商标注册代理机构哪家好 自己过生日唱给自己什么歌呢 梦见包子,菜卷,但是我没吃 今天2010年10月15号,是我小楠楠的13岁生日,有什么给自己的好听的生日歌呢?帮忙说说 想给儿子取个三个字的名字,姓陈,想带一昊字,陈_昊或者陈昊_。希望组合有一定的意义就好,如果能有一种... 昊恩,男,英文名怎么拼~ 梁昊恩这名字好听吗 汽车上SET是啥意思 有一首歌,其中一句歌词是“祝我生日快乐……”是哪首? 姓葛的男孩或女孩的姓名 大众set按钮有什么用? 昊恩家家的《迷路》 歌词 一个圆圈里面一个这个字母a怎么打 一个圆圈里面有a的怎么打 一个圆圈里有一个a,那个怎么打?