遇到点问题,高手指点一二。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/*
* 实现简单计算器
*
*/
public class CalGUI {
public static void main(String[] args) {
JSQFrame frame = new JSQFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class JSQFrame extends JFrame {
JTextField text1;
public JSQFrame(){
JPanel panel = new JPanel();
text1 = new JTextField(35);
text1.setText("");
text1.setEditable(false);
panel.add(text1);
JSQPanel jsqpanel = new JSQPanel(this);
Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.NORTH);
contentPane.add(jsqpanel);
setSize(400, 200);
setTitle("计算器");
setResizable(false);
}
}
class JSQPanel extends JPanel implements ActionListener{
JButton button[] = new JButton[10];
JButton buttonBackSpace, buttonC, buttonCHU, buttonCHENG,
buttonJIAN, buttonX, buttonDIAN, buttonDENG, buttonJIA;
JSQFrame frame;
double num1 = 0, num2 = 0, result = 0;
String YSFString = "", DString = "", FUString = "";
public JSQPanel(JSQFrame frame) {
this.frame = frame;
setLayout(new GridLayout(5,4,10,5));
for (int i = 1; i <= 4; i++) {
add(button[i] = new JButton("" + i));
}
for (int i = 5; i <= 9; i++) {
add(button[i] = new JButton("" + i));
}
button[0] = new JButton("0");
add(button[0]);
buttonDIAN = new JButton(".");
buttonJIA = new JButton("+");
buttonDENG = new JButton("=");
add(buttonDIAN);
add(buttonDENG);
add(buttonJIA);
buttonJIAN = new JButton("-");
buttonCHENG = new JButton("*");
buttonCHU = new JButton("/");
add(buttonJIAN);
add(buttonCHENG);
add(buttonCHU);
buttonBackSpace = new JButton("BackSpace");
buttonC = new JButton("Clear");
add(buttonBackSpace);
add(new JLabel());
add(new JLabel());
add(buttonC);
for(int i=0 ;i<10; i++){
button[i].addActionListener(this);
}
buttonDIAN.addActionListener(this);
buttonJIA.addActionListener(this);
buttonDENG.addActionListener(this);
buttonJIAN.addActionListener(this);
buttonCHENG.addActionListener(this);
buttonCHU.addActionListener(this);
buttonBackSpace.addActionListener(this);
buttonC.addActionListener(this);
String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
try {
UIManager.setLookAndFeel(plaf);
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {
}
}
public void actionPerformed(ActionEvent event){
for(int i=0; i<10; i++){
if(event.getSource()==button[i]){
frame.text1.setText(frame.text1.getText()+i);
}
}
/*
* 加号运算
*/
if( event.getSource()==buttonJIA ){
DString ="";
FUString ="";
YSFString ="";
if(YSFString.equals("+")){
num1 = num1 + Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
}
if(YSFString.equals("")){
num1 = Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
YSFString = "+";
}
}
/*
* 减号运算
*/
if( event.getSource()==buttonJIAN ){
if(!frame.text1.getText().equals("")){
if(YSFString.equals("-")){
num1 = num1 - Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
YSFString = "-";
}
if(YSFString.equals("")){
num1 = Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
YSFString = "-";
}
}
}
/*
*乘号运算
*/
if( event.getSource()==buttonCHENG ){
if(!frame.text1.getText().equals("")){
if(YSFString.equals("*")){
num1 = num1*Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
}
if(YSFString.endsWith("")){
num1 = Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
YSFString = "*";
}
}
}
/*
*除号运算
*/
if( event.getSource()==buttonCHU ){
if(!frame.text1.getText().equals("")){
if(YSFString.equals("/")){
num1 = num1 / Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
}
if(YSFString.equals("")){
num1 = Double.parseDouble(frame.text1.getText());
frame.text1.setText("");
YSFString = "";
}
}
}
/*
* 点
*/
if(event.getSource()==buttonDIAN){
if ("".equals(DString)) {
frame.text1.setText(frame.text1.getText() + ".");
}
DString =".";
}
/*
* 等号(处理结果)
*/
if(event.getSource()==buttonDENG){
DString = "";
FUString ="";
num2 = Double.parseDouble(frame.text1.getText());
if(YSFString.equals("+")){
result = num1 + num2;
}
if(YSFString.equals("-")){
result = num1 - num2;
}
if(YSFString.equals("*")){
result = num1 * num2;
}
if(YSFString.equals("/")){
result = num1 / num2;
}
frame.text1.setText(""+result);
YSFString = "";
}
/*
* BackSpace
*/
if( event.getSource()==buttonBackSpace ){
if(!frame.text1.getText().equals("")){
int length = 0;
String string = "";
length = frame.text1.getText().length();
string = frame.text1.getText();
String str = string.substring(0,length -1 );
frame.text1.setText(str);
}
}
/*
* Clear
*/
if( event.getSource()==buttonC ){
frame.text1.setText("");
}
}
}
这个只能单步计算,计算之后必须得=之后才能算下一步操作,如何才能一直算 1+2-3*4.。。。
谢谢
怎么让他按完操作符直接出结果那
另外在Jbuttoon上怎么修改字体?