问答题

下面是一个Applet程序,其功能是在窗口中绘制3个半径递增的圆,并用RGB三原色对这3个圆填充。要求建立一个绘制圆的类,实现根据指定颜色进行填充的功能,在主程序中通过调用这个类的方法实现圆的绘制。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下:
import java.applet.*; import java.awt.*; import java.awt.*; /* <applet code="ex22_3.class" width=800 height=400 > </applet> */ class CanvasCircle extends Canvas{ private Color cCircle; public CanvasCircle(Color c){ cCircle = c; } public void paint(Graphics g){ int dimCricle, xCircle, yCircle; Dimension sizeCurrent = getSize(); if (sizeCurrent.width > sizeCurrent.height){ dimCricle = sizeCurrent.width; } else{ dimCricle = sizeCurrent.height; } g.setColor(cCircle); xCircle = (sizeCurrent.height - dimCricle) / 2; yCircle = (sizeCurrent.width - dimCricle) / 2; g.fillOval(xCircle, yCircle, dimCricle, dimCricle); } } public class ex22_3 extends Applet{ public void init(){ GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); CanvasCircle circleNew; setLayout(gbl); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.fill = GridBagConstraints.BOTH; circleNew = new CanvasCircle(Color.red); gbl.setConstraints(circleNew, gbc); add(circleNew); gbc.weightx = 1.5; gbc.weighty = 1.5; circleNew = new CanvasCircle(Color.green); gbl.setConstraints(circleNew, gbc); add(circleNew); gbc.weightx = 2.0; gbc.weighty = 2.0; circleNew = new CanvasCircle(Color.blue); gbl.setConstraints(circleNew, gbc); add(circleNew); } } ex22_3.h tml <HTML> <HEAD> <TITLE>ex22_3</TITLE> </HEAD> <BODY> <applet code="ex22_3.class" width=800 height=400 > </applet> </BODY> </HTML>

【参考答案】

sizeCurrent.width<sizeCurrent.height xCircle= (sizeCurrent.w......

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

问答题
请完成下列Java程序;创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击Start按钮开始进度条的滚动,点击Stop按钮,暂停,继续点击Start按钮则继续进行。注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下:import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class ex22_2 extends JPanel{ThreadProg thProgress;JProgressBar jpb; 声明一个进程条对象static JFrame if;public ex22_2() {setLayout(new BorderLayout());jpb=new JProgressBar();add(jpb, Center );JPanel btnPanel = new JPanel();JButton btnStart = new JButton( Start );btnPanel.add(btnStart);btnStart.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae) {_______________;}});JButton btnStop = new JButton( Stop );btnPanel.add(btnStop);btnStop.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae) {____________;}});add(btnPanel, BorderLayout. SOUTH);} public void startProgress() {if(thProgress == null|| !thProgress.isAlive())thProgress = new ThreadProg(jpb);thProgress.start();}} public void stopProgress() {thProgress.setStop(true);} public static void main(String args[]){jf = new JFrame( ex22_2 );ex22_2 obj22_2 = new ex22_2();jf.getContentPane().add( Center ,obj22_2);jf.setSize(250,80);jf.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent we) {System.exit(O);}});jf.setVisible(true);}}class ThreadProg extends Thread {private JProgressBar jpb;private boolean bStop = false;private boolean bAlive = false;public ThreadProg(JProgressBar jpb){this.jpb = jpb;}public void setStop(boolean b){bStop = b;} public void run () {int min = 0;int max = 60;jpb.setMinimum(min);jpb.setMaximum(max);jpb.setValue(min);for (int x=min;x<=max;x++) (if(bStop){break;}else{jpb. setValue (x);try {Thread. sleep (150);} catch (InterruptedException e) {}}}bAlive = false;}}