新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
import java.awt.*;
专注于为中小企业提供成都网站设计、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业富源免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
import java.awt.event.*;
import javax.swing.*;
class General extends JFrame implements ActionListener
{
String args[]={"退格","总清","清零","/","1","2","3","+","4","5","6","-","7","8","9","*","0","+/-",".","="};
JButton jb[]=new JButton[20];
JPanel p1=new JPanel();
JTextField jtf=new JTextField(15);
double num1,num2,jieguo;
char c,ch;
public General()
{
Container ct=getContentPane();
jtf.addKeyListener(new KA());
jtf.setHorizontalAlignment(JTextField.RIGHT);
ct.add(jtf,"North");
p1.setLayout(new GridLayout(5,4));
for(int i=0;i20;i++)
{
jb[i]=new JButton(args[i]);
jb[i].addActionListener(this);
p1.add(jb[i]);
}
ct.add(p1);
pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[])
{
new General();
}
public void actionPerformed(ActionEvent e)// 监听按键
{
String str=e.getActionCommand().trim();
if("0123456789.".indexOf(str)!=-1)
{
if(jtf.getText().equals("0"))jtf.setText(null);
jtf.setText(jtf.getText()+str);
return;
}
if("+-*/".indexOf(str)!=-1)
{
num1=Double.parseDouble(jtf.getText());
c=str.charAt(0);
jtf.setText(null);
return;
}
else if(str.equals("="))
{
num2=Double.parseDouble(jtf.getText());
switch(c)
{
case '+': jieguo=num1+num2; break;
case '-': jieguo=num1-num2; break;
case '*': jieguo=num1*num2; break;
case '/': jieguo=num1/num2; break;
}
jtf.setText(Double.toString(jieguo));
}
else if(str.equals("+/-"))
{
if(jtf.getText().isEmpty()==false)
{
Double lnum=-(Double.parseDouble(jtf.getText()));
jtf.setText(Double.toString(lnum));
}
else
{
jtf.setText("-");
}
}
else if(str.equals("清空"))
{
jtf.setText(null);
}
else if(str.equals("清零"))
{
jtf.setText("0");
}
else if(str.equals("退格"))
{
jtf.setText(jtf.getText().substring(0,jtf.getText().length()-1));
}
}
class KA extends KeyAdapter // 监听键盘
{
public void keyPressed(KeyEvent e)
{
char ch=e.getKeyChar();
if("+-*/".indexOf(ch)!=-1)
{
num1=Double.parseDouble(jtf.getText());
c=ch;
}
if(ch=='='|ch==e.VK_ENTER)
{
num2=Double.parseDouble(jtf.getText());
switch(c)
{
case '+': jieguo=num1+num2; break;
case '-': jieguo=num1-num2; break;
case '*': jieguo=num1*num2; break;
case '/': jieguo=num1/num2; break;
}
}
}
public void keyReleased(KeyEvent e)
{
char ch=e.getKeyChar();
if("+-*/".indexOf(ch)!=-1)
{
jtf.setText(null);
}
if(ch=='='|e.getKeyCode()==e.VK_ENTER)
{
jtf.setText(Double.toString(jieguo));
}
}
}
}
是的啊,退格就是\b。你可以用e.KeyCode==8试试。bs(backspace)
我这里有一个ascii码,你以后可以对照看
String str = "12345";
str = str.substring(0, str.length()-1);
int a = Integer.parseInt(str);
可能是因为eclipse的console吧。。可能显示模式是Unicode,然后\b就变成了个框框。你可以试一下直接在cmd(命令提示符)里面用java命令行跑
package jisuanqi;
import java.awt.BorderLayout;
import java.awt.Color;
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.JPanel;
import javax.swing.JTextField;
public class Calculator extends JFrame implements ActionListener{ //建一个Calculator类继承JFrame实现ActionListener
public static void main (String args[]){
Calculator calculator=new Calculator(); //创建对象calculator
calculator.setVisible(true); //窗口可见
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭图标后结束程序
}
String keys []={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//表示计算器的键的名字
String command []={"backspace","C"};//功能键
JButton KEYS []=new JButton[keys.length];//创建键对象
JButton COMMAND[]=new JButton[command.length];//功能键对象
static JTextField resultSet=new JTextField();//建一个文本框
double resultNum; //结果
String operator="";//运算符 ---------------------------
public Calculator() {// 构造函数
super();
init();//初始化计算器
this.setBackground(Color.WHITE);//this代表用当前构造方法创建的对象
this.setTitle("简单计算器"); //窗口标题
this.setLocation(500, 300); //窗口大小
this.pack(); //使组件大小合适
}
void init() { //初始化计算器
resultSet.setHorizontalAlignment(JTextField.RIGHT); //设置文本框内容向右对齐
resultSet.setBackground(Color.WHITE); //设置文本框背景颜色
JPanel keysPanel=new JPanel();//创建一个面板
keysPanel.setLayout(new GridLayout(4,5,3,3)); //设置面板的布局为网格型
for (int i=0;ikeys.length;i++) { //把数字键和符号键设为按钮
KEYS[i]=new JButton(keys[i]);
keysPanel.add(KEYS[i]); //把按钮加到面板中
}
JPanel comPanel=new JPanel(); //创建命令键面板
comPanel.setLayout(new GridLayout(1,2,3,3));//设置面板布局为网格型
for(int i=0;icommand.length;i++) { //把命令键设置为按钮
COMMAND[i]=new JButton(command[i]);
comPanel.add(COMMAND[i]); //把按钮放到面板上
}
JPanel pane=new JPanel(); //创建面板
pane.setLayout(new BorderLayout()); //面板布局为区域型
pane.add(comPanel,BorderLayout.NORTH); //把命令面板加入到大面板上
pane.add(keysPanel,BorderLayout.CENTER); //把数字键面板加到大面板
getContentPane().setLayout(new BorderLayout()); //设置底层容器的布局为区域型
getContentPane().add(resultSet,BorderLayout.NORTH); //把文本框放到北面
getContentPane().add(pane,BorderLayout.CENTER); //把大面板放到中央
for(int i=0;ikeys.length;i++){
KEYS[i].addActionListener(this);//为按钮添加监听器
}
for(int i=0;icommand.length;i++){
COMMAND[i].addActionListener(this);
}
}
//处理事件
public void actionPerformed(ActionEvent e){
String lable=e.getActionCommand();
if(lable.equals("backspace")){ //如果命令为backspace
backspace();
}
else if (lable.equals("C")){ //如果命令为C
Clear();
}
else if (Character.isDigit(lable.charAt(0))) { //---------------
if(resultSet.getText().equals("0")){
resultSet.setText("");
}
resultSet.setText(resultSet.getText()+lable);
}
else if (lable.equals(".")){
point();
}
else if (lable.equals("=")){
equal();
}
else {
doOperation();
resultSet.setText("");
operator=lable;
}
}
void point() {
String s=resultSet.getText();
if(s.indexOf(".")==-1){
resultSet.setText(s+".");
}
}
void equal() {
doOperation();
resultSet.setText(""+resultNum);
operator="";
}
void doOperation() {
double m=Double.parseDouble(resultSet.getText());
if(operator.equals("")){
resultNum=m;
}
if(operator.equals("+")){
resultNum+=m;
}
if(operator.equals("-")){
resultNum-=m;
}
if(operator.equals("*")){
resultNum*=m;
}
if(operator.equals("/")){
resultNum/=m;
}
}
void Clear() { //清零
resultSet.setText("0");
}
void backspace() { //退格
String text =resultSet.getText();
if (text.length()0){
resultSet.setText(text.substring(0, text.length()-1));//将文本最后一个字符删除
}
else if (text.length()==0){
resultSet.setText("0");
}
}
}
\b 代表 一个单词的边界
这是 JDK1.6 中的 API 说的
\b是正则表达式规定的一个特殊代码(某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置
;nbsp; 如何这篇文章你能看完,相信一定对你有相当大的帮忙