问答题

综合应用题 下面是一个Applet程序,实现实心或者空心矩形的绘制。要求鼠标在Applet窗口中拖动实现矩形的绘制,可以选择填充或者空心,有按钮用来清空窗口中的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下:
import java.awt.*; import java.applet.*; /* */ public class ex13_3 extends Applet{ private Button btnClear; private CheckboxGroup cbg; private Checkbox chk1, chk2; private int upX, upY; private int downX, downY; private boolean bDraw, bClear, bStyle; public void init(){ bDraw = false; bClear = false; bStyle = false; setLayout(null); cbg = new CheckboxGroup(); chk1 = new Checkbox("Hollow", cbg, true); chk2 = new Checkbox("Filled", cbg, false); chk1.reshape(80,getSize().height-80,80,25); chk2.reshape(160,getSize().height-80,80,25); add(chk1); add(chk2); btnClear = new Button("clear"); btnClear.reshape(240,getSize().height-80,80,25); add(btnClear); } public void paint(Graphics g){ if(bDraw){ if(upX > downX && upY > downY){ if(bStyle) g.fillRect(downX, downY, upX - downX, upY - downY); else g.drawRect(downX, downY, upX - downX, upY - downY); } else if(upX > downX && upY < downY){ if(bStyle) g.fillRect(downX, upY, upX - downX, downY - upY); else g.drawRect(downX, upY, upX - downX, downY - upY); } else if(upX < downX && upY > downY){ if(bStyle) g.fillRect(upX, downY, downX - upX, upY - downY); else g.drawRect(upX, downY, downX - upX, upY - downY); } else if(upX < downX && upY < downY){ if(bStyle) g.fillRect(upX, upY, downX - upX, downY - upY); else g.drawRect(upX, upY, downX - upX, downY - upY); } bDraw = false; } if(bClear){ g.clearRect(0,0, getSize().height, getSize().width); bClear = false; } } public void update(Graphics g){ paint(g); } public boolean mouseUp(Event e, int x, int y){ upX = x; upY = y; bDraw = true; repaint(); return true; } public boolean mouseDown(Event e, int x, int y){ downX = x; downY = y; return true; } public boolean action(Event e, Object o){ if(e.target == btnClear){ bClear = true; repaint(); } if(chk1.getState() == true){ bStyle = true; } if(chk2.getState() == true){ bStyle = false; } return true; } } ex13_3.html ex13_3

【参考答案】

g.clearRect(0,0,getSize().width,getSize().height)bStyle = fa......

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

问答题
简单应用题请完成下列Java程序:用swing实现一个简单的学生成绩管理器,显示出学生的姓名,java成绩,c++成绩和这两门课的平均成绩,学生一共有4个人(Mike, Jack等)。要求可以修改学生的姓名和成绩,并且能够直接计算出平均成绩,如改变Mike的java成绩后,在平均成绩栏会自动更新为新的平均成绩。注意:请勿改动main( )主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.TableModel;public class ex13_2 extends JFrame{private JTable jt;private String[][] strData;public static void main(String[] args){ex13_2 obj13_2=new ex13_2();obj13_2.pack();obj13_2.setVisible(true);}public ex13_2(){String[] columnNames={ name , java , c++ , average };strData=new String[][]{{ Mike , 70.0 , 80.0 , 75.0 },{ Jack , 70.0 , 100.0 , 85.0 },{ David , 75.0 , 95.0 , 85.0 },{ Tom , 60.0 , 80.0 , 70.0 }};jt=new JTable(strData,columnNames);jt.setPreferredScrollableViewportSize(new Dimension(400,200));JScrollPane tp=new JScrollPane(jt);setTitle( ex13_2 );Container cp=getContentPane();cp.add(tp,BorderLayout.CENTER);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent we) {System.exit(0);}});jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);TableModel tm=jt.getModel();tm.addTableModelListener(new TableModelListener(){public void tableChanged(TableModelEvent tme){int nRow=tme.getFirstRow();float fNum;float fSum=0;for(int i=1;i<=2;i++){fNum=Float.parseFloat( );fSum+=fNum;}float fAverage=fSum 2;;}});}}