黑马程序员技术交流社区
标题:
关于监听以及功能的的实现问题
[打印本页]
作者:
小马初长成
时间:
2014-4-25 17:04
标题:
关于监听以及功能的的实现问题
本帖最后由 小马初长成 于 2014-4-27 22:16 编辑
//这个程序完成了计算器界面的开发,未完善其对应的功能。求大神完善。最后代码有点长,大神们可以帮忙优化下
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
public class A6_6 extends JFrame implements ActionListener
{
JTextField wbk;
JButton an1,an2,an3,an4,an5,
an6,an7,an8,an9,an10,
an11,an12,an13,an14,an15,an16;
JPanel mb1,mb2;
JMenuBar cd;
JMenu cd1,cd2,cd3;
JMenuItem cdx2,cdx3,cdx4,cdx5,cdx6,cdx7;
JMenu ej; JMenuItem ej1,ej2;
public static void main(String[] args){
A6_6 Lx1=new A6_6();
}
public A6_6()
{
cd=new JMenuBar();
cd1=new JMenu("查看(V)");
cd1.setMnemonic('V');
cd2=new JMenu("编辑(E)");
cd1.setMnemonic('E');
cd3=new JMenu("帮助(H)");
cd1.setMnemonic('H');
wbk=new JTextField(19);
JTextField display = new JTextField("0");
mb1=new JPanel();
mb2=new JPanel();
an1=new JButton("1");
an2=new JButton("2");
an3=new JButton("3");
an4=new JButton("4");
an5=new JButton("5");
an6=new JButton("6");
an7=new JButton("7");
an8=new JButton("8");
an9=new JButton("9");
an10=new JButton("0");
an11=new JButton(".");
an12=new JButton("Enter");
an13=new JButton("+");
an14=new JButton("-");
an15=new JButton("*");
an16=new JButton("/");
ej=new JMenu("新建");
ej1=new JMenuItem("文件",new ImageIcon("image/"));
ej2=new JMenuItem("模板");
cdx2=new JMenuItem("打开",new ImageIcon("image/"));
cdx3=new JMenuItem("保存(s)",new ImageIcon("image/"));
cdx3.setMnemonic('S');
cdx4=new JMenuItem("另存为",new ImageIcon("image/"));
cdx5=new JMenuItem("页面设置",new ImageIcon("image/"));
cdx6=new JMenuItem("打印",new ImageIcon("image/"));
cdx7=new JMenuItem("退出",new ImageIcon("image/"));
an1.addActionListener(this);
an1.setActionCommand("1");
an2.addActionListener(this);
an2.setActionCommand("2");
an3.addActionListener(this);
an3.setActionCommand("3");
an4.addActionListener(this);
an4.setActionCommand("4");
an5.addActionListener(this);
an5.setActionCommand("5");
an6.addActionListener(this);
an6.setActionCommand("6");
an7.addActionListener(this);
an7.setActionCommand("7");
an8.addActionListener(this);
an8.setActionCommand("8");
an9.addActionListener(this);
an9.setActionCommand("9");
an10.addActionListener(this);
an10.setActionCommand("0");
an11.addActionListener(this);
an11.setActionCommand(".");
an12.addActionListener(this);
an12.setActionCommand("Enter");
an13.addActionListener(this);
an13.setActionCommand("+");
an14.addActionListener(this);
an14.setActionCommand("-");
an15.addActionListener(this);
an15.setActionCommand("*");
an16.addActionListener(this);
an16.setActionCommand("/");
this.setJMenuBar(cd);
ej.add(ej1); ej.add(ej2);
cd1.add(ej); cd1.add(cdx2); cd2.add(cdx3); cd3.add(cdx4);
cd1.addSeparator();
cd1.add(cdx5); cd1.add(cdx6);
cd1.addSeparator();//二级菜单中的两条横线
cd1.add(cdx7);
cd.add(cd1); cd.add(cd2); cd.add(cd3);
this.add(wbk);
this.setLayout(new FlowLayout());
mb2.setLayout(new GridLayout(6,3,9,5));
mb2.add(an1); mb2.add(an2); mb2.add(an3);
mb2.add(an4); mb2.add(an5); mb2.add(an6);
mb2.add(an7); mb2.add(an8); mb2.add(an9);
mb2.add(an10); mb2.add(an11); mb2.add(an16);
mb2.add(an13); mb2.add(an14); mb2.add(an15);
mb2.add(an12);
this.add(mb1,BorderLayout.NORTH);
this.add(mb2,BorderLayout.CENTER);
this.setTitle("计算器");//设置窗口标题
this.setSize(260,350);//括号中的数字是像素
this.setLocation(200,200);//括号中的数字是像素位置
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭界面占用资源管理语句
this.setVisible(true);//显示界面
}
public void actionPerformed(ActionEvent e) {
System.out.println("按钮起作用了");
if(e.getActionCommand().equals("1"))
{
//这里不知道要添加什么可以让计算器实现功能,在此基础上求大神完善下
}
}
}
复制代码
作者:
世界公民
时间:
2014-4-25 18:39
我去,这................................
心有余而力不足啊。:P
作者:
eternallove
时间:
2014-4-25 19:13
想帮你写下去的话,恐怕要累死人的,这样写代码量太大了。我给你一个例子去参考一下,祝你成功!!!
import java.awt.*;
import java.awt.event.*;
public class Calculate
{
public static void main(String[] args)
{
new Calculater().launch();
}
}
@SuppressWarnings("serial")
class Calculater extends Frame
{
private boolean firstFlag = true;
private String str1 = "";
private String str2 = "";
private TextField tf = null;
private String strOper = null;
public void launch()
{
setTitle("计算器");
tf = new TextField(30);
tf.setBackground(Color.white);
add(tf, BorderLayout.NORTH);
Panel p = new Panel(new GridLayout(4, 4, 5, 5));
for (int i=0; i<10; ++i)
{
Button bn = new Button("" + i);
bn.setActionCommand("数字");
p.add(bn);
bn.addActionListener(new MyMonitor());
}
Button bnAdd = new Button("+");
p.add(bnAdd);
bnAdd.setActionCommand("算术操作");
bnAdd.addActionListener(new MyMonitor());
Button bnSub = new Button("-");
p.add(bnSub);
bnSub.setActionCommand("算术操作");
bnSub.addActionListener(new MyMonitor());
Button bnMult = new Button("*");
bnMult.addActionListener(new MyMonitor());
p.add(bnMult);
bnMult.setActionCommand("算术操作");
Button bnDiv = new Button("/");
p.add(bnDiv);
bnDiv.setActionCommand("算术操作");
bnDiv.addActionListener(new MyMonitor());
Button bnEq = new Button("=");
p.add(bnEq);
bnEq.setActionCommand("=");
bnEq.addActionListener(new MyMonitor());
Button bnClear = new Button("清零");
p.add(bnClear);
bnClear.setActionCommand("清零");
bnClear.addActionListener(new MyMonitor());
p.add(bnAdd);
p.add(bnSub);
p.add(bnMult);
p.add(bnDiv);
p.add(bnEq);
p.add(bnClear);
add(p, BorderLayout.CENTER);
setBounds(300, 300,300, 300);
setBackground(Color.WHITE);
setVisible(true);
addWindowListener( new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(-1);
}
}
);
}
class MyMonitor implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String strAc = e.getActionCommand();
Button bn = (Button)e.getSource();
String strLb = bn.getLabel();
if (strAc.equals("数字"))
{
if (firstFlag)
{
str1 = str1 + strLb;
tf.setText(str1);
}
else
{
str2 = str2 + strLb;
tf.setText(str2);
}
}
else if (strAc.equals("算术操作"))
{
strOper = strLb;
firstFlag = false;
}
else if (strAc.equals("="))
{
result();
}
else if (strAc.equals("清零"))
{
str1 = str2 = "";
tf.setText("");
firstFlag = true;
}
}
}
public void result()
{
double num1 = Double.parseDouble(str1);
double num2 = Double.parseDouble(str2);
double num3 = 0;
if (strOper.equals("+"))
{
num3 = num1 + num2;
}
else if (strOper.equals("-"))
{
num3 = num1 - num2;
}
else if (strOper.equals("*"))
{
num3 = num1 * num2;
}
else if (strOper.equals("/"))
{
num3 = num1 / num2;
}
tf.setText("" + num3);
str1 = String.valueOf(num3);
str2 = "";
}
}
复制代码
作者:
2528870651
时间:
2014-4-25 22:48
今天刚刚学GUI
作者:
小马初长成
时间:
2014-4-25 23:39
eternallove 发表于 2014-4-25 19:13
想帮你写下去的话,恐怕要累死人的,这样写代码量太大了。我给你一个例子去参考一下,祝你成功!!! ...
多谢了,这就去研究研究
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2