需要实现进制的相互转换,十六进制到十进制,按住SHIFT实现数字旁边的符号的功能,需要用键盘监听,但我不是很懂,不会添加,请大仙帮帮我!!
代码如下:
以下是简单的计算器程序,可以进行求开根以及幂的功能,还可以十进制转换成二进制及十六进制,但我想实现相互的转换,在1.2.3.4.5.6分别添加了a到f 想用键盘按住shift键来实现,要添加一个键盘监听,但不知道怎么添加,怎么修改,请路过的大仙帮帮忙!!!
原程序如下:
import java.awt.*;
import java.awt.event.*;
import java.lang.*;public class sisuanjik implements ActionListener {
MenuBar mb;
Frame win=new Frame("jisuanqi");
Label label=new Label();
Panel num=new Panel();
Panel meth=new Panel();
TextArea display=new TextArea();
Button add1,sub,mul,div,sqrt,mee;
Button hex,ox;
int no1,no2,no4;
float no3;
double no5,no6;
String ch,ch3,ch5,ch6;
Button res=new Button("=");
Button canc=new Button("CE");
Button but7=new Button("7");
Button but8=new Button("8");
Button but9=new Button("9");
Button but4=new Button("4(D)");
Button but5=new Button("5(E)");
Button but6=new Button("6(F)");
Button but1=new Button("1(A)");
Button but2=new Button("2(B)");
Button but3=new Button("3(C)");
Button but0=new Button("0");
public void test()
{ add1=new Button("+");
sub=new Button("-");
mul=new Button("*");
div=new Button("/");
sqrt=new Button("sqrt");
mee=new Button("^");
hex=new Button("十六进制");
ox=new Button("二进制");
win.setLayout(new GridLayout(4,0));
num.setLayout(new GridLayout(4,3));
meth.setLayout(new GridLayout(0,4));
num.add(but7);
num.add(but8);
num.add(but9);
num.add(but4);
num.add(but5);
num.add(but6);
num.add(but1);
num.add(but2);
num.add(but3);
num.add(but0);
num.add(canc);
num.add(res);
but0.addActionListener(this);
but1.addActionListener(this);
but2.addActionListener(this);
but3.addActionListener(this);
but4.addActionListener(this);
but5.addActionListener(this);
but6.addActionListener(this);
but7.addActionListener(this);
but8.addActionListener(this);
but9.addActionListener(this);
canc.addActionListener(new CE());
add1.addActionListener(new METH());
sub.addActionListener(new METH());
mul.addActionListener(new METH());
div.addActionListener(new METH());
res.addActionListener(new RES());
hex.addActionListener(new H());
ox.addActionListener(new O());
sqrt.addActionListener(new sq());
mee.addActionListener(new METH());
add1.setSize(5, 5);
meth.add(add1);
meth.add(sub);
meth.add(mul);
meth.add(div);
meth.add(hex);
meth.add(ox);
meth.add(sqrt);
meth.add(mee);
win.add(display);
win.add(num);
win.add(meth);
win.add(label);
win.setSize(400,400);
win.setVisible(true);
win.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e){
display.setBackground(Color.white);
display.append(e.getActionCommand());
}
private class CE implements ActionListener{
public void actionPerformed(ActionEvent ex){
display.setBackground(Color.white);
display.setText("");
no1=0;
no2=0;
no3=0;
no4=0;
no5=0;
no6=0;}
}
private class METH implements ActionListener{
public void actionPerformed(ActionEvent ey){
no1=Integer.parseInt(display.getText());
display.setText("");
ch=ey.getActionCommand();
}
} private class RES implements ActionListener{
public void actionPerformed(ActionEvent es){
no2=Integer.parseInt(display.getText());
if(ch=="+")
{no3=no1+no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="-")
{no3=no1-no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="*")
{no3=no1*no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="/")
{no3=(float)no1/no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="^")
{int i=0,m=no1;
double s=1;
for (i=1;i<=no2;i++)
s=s*m;
no6=s;
ch6=Double.toString(no6);
display.setText(ch6);
}
}
}
private class sq implements ActionListener{
public void actionPerformed(ActionEvent ec){
no5=Double.parseDouble(display.getText()); if (no5 < 0) {
}
else
ch5 = Double.toString(Math.sqrt(no5));
display.setText(ch5);
}
}private class H implements ActionListener{
public void actionPerformed(ActionEvent ed){
no4=Integer.parseInt(display.getText());
display.setText("");
int[] c=new int[10];
int t=0,i=0;
do
{
c[t]=no4%16;
t++;
no4=no4/16;
} while((no4/16)!=0);
c[t]=no4%16;
for(i=t;i>=0;i--)
{
if(c[i]==10)
display.append("A");
else if(c[i]==11)
display.append("B");
else if(c[i]==12)
display.append("C");
else if(c[i]==13)
display.append("D");
else if(c[i]==14)
display.append("E");
else if(c[i]==15)
display.append("F");
else display.append(Integer.toString(c[i]));
}
}
}
private class O implements ActionListener{
public void actionPerformed(ActionEvent e){
no4=Integer.parseInt(display.getText());
int a[];
display.setText("");
a=new int[30];
int i=0;
while(no4/2!=0)
{
a[i]=no4%2;
no4=no4/2;
i++;
}
a[i]=no4%2;
for(;i>=0;i--)
display.append(Integer.toString(a[i]));
}
}
public static void main (String[]args){
sisuanjik s=new sisuanjik();
s.test();
}
}
代码如下:
以下是简单的计算器程序,可以进行求开根以及幂的功能,还可以十进制转换成二进制及十六进制,但我想实现相互的转换,在1.2.3.4.5.6分别添加了a到f 想用键盘按住shift键来实现,要添加一个键盘监听,但不知道怎么添加,怎么修改,请路过的大仙帮帮忙!!!
原程序如下:
import java.awt.*;
import java.awt.event.*;
import java.lang.*;public class sisuanjik implements ActionListener {
MenuBar mb;
Frame win=new Frame("jisuanqi");
Label label=new Label();
Panel num=new Panel();
Panel meth=new Panel();
TextArea display=new TextArea();
Button add1,sub,mul,div,sqrt,mee;
Button hex,ox;
int no1,no2,no4;
float no3;
double no5,no6;
String ch,ch3,ch5,ch6;
Button res=new Button("=");
Button canc=new Button("CE");
Button but7=new Button("7");
Button but8=new Button("8");
Button but9=new Button("9");
Button but4=new Button("4(D)");
Button but5=new Button("5(E)");
Button but6=new Button("6(F)");
Button but1=new Button("1(A)");
Button but2=new Button("2(B)");
Button but3=new Button("3(C)");
Button but0=new Button("0");
public void test()
{ add1=new Button("+");
sub=new Button("-");
mul=new Button("*");
div=new Button("/");
sqrt=new Button("sqrt");
mee=new Button("^");
hex=new Button("十六进制");
ox=new Button("二进制");
win.setLayout(new GridLayout(4,0));
num.setLayout(new GridLayout(4,3));
meth.setLayout(new GridLayout(0,4));
num.add(but7);
num.add(but8);
num.add(but9);
num.add(but4);
num.add(but5);
num.add(but6);
num.add(but1);
num.add(but2);
num.add(but3);
num.add(but0);
num.add(canc);
num.add(res);
but0.addActionListener(this);
but1.addActionListener(this);
but2.addActionListener(this);
but3.addActionListener(this);
but4.addActionListener(this);
but5.addActionListener(this);
but6.addActionListener(this);
but7.addActionListener(this);
but8.addActionListener(this);
but9.addActionListener(this);
canc.addActionListener(new CE());
add1.addActionListener(new METH());
sub.addActionListener(new METH());
mul.addActionListener(new METH());
div.addActionListener(new METH());
res.addActionListener(new RES());
hex.addActionListener(new H());
ox.addActionListener(new O());
sqrt.addActionListener(new sq());
mee.addActionListener(new METH());
add1.setSize(5, 5);
meth.add(add1);
meth.add(sub);
meth.add(mul);
meth.add(div);
meth.add(hex);
meth.add(ox);
meth.add(sqrt);
meth.add(mee);
win.add(display);
win.add(num);
win.add(meth);
win.add(label);
win.setSize(400,400);
win.setVisible(true);
win.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e){
display.setBackground(Color.white);
display.append(e.getActionCommand());
}
private class CE implements ActionListener{
public void actionPerformed(ActionEvent ex){
display.setBackground(Color.white);
display.setText("");
no1=0;
no2=0;
no3=0;
no4=0;
no5=0;
no6=0;}
}
private class METH implements ActionListener{
public void actionPerformed(ActionEvent ey){
no1=Integer.parseInt(display.getText());
display.setText("");
ch=ey.getActionCommand();
}
} private class RES implements ActionListener{
public void actionPerformed(ActionEvent es){
no2=Integer.parseInt(display.getText());
if(ch=="+")
{no3=no1+no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="-")
{no3=no1-no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="*")
{no3=no1*no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="/")
{no3=(float)no1/no2;
ch3=Float.toString(no3);
display.setText(ch3);
}
else if(ch=="^")
{int i=0,m=no1;
double s=1;
for (i=1;i<=no2;i++)
s=s*m;
no6=s;
ch6=Double.toString(no6);
display.setText(ch6);
}
}
}
private class sq implements ActionListener{
public void actionPerformed(ActionEvent ec){
no5=Double.parseDouble(display.getText()); if (no5 < 0) {
}
else
ch5 = Double.toString(Math.sqrt(no5));
display.setText(ch5);
}
}private class H implements ActionListener{
public void actionPerformed(ActionEvent ed){
no4=Integer.parseInt(display.getText());
display.setText("");
int[] c=new int[10];
int t=0,i=0;
do
{
c[t]=no4%16;
t++;
no4=no4/16;
} while((no4/16)!=0);
c[t]=no4%16;
for(i=t;i>=0;i--)
{
if(c[i]==10)
display.append("A");
else if(c[i]==11)
display.append("B");
else if(c[i]==12)
display.append("C");
else if(c[i]==13)
display.append("D");
else if(c[i]==14)
display.append("E");
else if(c[i]==15)
display.append("F");
else display.append(Integer.toString(c[i]));
}
}
}
private class O implements ActionListener{
public void actionPerformed(ActionEvent e){
no4=Integer.parseInt(display.getText());
int a[];
display.setText("");
a=new int[30];
int i=0;
while(no4/2!=0)
{
a[i]=no4%2;
no4=no4/2;
i++;
}
a[i]=no4%2;
for(;i>=0;i--)
display.append(Integer.toString(a[i]));
}
}
public static void main (String[]args){
sisuanjik s=new sisuanjik();
s.test();
}
}
* @see KeyAdapter
* @see MouseEvent
* @see MouseAdapter
* @see MouseMotionAdapter在这几个事件中都可以使用
public boolean isShiftDown()
来判断是否按下shift键。