JAVA 计算器框架, 没有监听, 按钮无效 高手赐教。。。
java吧
全部回复
仅看楼主
level 5
Y头向后转 楼主
import java.awt.*;
import java.awt.event.KeyEvent; import javax.swing.*;
import javax.swing.border.BevelBorder; public class calc extends JFrame { /******************************** 设置标题栏 ********************************/
private Container contenPane;
private JPanel pan_txt = new JPanel();
private JPanel pan_back = new JPanel();
private JPanel pan_mc = new JPanel();
private JPanel pan_number = new JPanel();
private JTextField txt = new JTextField(); private JButton btn_back = new JButton("退格");
private JButton btn_CE = new JButton("CE");
private JButton btn_C = new JButton("C"); private JMenuBar menubar = new JMenuBar(); private JMenu menu_edit = new JMenu("编辑(E)");
private JMenuItem mi_copy = new JMenuItem("复制(C)");
private JMenuItem mi_paste = new JMenuItem("粘贴(P)"); private JMenu menu_check = new JMenu("查看(V)");
private JMenuItem mi_standard = new JMenuItem("标准型(T)");
private JMenuItem mi_science = new JMenuItem("科学型(S)");
private JMenuItem mi_Packet = new JMenuItem("数据分组(I)"); private JMenu menu_help = new JMenu("帮助(H)");
private JMenuItem mi_theme = new JMenuItem("帮助主题(H)");
private JMenuItem mi_about = new JMenuItem("关于计算器(A)"); public calc() { this.setSize(300, 280);
this.setLocationRelativeTo(null);// 使对话框显示在屏幕中间
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
contenPane = this.getContentPane();
contenPane.setLayout(null);
init();
// 添加菜单
setTitle("计算器框架制作");
} public void init() {
pan_txt.setSize(265, 30);
pan_txt.setLocation(9, 1);
// pan_mc.setBorder(BorderFactory.createLineBorder(Color.RED));//给文本加红边框
pan_txt.setLayout(new BorderLayout());
txt.setHorizontalAlignment(JTextField.RIGHT);// 从右边输入数据
pan_txt.add(txt);
contenPane.add(pan_txt); pan_back.setSize(220, 30);
pan_back.setLocation(61, 35);
// pan_back.setBorder(BorderFactory.createLineBorder(Color.RED));
pan_back.setLayout(new GridLayout(1, 4, 7, 0));// 间隙
btn_back.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
pan_back.setLayout(new GridLayout());// 布局管理 /* 颜色设置 */
btn_back.setForeground(Color.red);
btn_CE.setForeground(Color.red);
btn_C.setForeground(Color.red); pan_back.add(btn_back);
pan_back.add(btn_CE);
pan_back.add(btn_C); contenPane.add(pan_back);
menubar.add(menu_edit);
menu_edit.add(mi_copy);
menu_edit.add(mi_paste); menubar.add(menu_check);
menu_check.add(mi_standard);
menu_check.add(mi_science);
menu_check.add(mi_Packet); menubar.add(menu_help);
menu_help.add(mi_theme);
menu_help.add(mi_about); /******************************** 给标题栏设置快捷键 ********************************/ menu_edit.setMnemonic(KeyEvent.VK_E);// 快捷键
mi_copy.setMnemonic(KeyEvent.VK_C);
mi_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
KeyEvent.CTRL_MASK));// 超级快捷

