想做一个JAVA简单的计算器 不知道怎么设计布局

yulunlean 2007-11-29 09:32:32
用SWING设计布局 具体怎么布局?
谁能讲解一下
...全文
712 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
power_115 2007-12-18
  • 打赏
  • 举报
回复
学习.对于自己来说要加强对AWT的理解与编程.谢谢楼主跟我学习的机会
yulunlean 2007-11-29
  • 打赏
  • 举报
回复

是这样布局吗
marryhong 2007-11-29
  • 打赏
  • 举报
回复
我上面写的没有功能 只有布局实现 具体功能还要自己加进去!~ 我的能运行出来啊!~
/**
* @(#)JiSuanQi.java
*空布局计算器
*
* @author
* @version 1.00 2007/10/24
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JiSuanQi extends JFrame{
JTextField t=new JTextField(20);
JButton[] b=new JButton[27];
String[] s={"Backspace","CE","C",
"MC","7","8","9","/","sqlt",
"MR","4","5","6","*","%",
"MS","1","2","3","-","1/x",
"M+","0","+/-",".","+","="
};

public JiSuanQi() {

this.setLayout(null);
this.add(t);
t.setBounds(10,10,400,20);

for(int i=0;i<27;i++){
b[i]=new JButton(s[i]);
b[i].addActionListener(new AAA());//注册监听
this.add(b[i]);
}

for(int i=0;i<3;i++){
b[i].setBounds(90+(60+50)*i,40,100,20);
}

int n=3;
for(int i=0;i<4;i++){
for(int j=0;j<6;j++){
if((n-3)%6==0){
b[n].setBounds(10,70+(25+5)*i,60,25);
}else{
b[n].setBounds(90+(60+5)*(j-1),70+(25+5)*i,60,25);
}
n++;
}
}

this.setSize(425,240);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
new JiSuanQi();
}
}
//监听,实现监听
class AAA implements ActionListener{
public void actionPerformed(ActionEvent e){
Object obj=e.getSource();
System.out.println(obj.toString());
}
}
qkhhxkj102 2007-11-29
  • 打赏
  • 举报
回复
要是我
还是用 BorderLayout 自己写,写多了就会知道怎么好写的
可以先从简单的布局开始,我以前也是这样的呀,现在也可以自己写了,太复杂的,可以想一下可不可以换一种设计的方法
我想没有必要跟自己过不去
dylloveyou 2007-11-29
  • 打赏
  • 举报
回复
可以仿照windows自带的计算器,功能不必那么强就行。
yang_zhenghua 2007-11-29
  • 打赏
  • 举报
回复
//运行不了
Exception in thread "main" java.lang.UnsatisfiedLinkError: getCreatedFontHandle
at sun.font.FontManager.getCreatedFontHandle(Native Method)
at sun.font.FontManager.setSameHandle(FontManager.java:429)
at javax.swing.plaf.FontUIResource.<init>(FontUIResource.java:42)
at javax.swing.plaf.metal.DefaultMetalTheme$FontDelegate.getFont(DefaultMetalTheme.java:230)
at javax.swing.plaf.metal.DefaultMetalTheme.getFont(DefaultMetalTheme.java:184)
at javax.swing.plaf.metal.DefaultMetalTheme.getUserTextFont(DefaultMetalTheme.java:168)
at javax.swing.plaf.metal.MetalLookAndFeel$FontActiveValue.createValue(MetalLookAndFeel.java:1684)
at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:200)
at javax.swing.UIDefaults.get(UIDefaults.java:130)
at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:44)
at javax.swing.UIDefaults.getFont(UIDefaults.java:350)
at javax.swing.UIManager.getFont(UIManager.java:567)
at javax.swing.plaf.basic.BasicTextUI.installDefaults(BasicTextUI.java:217)
at javax.swing.plaf.basic.BasicTextUI.installUI(BasicTextUI.java:682)
at javax.swing.plaf.basic.BasicTextFieldUI.installUI(BasicTextFieldUI.java:57)
at javax.swing.JComponent.setUI(JComponent.java:653)
at javax.swing.text.JTextComponent.setUI(JTextComponent.java:298)
at javax.swing.text.JTextComponent.updateUI(JTextComponent.java:308)
at javax.swing.text.JTextComponent.<init>(JTextComponent.java:282)
at javax.swing.JTextField.<init>(JTextField.java:207)
at javax.swing.JTextField.<init>(JTextField.java:174)
at JiSuanQi.<init>(JiSuanQi.java:12)
at JiSuanQi.main(JiSuanQi.java:55)
marryhong 2007-11-29
  • 打赏
  • 举报
回复
计算器布局来了!~ 我主要用的是空布局 因为自己能控制,流式布局不好控制位置!~

/**
* @(#)JiSuanQi.java
*空布局计算器
*
* @author
* @version 1.00 2007/10/24
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JiSuanQi extends JFrame{
JTextField t=new JTextField(20);
JButton[] b=new JButton[27];
String[] s={"Backspace","CE","C",
"MC","7","8","9","/","sqlt",
"MR","4","5","6","*","%",
"MS","1","2","3","-","1/x",
"M+","0","+/-",".","+","="
};

public JiSuanQi() {

this.setLayout(null);
this.add(t);
t.setBounds(10,10,400,20);

for(int i=0;i<27;i++){
b[i]=new JButton(s[i]);
b[i].addActionListener(new AAA());//注册监听
this.add(b[i]);
}

for(int i=0;i<3;i++){
b[i].setBounds(90+(60+50)*i,40,100,20);
}

int n=3;
for(int i=0;i<4;i++){
for(int j=0;j<6;j++){
if((n-3)%6==0){
b[n].setBounds(10,70+(25+5)*i,60,25);
}else{
b[n].setBounds(90+(60+5)*(j-1),70+(25+5)*i,60,25);
}
n++;
}
}

this.setSize(425,240);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
new JiSuanQi();
}
}
//监听,实现监听
class AAA implements ActionListener{
public void actionPerformed(ActionEvent e){
Object obj=e.getSource();
System.out.println(obj.toString());
}
}
Dan1980 2007-11-29
  • 打赏
  • 举报
回复
布局管理器基本上都是awt的,swing添加了一些新的,但主要还是靠awt。
计算器可以用BorderLayout和GridLayout结合,外层用BorderLayout,数字键盘用GridLayout。自己试试吧,有了问题再来问。
wuy13862574600 2007-11-29
  • 打赏
  • 举报
回复
一个简单的布局n简单,注意一些小细节就有点麻烦。。
主要的还是事件的响应的处理了。
Dan1980 2007-11-29
  • 打赏
  • 举报
回复
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculator extends JFrame implements ActionListener {

char[] buttonLabels = {'7', '8', '9', '+', '4', '5', '6', '-', '1', '2', '3', '*', '0', '.', '=', '/'};
JTextField output;

public Calculator() {
super("计算器");

JPanel main = new JPanel() { public Insets getInsets() { return new Insets(4, 4, 4, 4); } };
main.setLayout(new BorderLayout(4, 4));

// 上半部分
JPanel top = new JPanel();
top.setLayout(new BorderLayout(4, 4));
output = new JTextField();
output.setHorizontalAlignment(JTextField.RIGHT);
JButton clear = new JButton("C");
clear.addActionListener(this);
top.add(output, BorderLayout.CENTER);
top.add(clear, BorderLayout.EAST);
main.add(top, BorderLayout.NORTH);

// 下半部分
JPanel bottom = new JPanel();
bottom.setLayout(new GridLayout(4, 4, 4, 4));
for (int i=0; i<buttonLabels.length; i++) {
JButton btn = new JButton(Character.toString(buttonLabels[i]));
btn.addActionListener(this);
bottom.add(btn);
}
main.add(bottom, BorderLayout.CENTER);

setContentPane(main);
pack();
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e) {
char c = ((JButton)e.getSource()).getText().charAt(0);
if (c == 'C') output.setText("");
else output.setText(output.getText() + c);
}

public static void main(String[] args) {
new Calculator().setVisible(true);
}
}
GoGo1102 2007-11-29
  • 打赏
  • 举报
回复
用GridLayout布局试试
题目:简易计算器设计 一、设计概要 1、设计内容 计算器设计使用图形用户界面实现,能够进行简单的加、减、乘、除四则计算 ; 参与运算的数字通过点击按钮输入。 2、程序流程图 详细设计 import java.awt.BorderLayout; //导入AWT页面设置类 import java.awt.Button; //导入AWT按钮类 import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; //导入AWT鼠标监视器 import java.awt.event.WindowEvent; import java.awt.event.WindowListener;//导入AWT窗口监视器 //创建计算器的主窗口,该类含有main函数 public class Calculator { public static void main(String[] args) { //创建Frame对象 Frame f = new Frame("Calculator"); //创建文本框,用于接收数字和操作 final TextField tf = new TextField(); //声明一个面板用于存放按钮 Panel p = new Panel(); f.setLayout(new BorderLayout()); //将文本框放在北部 f.add(tf, BorderLayout.NORTH); //将按钮放于中部 f.add(p, BorderLayout.CENTER); //设置布局模式 p.setLayout(new GridLayout(4, 4)); //创建16个按钮 Button one = new Button("1"); Button two = new Button("2"); Button three = new Button("3"); Button four = new Button("4"); Button five = new Button("5"); Button six = new Button("6"); Button seven = new Button("7"); Button eight = new Button("8"); Button nine = new Button("9"); Button zero = new Button("0"); Button add = new Button("+"); Button sub = new Button("-"); Button mul = new Button("*"); Button div = new Button("/"); Button decimal = new Button("."); final Button equal = new Button("="); //将按钮添加到P p.add(one); p.add(two); p.add(three); p.add(four); p.add(five); p.add(six); p.add(seven); p.add(eight); p.add(nine); p.add(zero); p.add(add); p.add(sub); p.add(mul); p.add(div); p.add(decimal); p.add(equal); final String[] ary = {"", null, ""}; //该类为主类创建数字按钮对象 class NumMouseListener implements MouseListener{ public void mouseClicked(MouseEvent e) { String num = ((Button)e.getSource()).getLabel().trim(); if(ary[1] == null) { ary[0] = ary[0] + "" + num; } else{ ary[2] = ary[2] + "" + num; } tf.setText(tf.getText() + "" + num); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(Mous

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