我想用GUI界面創建一個計算器。下面的代碼是爲了做到這一點,但只能創建一個可以鍵入的空白區域。它有什麼問題?這個GUI計算器不起作用。什麼是錯的
public class CalculatorMain extends Calculator_ui
{
public static void main(String[] args)
{
Calculator_ui n=new Calculator_ui();
n.ui();
}//main
}//class
從這一點來說是一個新的Java類
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Calculator_ui implements ActionListener
{
JFrame frame=new JFrame("Calculator");
JPanel panel=new JPanel(new FlowLayout());
JTextArea text=new JTextArea(5,20);
JButton but1=new JButton("1");
JButton but2=new JButton("2");
JButton but3=new JButton("3");
JButton but4=new JButton("4");
JButton but5=new JButton("5");
JButton but6=new JButton("6");
JButton but7=new JButton("7");
JButton but8=new JButton("8");
JButton but9=new JButton("9");
JButton but0=new JButton("0");
JButton butadd=new JButton("+");
JButton butsub=new JButton("-");
JButton butmulti=new JButton("*");
JButton butdiv=new JButton("/");
JButton buteq=new JButton("=");
JButton butclear=new JButton("C");
Double number1,number2,result;
int addc=0,subc=0,multic=0,divc=0;
public void ui()
{
frame.setVisible(true);
frame.setSize(250,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.add(text);
panel.add(but1);
panel.add(but2);
panel.add(but3);
panel.add(but4);
panel.add(but5);
panel.add(but6);
panel.add(but7);
panel.add(but8);
panel.add(but9);
panel.add(but0);
panel.add(butadd);
panel.add(butsub);
panel.add(butmulti);
panel.add(butdiv);
panel.add(buteq);
panel.add(butclear);
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);
but0.addActionListener(this);
butadd.addActionListener(this);
butsub.addActionListener(this);
butmulti.addActionListener(this);
butdiv.addActionListener(this);
buteq.addActionListener(this);
butclear.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
Object source=e.getSource();
if(source==butclear)
{
number1=0.0;
number2=0.0;
text.setText("");
}
if(source==but1)
{
text.append("1");
}
if(source==but2)
{
text.append("2");
}
if(source==but3)
{
text.append("3");
}
if(source==but4)
{
text.append("4");
}
if(source==but5)
{
text.append("5");
}
if(source==but6)
{
text.append("6");
}
if(source==but7)
{
text.append("7");
}
if(source==but8)
{
text.append("8");
}
if(source==but9)
{
text.append("9");
}
if(source==but0)
{
text.append("0");
}
if(source==butadd)
{
number1=number_reader();
text.setText("");
addc=1;
subc=0;
multic=0;
divc=0;
}
if(source==butsub)
{
number1=number_reader();
text.setText("");
addc=0;
subc=1;
multic=0;
divc=0;
}
if(source==butmulti)
{
number1=number_reader();
text.setText("");
addc=0;
subc=0;
multic=1;
divc=0;
}
if(source==butdiv)
{
number1=number_reader();
text.setText("");
addc=0;
subc=0;
multic=0;
divc=1;
}
if(source==buteq)
{
number2=number_reader();
if(addc>0)
{
result=number1+number2;
text.setText(Double.toString(result));
}
if(subc>0)
{
result=number1-number2;
text.setText(Double.toString(result));
}
if(multic>0)
{
result=number1*number2;
text.setText(Double.toString(result));
}
if(divc>0)
{
result=number1/number2;
text.setText(Double.toString(result));
}
}
}
public double number_reader()
{
Double num1;
String s;
s=text.getText();
num1=Double.valueOf(s);
return num1;
}
public static void main(String[] args)
{
}//main
}//class
他呼籲text.setText()和text.append()並附加做正是什麼是正常的追加文本到它已有的文本的末尾,爲什麼你說他沒有? – PhoneixS 2015-01-21 11:58:40
好的,知識傳遞! – roeygol 2015-01-21 17:41:54