java layout.setVgap_实验六 Java图形用户界面

1.实验目的

(1)掌握图形用户界面基本组件。

(2)了解如何使用布局管理器对组件进行管理。

(3)掌握Java事件处理机制。

2.实验内容

实验题1

编写一个模拟计算器的程序,使用面板和网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式和结果显示在文本框中。

[基本要求] 编写完整程序

package bag01;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.SwingConstants;

public class Calculator extends JFrame{

public

static int fun(String s)

{

int tmp=0,i=0,result=0;

while(i='0'&&s.charAt(i)<='9')

{

tmp=tmp*10+s.charAt(i)-'0';

i++;

}

result=tmp;

for( ;i

{

char exp=s.charAt(i);

i++;

tmp=0;

while(i='0'&&s.charAt(i)<='9')

{

tmp=tmp*10+s.charAt(i)-'0';

i++;

}

if(exp=='+') result=result+tmp;

else if(exp=='-') result-=tmp;

else if(exp=='*') result*=tmp;

else if(exp=='/') result/=tmp;

else result++;

}

return result;

}

Calculator()

{

super("计算器");

setResizable(true);

setBounds(100,100,300,300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel viewPanel=new JPanel();

getContentPane().add(viewPanel,BorderLayout.NORTH);

final JTextField textField=new JTextField();

textField.setEditable(true);

textField.setHorizontalAlignment(SwingConstants.LEFT);

textField.setColumns(18);

viewPanel.add(textField);

viewPanel.setBounds(0,0,200,200);

JPanel buttonPanel=new JPanel();

GridLayout gridLayout=new GridLayout(4,0);

gridLayout.setVgap(10);

gridLayout.setHgap(10);

buttonPanel.setLayout(gridLayout);

getContentPane().add(buttonPanel,BorderLayout.CENTER);

String [][]names={ {"1","2","3","+"},

{"4","5","6","-"},

{"7","8","9","*"},

{"0","清除","=","/"}};

JButton[][] buttons=new JButton[4][4];

//定义监听器

class ButtonAction implements ActionListener

{

@Override

public void actionPerformed(ActionEvent e) {

JButton button=(JButton) e.getSource();

String name=e.getActionCommand();

int n;

if(name=="清除")

textField.setText("");

else if(name=="=")

{

String str=textField.getText();

n=fun(str);

textField.setText(str+"="+String.valueOf(n));

}

else

{

name=textField.getText()+name;

textField.setText(name);

}

}

}

for(int row=0;row

for(int col=0;col

{

buttons[row][col]=new JButton(names[row][col])

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值