2012年04月13日 12点04分 1
level 5
Y头向后转 楼主
mi_paste.setMnemonic(KeyEvent.VK_V);
mi_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
KeyEvent.CTRL_MASK)); menu_check.setMnemonic(KeyEvent.VK_V);
mi_standard.setMnemonic(KeyEvent.VK_T);
mi_science.setMnemonic(KeyEvent.VK_S);
mi_Packet.setMnemonic(KeyEvent.VK_I); menu_help.setMnemonic(KeyEvent.VK_H);
mi_theme.setMnemonic(KeyEvent.VK_H);
mi_about.setMnemonic(KeyEvent.VK_A); /******************************** 设置按键 ********************************/
pan_mc.setSize(50, 180);
pan_mc.setLocation(5, 38);
pan_mc.setLayout(new GridLayout(5, 1, 5, 5));
contenPane.add(pan_mc);
JButton jbu_null, jbu_mc, jbu_mr, jbu_ms, jbu_m;
jbu_mc = new JButton("MC");
//Border border = null;
jbu_null = new JButton();
jbu_null.setForeground(Color.red);
jbu_null.setBorder(BorderFactory.createLoweredBevelBorder());
jbu_null.setBorder(BorderFactory.createLineBorder(Color.RED));//给文本加红边框
jbu_mc.setForeground(Color.red);
jbu_mr = new JButton("MR");
jbu_mr.setForeground(Color.red);
jbu_ms = new JButton("MS");
jbu_ms.setForeground(Color.red);
jbu_m = new JButton("M+");
jbu_m.setForeground(Color.red);
pan_mc.add(jbu_null);
pan_mc.add(jbu_mc);
pan_mc.add(jbu_mr);
pan_mc.add(jbu_ms);
pan_mc.add(jbu_m);
/******************************** 设置数字按键 ********************************/
pan_number.setLayout(new GridLayout(4, 5, 5, 5));
JButton[] jbu_num = new JButton[20];
for (int i = 0; i < 20; i++) {
jbu_num[i] = new JButton();
pan_number.add(jbu_num[i]); if (i < 20) {
jbu_num[i].setBorder(BorderFactory
.createBevelBorder(BevelBorder.RAISED));
}
}
jbu_num[0].setText("7"); jbu_num[0].setForeground(Color.blue);
jbu_num[1].setText("8"); jbu_num[1].setForeground(Color.blue);
jbu_num[2].setText("9"); jbu_num[2].setForeground(Color.blue);
jbu_num[3].setText("/"); jbu_num[3].setForeground(Color.red);
jbu_num[4].setText("sqrt"); jbu_num[4].setForeground(Color.blue);
jbu_num[5].setText("4"); jbu_num[5].setForeground(Color.blue);
jbu_num[6].setText("5"); jbu_num[6].setForeground(Color.blue);
jbu_num[7].setText("6"); jbu_num[7].setForeground(Color.blue);
jbu_num[8].setText("*"); jbu_num[8].setForeground(Color.red);
jbu_num[9].setText("%"); jbu_num[9].setForeground(Color.blue);
jbu_num[10].setText("1"); jbu_num[10].setForeground(Color.blue);
jbu_num[11].setText("2"); jbu_num[11].setForeground(Color.blue);
jbu_num[12].setText("3"); jbu_num[12].setForeground(Color.blue);
jbu_num[13].setText("-"); jbu_num[13].setForeground(Color.red);
jbu_num[14].setText("1/x"); jbu_num[14].setForeground(Color.blue);
jbu_num[15].setText("0"); jbu_num[15].setForeground(Color.blue);
jbu_num[16].setText("+/-"); jbu_num[16].setForeground(Color.blue);
jbu_num[17].setText("."); jbu_num[17].setForeground(Color.blue);
jbu_num[18].setText("+"); jbu_num[18].setForeground(Color.red);
jbu_num[19].setText("="); jbu_num[19].setForeground(Color.red);
pan_number.setSize(220, 150);
pan_number.setLocation(60, 70);
contenPane.add(pan_number); this.setJMenuBar(menubar);
} public static void main(String[] args) {
// 风格设置
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new calc().setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

2012年04月13日 12点04分 2
level 12
太长了 [啊!]
2012年04月13日 12点04分 3
level 5
Y头向后转 楼主
能不能帮我看看 我不知道怎样加监听。
2012年04月13日 12点04分 4
level 9
给按钮添加事件:
1、实现ActionListener接口。如下所示:
public class Calc extends JFrame implements ActionListener
2、为按钮添加事件监听器。如下所示:
jbu_num[i] = new JButton();
jbu_num[i].addActionListener(this);
3、重写public void actionPerformed(ActionEvent e) 方法。如下所示:
public void actionPerformed(ActionEvent e) {
//获取事件的发出者
String str=e.getActionCommand();
if(str.equals("1"))
{
//功能实现
}
if(str.equals("2"))
{
//功能实现
}
......
//可用switch实现
}
菜单响应一样,实现的接口和重写的方法不一样而已。你自己去查API帮助文档吧
2012年04月15日 12点04分 5
1