填空题

本题中定义了一个简单的计算器,可以进行基本的四则运算。程序中包含16个按钮用来表示0~9、+、-、*、/、=运算符和小数点,程序顶部的文本框用来显示操作数以及结果。
import java. awt. * ;
import java. awt. event. * ;
import javax. swing. * ;
public class java2
public static void main(String[] args)
try
UIManager. setLookAndFeel(UIManager. getSystemLookAndFeelClassName());

catch (Exception e)
JFrame frame=new CalculatorFrame();
frame. show();


class CalculatorPanel extends JPanel implements ActionListener
private JTextField display;
private JButton btn;
private double arg=0;
private String op="= ";
private boolean start=true;
public CalculatorPanel()
setLayout(new BorderLayout());
dispIay=new JTextField("0");
display, setEditable(false);
add(display, "North");
JPanel p=new JPanel();
p. setLayout(new GridLayout(4,4));
String buttons="789/456*123-0.=+";
for (int i=0; i<buttons, length(); i++)
btn=new JButton(buttons. substring(i, i+1));
p. add(btn);
______;

add(p, "Center");

public void actionPerformed(ActionEvent evt)
String s=evt. getActionCommand();
if(’0’<=s. charAt(0) && s. charAt(0)<=’9’ || s. equals("."))
if (start) display. setText(s);
else display, setText(display, getText()+s);
start=false;

else
if (start)
if (s. equals("-"))
display. setText(s);
start=false;

else op=s;

else
double x=______;
calculate(x);
op=s;
start=true;



public void calculate(double n)
if (op. equals("+")) arg+=n;
else if (op. equals("-")) arg-= n;
else if (op. equals("*")) arg *=n;
else if (op. equals("/")) arg /=n;
else if (op. equals("=")) arg=n;
display, setText(""+arg);


class CalculatorFrame extends JFrame
public CalculatorFrame()
setTitle("java2");
setSize(220,180);
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System. exit(0);

);
Container contentPane=getContentPane();
contentPane, add(new CalculatorPanel());

【参考答案】

第1处:btn. addActionListener(this)
第2处:Double. parseDoubl......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

填空题
本题的功能是用文本框来设定表盘中指针的位置。窗口中有一个画板和两个文本框,画板中绘制了一个表盘和时针、分针,通过文本框分别设定“时”和“分”,表盘中的时针和分针就会指到对应的位置上。 import java. awt. * ; import java. awt. event. * ; import java. awt. geom. * ; import javax. swing. * ; import javax. swing, event. * ; public class java3 public static void main(String[] args) TextTestFrame frame=new TextTestFrame(); frame. setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); frame. show(); class TextTestFrame extends JFrame public TextTestFrame() setTitle( java3 ); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); Container contentPane=getContentPane(); DocumentListener listener=new DocumentListen-er(); JPanel panel=new JPanel(); hourField=new JTextField( 12 ,3); panel, add(hourField); hourField, getDocument (). addDocumentListener(this); minuteField=new JTextField( 00 ,3); panel, add(minuteField); minuteField, getDocument(), addDocumentListener(listener); contentPane, add ( panel, BorderLayout. SOUTH); clock=new ClockPanel(); contentPane, add (clock, BorderLayout. CENTER); public void setClock() try int hours = Integer. parseInt (hourField. getText(). trim()); int minutes = Integer. parselnt(minuteField, getText(), trim()); clock, setTime(hours, minutes); catch (NumberFormatException e) public static final int DEFAULT WIDTH=300; public static final int DEFAULT_HEIGHT=300; private JTextField hourField; private JTextField minuteField; private ClockPanel clock; private class clockFieldListener extends DocumentListener public void insertUpdate(DocumentEvent e) setClock(); public void removeUpdate(DocumentEvent e) setClock(); public void changedUpdate(DocumentEvent e) class ClockPanel extends JPanel public void paintComponent(Graphics g) super, paintComponent(g); Graphics2D g2=(Graphics2D)g; Ellipse2D circle =new Ellipse2D. Double(0,0,2 * RADIUS, 2 * RADIUS); g2. draw(circle); double hourAngle =Math. toRadians(90-360 * minutes (12 * 60)); drawHand (g2, hourAngle, HOUR_HAND_LENGTH); double minuteAngle Math. toRadians(90-360 * minutes 60) drawHand(g2, minuteAngle, MINUTE_HAND_LENGTH); public void drawHand(Graphics2D g2, double angle, double handLength) Point2D end=new Point2D. Double( RADIUS+handLength * Math. cos(angle), RADIUS-handLength * Math. sin(angle)); Point2D center=new Point2D. Double(RADIUS, RADIUS) g2. draw(new Line2D. Double(center, end)); public void setTime(int h, int m) minutes=h*60+m; repaint(); private double minutes=0; private double RADIUS=100; private double MINUTE_HAND_LENGTH=0.8 * RADIUS; private double HOUR_HAND_LENGTH=0.6 * RADIUS;