问答题本题中,窗口的背景色为系统桌面的颜色,在窗口中分别画空心和实心的黑色矩形、深灰色圆角矩形和浅灰色椭圆形,并且画白色粗体的“欢迎学习Java!”字符串。
import java.awt.*;
import javax.swing.*;
public class java2
{
public static void main(String[]args)
{
FillFrame frame=new FillFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class FillFrame extends JFrame
{
public FillFrame()
{
setTitle("java2");
setSize(WIDTH,HEIGHT);
FillPanel panel=new FillPanel();
panel.setBackround(SystemColor.desktop);
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int WIDTH=400;
public static final int HEIGHT=250;
}
class FillPanel extends JPanel
{
public void paintComponent(Graphics g)
{
______;
g.setColor(new Color(10,10,10));
g.drawRect(10,10,100,30);
g.setColor(new Color(100,100,100));
g.drawRoundRect(150,10,100,30,15,15);
g.setColor(new Color(150,150,150));
g.drawOval(280,10,80,30);
g.setColor(new Color(10,10,10));
g.fillRect(10,110,100,30);
g.setColor(new Color(100,100,100));
g.fillRoundRect(150,110,100,30,15,15);
g.setColor(new Color(150,150,150));
g.fillOval(280,110,80,30);
g.setColor(Color.white);
Font f=new Font("宋体",______,20);
g.setFont(f);
g.drawstring("欢迎学习Java!",150,200);
}
}
问答题下面是整数除法计算的程序,要求在出现异常时,能抛出异常信息。考虑两种异常:(1)输入非数字除数。(2)输入除法分母为零。该程序运行的3种结果状态如下:(1)输入两个合法整数:(2)输入非数字除数:(3)输入除数为零:给定源程序:importjava.text.DecimalFormat;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassJava_3extends______implementsActionListenerprivateJTextFieldinput1,input2,output;privateintnumber1,number2;privatedoubleresult;//初始化publicJava_3()//*********Found********______(”示范异常”);Containerc=getContentPane();c.setLayout(newGridLayout(3,2));c.add(newJLabel("输入分子",SwingConstants.RIGHT));input1=newJTextField(10);c.add(input1);c.add(newJLabel("输入分母和回车",SwingConstants.RIGHT));input2=newJTextField(10);c.add(input2);input2.addActionListener(this);c.add(newJLabel("计算结果",SwingConstants.RIGHT));output=newJTextField();c.add(output)jsetSize(425,100);show();//处理GUI事件publicvoidactionPerformed(ActionEvente)DecimalFormatprecision3=newDecimalFormat("0.000");output.setText("");//空的JTextField输出//*********Found********______number1=Integer.parseInt(input1.getText());number2=Integer.parseInt(input2.getText());result=quotient(number1,number2);//*********Found********output.setText(______);catch(NumberFormatExceptionnfe)JOptionPane.showMessageDialog(this,"你必须输入两个整数","非法数字格式",JOptionPane.ERRORMESSAGE);catch(Exceptiondbze)//*********Found********______(this,"除法异常""除数为零",JOptionPane.ERRORMESSAGE);//定义求商的方法,如遇到除数为零时,能抛出异常publicdoublequotient(intnumerator,intdenominator)throwsExceptionif(denominator==0)thrownewException();return(double)numerator/denominator;publicstaticvoidmain(Stringargs[])Java_3app=newJava_3();app.addWindowListenernewWindowAdapter()publicvoidwindowClosing(WindowEvente)e.getWindow().dispose();System.exit(0););/*JOptionPane类的常用静态方法如下:showInputDialog()showConfirmDialog()showMessageDialog()showOptionDialog()*/
问答题本程序的功能是用鼠标右键的弹出菜单来设置窗口的背景色。在窗口中单击鼠标右键,就能在单击的位置弹出一个菜单窗口,其中的菜单项是单选按钮,选中其中某项就可以将窗口的背景色设置为选中的颜色。importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;publicclassexam_67extendsJFrame{privateJRadioButtonMenuItemitems[];privateColorcolorValues[]={Color.blue,Color.yellow,Color.red};publicexam_67(){super("exam_67");finalJPopupMenupopupMenu=newJPopupMenu();ItemHandlerhandler=newItemHandler();Colorcolors[]={"Blue","Yellow","Red"};ButtonGroupcolorGroup=newButtonGroup();items=newJRadioButtonMenuItem[3];for(inti=0;i<items.length;i++){items[i]=newJRadioButtonMenuItem(colors[i]);popupMenu.add(items[i]);colorGroup.add(items[i]);items[i].addActionListener("handler");}getContentPane().setBackground(Color.white);addMouseListener(newMouseAdapter(){publicvoidmousePressed(MouseEvente){checkForTriggerEvent(e);}publicvoidmouseReleased(MouseEvente){checkForTriggerEvent(e);}privatevoidcheckForTriggerEvent(MouseEvente){if(e.isPopupTrigger())popupMenu.showMenu(e.getComponent(),e.getX(),e.getY());}});setSize(300,200);show();}publicstaticvoidmain(Stringargs[]){exam_67app=newexam_67();app.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}privateclassItemHandlerimplementsActionListener{publicvoidactionPerformed(ActionEvente){for(inti=0;i<items.length;i++)if(e.getSource()==items[i]){getContentPane().setBackground(colorValues[i]);repaint();return;}}}}
问答题综合应用题下面是一个Applet程序,其功能是实现网页上的电子时钟,要求显示的格式为hh:mm:ss如02:04:50。提示:通过获取当前系统时间来实现。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:importjava.applet.*;importjava.awt.*;importjava.util.Date;publicclassex9_3extendsAppletimplementsRunnable{privateThreadthTimer=null;privateStringstrTime;privateinttHour,tMin,tSec;publicvoidinit(){setFont(newFont("TimesNewRoman",Font.BOLD,20));}publicvoidpaint(GraphicsGraph){DatedNow=newDate();tHour=dNow.getHours();tMin=dNow.getMinutes();tSec=dNow.getSeconds();if(tHourex9_3
问答题本题程序的功能是用表格的形式列出当前目录所有的文件属性,包括是否是文件夹、文件名称、是否可读、是否可写、文件大小以及最后修改时间。程序中存在若干错误,请找出并改正(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import javax.swing.*;
import java.util.Date;
import java.io.File;
import javax.swing.table.*;
public class advance extends Jframe
{
public advance()
{
super("advance");
setSize(500,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
FileModel fm = new FileModel();
JTable jt = new JTable(fm);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jt.setColumnSelectionAllowed(true);
jt.setDefaultRenderer(Number.class,new BigRenderer(1000));
JScrollPane jsp = new JScrollPane(jt);
getContentPane().add(jsp,BorderLayout.CENTER);
}
public static void main (String args[])
{
advance ft : new advance();
ft.setVisible(true);
}
}
class BigRenderer extends DefaultTableCellRenderer
{
double threshold;
public BigRenderer(double t)
{
threshold = t;
setHorizontalAlignment(JLabel.RIGHT);
setHorizontalTextPosition(SwingConstants.RIGHT);
}
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int col)
{
return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,col);
}
}
class FileModel extends AbstractTableModel
{
String titles[] = new String[]
{
"目录","文件名","可读?","可写?","大小","最后修改时间"
};
Class types = new Class[]
{
Boolean.class,String.class,Boolean.class,Boolean.class,
Number.class,Date.class
};
Object data[][];
public FileModel()
{
this(".");
}
public FileModel(String dir)
{
File pwd = new File(dir);
setFileStats (pwd);
}
public int getRowCount()
{
return data.length;
}
public int getColumnCount()
{
return titles.length;
}
public String getColumnName(int c)
{
return titles [c];
}
public Class getColumnClass(int c)
{
return types[c];
}
public void getValueAt(int r,int c)
{
return data[r] [c];
}
public void setFileStats(File dir)
{
String files[] = dir.list;
Data = new Object[files.length] [titles.length];
for (int i = 0; i<files.length; i++)
{
File tmp = new File(files[i]);
data[i] [0] = new Boolean(tmp.isDirectory());
data[i] [1] = tmp.getName();
data[i] [2] = new Boo lean(tmp.canRead());
data[i] [3] = new Boolean(tmp.canWrite());
data[i] [4] = new Long(tmp.length());
data[i] [5] = new Date(tmp.lastModified());
}
fireTableDataChanged ();
}
}
问答题本题是一个Applet,它显示了一个树型结构。单击树结点的时候,就能将其子结点展开,同时下面的文本框可以显示出所单击的结点的路径,比如单击了根结点下B结点下B2结点,则文本框显示为“[TOP,B,B2]”。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; public class java2 extends JApplet JTree tree; JTextField jtf; public void init() Container cp=getContentPane(); cp.setLayout(new BorderLayout()); ______top=new DefauhMutableTreeNode("TOP"); DefauhMutableTreeNode a=new DefaultMutableTreeNode("A"); DefaultMutableTreeNode a1=new DefaultMutableTreeNode("A1"); a.add(a1); DefaultMutableTreeNode a2=new DefaultMutableTreeNode("A2"); a.add(a2); DefaultMutableTreeNode a3=new DefauhMutableTreeNode("A3"); a.add(a3); DefaultMutableTreeNode b=new DefaultMutableTreeNode("B"); DefaultMutableTreeNode b1=new DefaultMutableTreeNode("B1"); b.add(b1); DefaultMutableTteeNode b2=new DefaultMutableTreeNode("B2"); b.add(b2); DefaultMutableTreeNode b3=new DefaultMutableTreeNode("B3"); b.add(b3); top.add(a); top.add(b); tree=new JTree(top); int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; JScrollPane jsp=new JScrollPane(tree,v,h); cp.add(jsp,BorderLayout.CENTER); jtf=new JTextField(20); cp.add(jtf,BorderLayout.SOUTH); tree.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent me) doMouseClicked(me); ); void doMouseClicked(MouseEvent me) ______tp=tree.getPathForLocation(me.getX(),me.getY()); if(tp!=null) jtf.setText(tp.toString()); else jtf.setText("");
问答题本题程序的功能是通过滑动条修改颜色的RGB值,从而控制颜色。程序中有一个面板、3个标签和3个滑动条,标签和滑动条一一对应,分别对应三原色红、绿、蓝,任意拖动其中的一个滑动条,所对应的颜色值就会发生变化,面板的颜色也会对应地发生变化。滑动条值的范围是0~255。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class simple extends JFrame implements AdjustmentListener
{
public simple()
{
setTitle("simple");
setSize(300,200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
System.exit (0);
});
Container contentPane =______;
JPanel p = new JPane1();
p.setLayout(new GridLayout(3,2));
p.add(redLabel = new JLabel("Red 0"));
p.add(red = new JScrollBar(Adjustable.HORIZONTAL,0,0,0,255));
red.setBlockIncrement(16);
red.addAdjustmentListener(this);
p.add(greenLabel = new JLabel("Green 0"));
p.add(green = new JScrollBar(Adjustable.HORIZONTAL,0,0,0,255));
green.setBlockIncrement(16);
green.addAdjustmentListener(this);
p.add(blueLabel = new JLabel("Blue 0"));
p.add(blue = new JScrollBar(Adjustable.HORIZONTAL,0,0,0,255));
blue.setBlockIncrement(16);
blue.addAdjustmentListener(this);
contentPane.add(p,"South");
colorPanel = new JPanel();
colorPanel.setBackground(new Color(0,0,0));
contentPane.add(colorPanel,"Center");
}
public void adjustmentValueChanged(AdjustmentEvent evt)
{
redLabel.setText("Red " + red.getValue());
greenLabel.setText("Green " + green.getValue());
blueLabel.setText("Blue " + blue.getValue());
colorPanel.setBackground(new Color(red.getValue().green.getValue(),blue.getValue()));
______;
}
public static void main(String[] args)
{
JFrame f = new simple();
f.show();
}
private JLabel redLabel;
private JLabel greenLabel;
private JLabel blueLabel;
private JScrollBar red;
private JScrollBar green;
private JScrollBar blue;
private JPanel colorPanel;
}
问答题System.exit(1);
问答题本题的功能是定义图形按钮。窗口中有两个图形按钮,当鼠标移上去时,图形按钮的图形将改变,用鼠标单击按钮时图形按钮的图形又发生改变,当鼠标左键松开或者移开鼠标后,图形按钮的图形又恢复原样。 import javax.swing.*; import java.awt.*; public class java3 extend JButton public java3(Icon icon,Icon pressed,Icon rollover) this(icon); setFocusPainted(false); setRolloverEnabled(true); setRolloverIcon(rollover); setPressedIcon(pressed); setBorderPainted(false); setContentAreaFilled(false); public static void main(String[]args) java3 b1=new java3( new ImageIcon("java3-redcube.gif"), new ImageIcon("java3-redpaw.gif"), new ImageIcon("java3-reddiamond.gif")); java3 b2=new java3( new ImageIcon("java3-bluecube.gif"), new ImageIcon("java3-bluepaw.gif"), new ImageIcon("java3-bluediamond.gif")); JFrame f=new JFrame(); f.setTitle("java3"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); c=f.getContentpane(); c.setLayout(new FlowLayout()); c.add(b1); c.add(b2); f.pack(); f.setVisible(true);
问答题本程序的功能是获取列表中各项的选择。窗口中有一个列表、两个按钮和一个文本域,列表中的列表项是复选框,选中一些列表项,单击“print”按钮,则在文本域中添加选中的列表项的名称,单击“clear”按钮,则清空文本域中的内容,如图所示。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.*;publicclassexam_84extendsJFrame{publicexam_84(){super("exam_84");String[]strs={"swing","home","basic","metal","JList"};finalJListlist=newJList(createData());list.setCellRenderer(newCheckListRenderer());list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);list.setBorder(newEmptyBorder(0,4,0,0));list.addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEvente){intindex=list.locationToIndex(e.getPoint());CheckableItemitem=(CheckableItem)list.getModel().getElementAt(index);item.setSelected(!item.isSelected());Rectanglerect=list.getCellBounds(index,index);list.repaint(rect);}});JScrollPanesp=newJScrollPane(list);finalJTextAreatextArea=newJTextArea(3,10);JScrollPanetextPanel=newJScrollPane(textArea);JButtonprintButton=newJButton("print");printButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ListModelmodel=list.getModel();intn=model.getSize();for(inti=0;i<n;i++){CheckableItemitem=(CheckableItem)model.getElementAt(i);if(item.isSelected()){textArea.append(item.toString());textArea.append(System.getProperty("line.separator"));}}}});JButtonclearButton=newJButton("clear");clearButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){textArea.setText("");}});JPanelpanel=newJPanel(newGridLayout(2,1));panel.add(printButton);panel.add(clearButton);getContentPane().add(sp,BorderLayout.CENTER);getContentPane().add(panel,BorderLayout.EAST);getContentPane().add(textPanel,BorderLayout.SOUTH);}privateCheckableItemcreateData(String[]strs){intn=strs.length;CheckableItem[]items=newCheckableItem[n];for(inti=0;i<n;i++){items[i]=newCheckableItem(strs[i]);}returnitems;}classCheckableItem{privateStringstr;privatebooleanisSelected;publicCheckableItem(Stringstr){this.str=str;isSelected=false;}publicvoidsetSelected(booleanb){isSelected=b;}publicbooleanisSelected(){returnisSelected;}publicStringtoString(){returnstr;}}classCheckListRendererextendsJCheckBoxextendsListCellRenderer{publicCheckListRenderer(){setBackground(UIManager.getColor("List.textBackground"));setForeground(UIManager.getColor("List.textForeground"));}publicComponentgetListCellRendererComponent(JListlist,Objectvalue,intindex,booleanisSelected,booleanhasFocus){setEnabled(list.isEnabled());setSelected(((CheckableItem)value).isSelected());setFont(list.getFont());setText(value.toString());returnthis;}}publicstaticvoidmain(Stringargs[]){exam_84frame=newexam_84();frame.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});frame.setSize(300,200);frame.setVisible(true);}}
问答题下面是一个Applet程序,其功能是统计输入字符串中的每个字符在该串中出现的次数。要求,窗口中有一个文本框作为输入,一个按钮,点击则进行统计,统计结果以图形方式输出。请改正程序中的错误(有下画线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
import java.awt.*;
import java.applet.*;
import java.1ang*;
public class exl3_3 extends Applet{
private TextField tf;
private Button btn;
public void init(){
tf=new TextField(25);
add(tf);
btn=new Bunon("统计");
add(btn);
resize(250,200);
}
pubhc void paint(Graphics g){
Stling str=tf.genText();
shon cnt[]=new shon[65536];
int i;
int n = 50;
for(i=0;i<65536;i++)
cat[i]=0;
for(i=0;i<str.length();i++)
{{U}}cnt[i]++;{{/U}}
for(i=0;i<65536;i++)//对数组Cnt[]进行初始化
if({{U}}cnt[i]>=0{{/U}}){
{{U}}g.drawString(i+"出现"+cnt[i]+"次",50,n);{{/U}}
n+=20;
}
}
public boolean action(Eyent e,Object o){
if(o=="统计"){
repaint();
return true;
}
else
return false;
}
}
ex13_3.html
<HTML>
<HEAD>
<TITLE>ex13_3</TITLE>
</HEAD>
<BODY>
<applet code="ex13_3.class"width=800 height=400>
</applet>
</BODY>
</HTML>
问答题下面的程序是打印输出100~300之间的不能被3整除的数。请在每条横线处填写一条语句,使程序的功能完整。
注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填人适当的语句。
public class printNo3and5{
void print()
{
int n ;
for(n=100 ;n<=300 ;n++){
if(n%3==0)
__________
System.out.println(n);
}
}
public static__________main(String args[])
{
printNo3and5 obj=new printN03and5();
__________
}
}
问答题本程序是一个Applet,功能是用鼠标来画不同颜色的图形。页面中有5个按钮:“画红色图形”、“画绿色图形”、“画蓝色图形”、“橡皮”和“清除”,单击前三个按钮中的一个后,按住鼠标左键或右键在面板中拖动就能画出对应颜色的线条,单击“橡皮”按钮后,按住鼠标左键或右键在面板中拖动,就能将面板中的图形擦除掉,单击“清除”按钮,就能将面板中所有的图形清除掉,如图所示。importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassexam_17extendsAppletimplementsActionListener{intx=-1,y=-1,rubberNote=0,clearNote=0;Colorc=newColor(255,0,0);intcon=3;Buttonb_red,b_blue,b_green,b_clear,b_quit;publicvoidinit(){addMouseMotionListener(this);b_red=newButton("画红色图形");b_blue=newButton("画蓝色图形");b_green=newButton("画绿色图形");b_quit=newButton("橡皮");b_clear=newButton("消除");add(b_red);add(b_green);add(b_blue);add(b_quit);add(b_clear);b_red.addActionListener(this);b_green.addActionListener(this);b_blue.addActionListener(this);b_quit.addActionListener(this);b_clear.addActionListener(this);}publicvoidpaint(){if(x!=-1g.fillOval(x,y,con,con);}elseif(rubberNote==l}elseif(clearNote==l}}publicvoidmouseDragged(MouseEvente){x=(int)e.getX();y=(int)e.getY();repaint();}publicvoidmouseMoved(MouseEvente){}publicvoidupdate(Graphicsg){paint(g);}publicvoidactionPerformed(Evente){if(e.getSource()==b_red){rubberNote=0;clearNote=0;c=newColor(255,0,0);}elseif(e.getSource()==b_green){rubberNote=0;clearNote=0;c=newColor(0,255,0);}elseif(e.getSource()==b_blue){rubberNote=0;clearNote=0;c=newColor(0,0,255);}if(e.getSource()==b_quit){rubberNote=l;clearNote=0;}if(e.getSource()==b_clear){clearNote=l;rubberNote=0;repaint();}}}exam_17.html:<html><head><title>exam_17</title></head><body><appletcode=exam_17.classwidth=500height=500></applet></body></html>
问答题本程序的功能是绘制一个椭圆形的按钮,当鼠标在按钮上单击时,按钮的文字标签和边框变成红色,如图所示。importjava.awt.*;importjava.awt.event.*;classexam_58extendsFrame{exam_58(){super("exam_58");addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente)System.exit(0);}});add(newMainCanvas(),BorderLayout.CENTER);setSize(150,80);show();}staticpublicvoidmain(String[]args){exam_58();}}classMainCanvasextendsComponent{Stringlabel="椭圆形按钮";booleandown;MainCanvas(){addMouseListener(newMouseEventHandler());}MouseEventHandlerextendsMouseAdapter{publicvoidmousePressed(MouseEventevt){down=true;repaint();}publicvoidmouseReleased(MouseEventevt){down=false;repaint();}}publicvoidpaint(){intw=getSize().width;inth=getSize().height;FontMetricsfm=g.getFontMetrics();if(down){g.setColor(Color.red);}else{g.setColor(Color.black);}g.drawRoundRect(0,0,w-1,h-1,20,20);g.drawString(label,(w-fm.stringWidth(label))/2,(h-fm.getHeight())/2+fm.getAscent());}}
问答题本程序的功能是监听鼠标左右键的点击,以及面板中滚动条的添加。在窗口的画板中单击鼠标左键,在单击的位置绘制一个圆,当绘制的圆大于画板的大小时,画板就添加滚动条,在画板中单击鼠标右键,则清除画板中的所有图形,如图所示。importjavax.swing.*;importjavax.swing.event.MouseInputAdapter;importjava.awt.*;importjava.awt.event.*;importjava.util.*;publicclassexam_87extendsJPanel{privateDimensionsize;privateVectorobjects;privatefinalColorcolors[]={Color.red,Color.blue,Color.green,Color.orange,Color.cyan,Color.magenta,Color.darkGray,Color.yellow};privatefinalintcolor_n=colors.length;JPaneldrawingArea;publicexam_87(){setOpaque(true);size=newDimension(0,0);objects=newVector();JLabelinstructionsLeft=newJLabel("点击鼠标左键画圆.");JLabelinstructionsRight=newJLabel("点击鼠标右键清空画板.");JPanelinstructionPanel=newJPanel(newGridLayout(0,1));instructionPanel.add(instructionsLeft);instructionPanel.add(instructionsRight);drawingArea=newJPanel(){protectedvoidpaintComponent(Graphicsg){super.paintComponent(g);Rectanglerect;for(inti=0;i<objects.size();i++){rect=(Rectangle)objects.elementAt(i);g.setColor(colors[(i%color_n)]);g.fillOval(rect.x,rect.y,rect.width,rect.height);}}};drawingArea.setBackground(Color.white);drawingArea.addMouseListener(newMouseListener());JScrollPanescroller=newJScrollPane(drawingArea);scroller.setPreferredSize(newDimension(200,200));setLayout(newBorderLayout());add(instructionPanel,BorderLayout.NORTH);add(scroller,BorderLayout.CENTER);}classMyMouseListenerextendsmouseInputAdapter{finalintW=100;finalintH=100;publicvoidmouseReleased(MouseEvente){booleanchanged=false;if(SwingUtilities.isRightMouseButton(e)){objects.removeAllElements();size.width=0;size.height=0;changed=true;}else{intx=e.getX()-W/2;inty=e.getY()-H/2;if(x<0)x=0;if(y<0)y=0;Rectanglerect=newRectangle(x,y,W,H);objects.addElement(rect);drawingArea.scrollRectToVisible(rect);intthis_width=(x+W+2);if(this_width>size.width){size.width=this_width;changed=true;}intthis_height=(y+H+2);if(this_height>size.height){size.height=thisheight;changed=true;}}if(changed){drawingArea.setPreferredSize(size);drawingArea.revalidate();}drawingArea.paint();}}publicstaticvoidmain(Stringargs[]){JFrameframe=newJFrame("exam_87");frame.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});frame.setContentPane(newexam_87());frame.pack();frame.setVisible(true);}}
问答题下面是一个Applet程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:import.java.awt.*;import.java.applet.*;/*<appletcode=exl_3.classwidth=800height=400></applet>*/publicclassexl_3extendsAppletprivateButtonbtn;privateBooleanbDraw,bClear;privateintupX,upY,downX,downY;publicvoidinit()setLayout(null);bClear=false;bDraw=false;btn=newButton(”clear”);btn.reshape(250,150,70,30);add(btn);publicvoidpaint(Graphicsg)if(bClear)g.clearRect(0,0,getSize().width,getSize().height);bClearr=false;if(bDraw)g.drawLine(upY,upX,downY,downX)bDraW=false;publicvoidupdate(Graphicsg)paint(g);PublicbooleanmouseDown(Eventevent,intx,inty)downX=x;downY=y;returntrue;publicbooleanmouseUp(Eventevent,intx,inty)upX=x;upY=y;bDraw=false;repaint();returntrue;publicbooleanaction(Eventevent,ObjectObject)if(event.target!=clear)bClear=true;repaint()returntrue;ex1_3.html<HTML><HEAD><TITLE>ex1_3</TITLE></HEAD><BODY><appletcode="exl_3.class"width=800height=400></applet></BODY></HTML>
问答题本程序中,使用按钮来控制其他按钮的状态(可用或不可用)。第一个按钮用来设置第二个按钮不可用,第三个按钮用来设计第二个按钮可用。初始状态时只有第三个按钮不可用,单击第一个按钮后只有第三个按钮可用,单击第三个按钮后只有第三个按钮不可用,如图所示。importjava.awt.*;importjava.awt.event.*;importjavax.swing.AbstractButton;importjavax.swing.JButton;importjavax.swing.JPanel;importjavax.swing.JFrame;importjavax.swing.ImageIcon;publicclassexam_63extendsJPanelimplementsActionListener{protectedJButtonb1,b2,b3;publicexam_63(){b1=newJButton("使按钮2不可用");b1.setVerticalTextPosition(AbstractButton.CENTER);b1.setHorizontalTextPosition(AbstractButton.LEFT);______;b2=newJButton("按钮2");b2.setVerticalTextPosition(AbstractButton.BOTTOM);b2.setHorizontalTextPosition(AbstractButton.CENTER);b3=newJButton("使按钮2可用");b3.setEnabled(false);b1.addActionListener(this);b3.addActionListener(this);add(b1);add(b2);add(b3);}publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equals("disable")){b2.setEnabled(false);b1.setEnabled(false);b3.setEnabled(true);}else{b2.setEnabled(true);b1.setEnabled(true);b3.setEnabled(false);}}publicstaticvoidmain(String[]args){JFrameframe=newJFrame("exam_63");frame.addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0);}});frame.getContentPane().add(______,BorderLayout.CENTER);frame.pack();frame.setVisible(true);}}
问答题本程序的功能是统计成绩不及格的人数,分数有56,90,89,23,45,61,60,59。
public class exam_30{
public static void main(String[] args){
int []score={56,90,89,23,45,61,60,59};
int num=0;
______;
int i=0;
while(______){
if(______)
sum++;
i++;
}
System.out.println("<60:"+sum);
}
}
问答题注意:下面出现的“考生文件夹”均为%USER%。在考生文件夹下存有文件名为Java_2.java文件,本题功能是完成对字符串缓存类中与字符相关方法的应用。请完善Java_2.java文件,并进行调试,程序运行的某次结果如下:由于Java_2.java文件不完整,请在注释行“//*********Found*********”下一行语句的下面线地方填入正确内容,然后删除下画线,请勿删除注释行或其他已有语句内容。存盘时,文件必须存放在考生文件夹下,不得改变原有文件的文件名。给定源程序:importjavax.swing.*;publicclassJava_2publicstaticvoidmain(Stringargs[])StringBufferbuf=newStringBuffer("你好!祝你成功!");Stringoutput="bur="+buf.toString()+"/nCharacterat0:"+buf.charAt(0)+"/nCharacterat4:"+buf.charAt(4);//*********Found**********charcharArray[]=______char[buf.length()];//*********Found**********buf.______(0,buf.length(),charArray,0);output+='/n/n在字符串缓存中的字符是:";//*********Found**********for(inti=0;i<______;++i)output+=charArray[i];buf.setCharAt(0,'您');bufsetCharAt(6,'材');output+="/n/nbuf="+buf.toString();//*********Found**********bur.______;output+="/n/nbuf="+buf.toString();JOptionPane.showMessageDialog(null,output,"字符串缓存的字符相关方法示范",JOptionPane.INFORMATION_MESSAGE)p;System.exit(0);
问答题本题是一个Applet,页面中有10个按钮,名称从“0~9”,用鼠标任意单击其中一个按钮后,通过键盘上的上下左右键可以控制按钮在窗口中移动。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class java2 extends Applet______ Button b[]=new Button[10]; int x,y; public void init() for(int i=0;i<=9;i++) (b[i]=new Button(""+i); b[i].addKeyListener(this); add(b[i]); public void______ Button button=(Button)e.getSource(); x=button.getBounds().x; y=button.getBounds().y; if(e.getKeyCode()==KeyEvent.VK_UP) y=y-2; if(y<=0)y=0; button.setLocation(x,y); else if(e.getKeyCode()==KeyEvent.VK_DOWN) y=y+2; if(y>=300)y=300; button.setLocation(x,y); else if(e.getKeyCode()==KeyEvent.VK_LEFT) x=x-2; if(x<=0)x=0; button.setLocation(x,y); else if(e.getKeyCode()==KeyEvent.VK_RIGHT) x=x+2; if(x>=300)x=300; button.setLocation(x,y); public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e)