java答案第九章.docx
《java答案第九章.docx》由会员分享,可在线阅读,更多相关《java答案第九章.docx(33页珍藏版)》请在冰豆网上搜索。
java答案第九章
//NetWork类
importjava.awt.Graphics;
importjavax.swing.JFrame;
publicclass test9_1extendsJFrame{
publicNetWork(){
//设置窗体大小
this.setSize(130,130);
//设置窗体大小不可改变
this.setResizable(false);
//设置默认关闭方式,关闭窗体的同时结束程序
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//将窗体显示出来
this.setVisible(true);
}
//横纵格之间都间隔10像素,起点在(20,40)
publicvoidpaint(Graphicsg){
//绘制横向线
for(inti=0;i<=5;i++){
g.drawLine(20,40+i*10,110,40+i*10);
}
//绘制纵向线
for(inti=0;i<=9;i++){
g.drawLine(20+i*10,40,20+i*10,90);
}
}
publicstaticvoidmain(String[]args){
newtest9_1();
}
}
运行结果:
2.
编写一个程序,该程序以不同的颜色随机产生三角形,每个三角形用不同的颜色进行填充。
//Triangle类
importjava.awt.Color;
importjava.awt.Graphics;
importjava.util.Random;
importjavax.swing.JFrame;
publicclassTriangleextendsJFrame{
Randomrnd=newRandom();
//这里定义4个三角形
int[][]x=newint[4][3];
int[][]y=newint[4][3];
int[][]color=newint[4][3];
publicTriangle(){
for(inti=0;i<4;i++){
for(intj=0;j<3;j++){
color[i][j]=rnd.nextInt(255);
x[i][j]=rnd.nextInt(i*100+100);
y[i][j]=rnd.nextInt(i*100+100)+50;//加50像素是为了避免顶到窗体上沿
}
}
//窗体标题
this.setTitle("随机三角形");
//窗体大小
this.setSize(500,500);
//窗体大小不可变
this.setResizable(false);
//关闭窗体的同时结束程序
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
publicvoidpaint(Graphicsg){
for(inti=0;i<4;i++){
g.setColor(newColor(color[i][0],color[i][1],color[i][2]));
g.fillPolygon(x[i],y[i],3);
}
}
publicstaticvoidmain(String[]args){
newTriangle();
}
}
运行结果:
3.编写一个Applet,该程序请求用户输入圆的半径,然后显示该圆的直径、周长和面积。
//test9_3
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
publicclasstest9_3extendsJApplet{
//声明5个标签
privateJLabeljLabel1;
privateJLabeljLabel2;
privateJLabeljLabel3;
privateJLabeljLabel4;
privateJLabeljLabel5;
//1个单行文本
privateJTextFieldtextOfRadius;
//2个按钮
privateJButtonjButton1;
privateJButtonjButton2;
//初始化
publicvoidinit(){
try{
java.awt.EventQueue.invokeAndWait(newRunnable(){
publicvoidrun(){
initComponents();
}
});
}catch(Exceptionex){
ex.printStackTrace();
}
}
privatevoidinitComponents(){
//声明8个组件
jLabel1=newJLabel("输入圆的半径:
",SwingConstants.CENTER);
jLabel2=newJLabel("圆的周长:
",SwingConstants.CENTER);
jLabel3=newJLabel("",SwingConstants.CENTER);
jLabel4=newJLabel("圆的面积:
",SwingConstants.CENTER);
jLabel5=newJLabel("",SwingConstants.CENTER);
textOfRadius=newJTextField("半径");
jButton1=newJButton("计算");
jButton2=newJButton("退出");
//按钮添加监听器
jButton1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jButton1ActionPerformed(evt);
}
});
//按钮添加监听器
jButton2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jButton2ActionPerformed(evt);
}
});
//声明定义内容面板,并且设置其布局格式为:
4行2列格子
Containerc=getContentPane();
c.setLayout(newGridLayout(4,2));
//将8个组件加入到内容面板
c.add(jLabel1);
c.add(textOfRadius);
c.add(jLabel2);
c.add(jLabel3);
c.add(jLabel4);
c.add(jLabel5);
c.add(jButton1);
c.add(jButton2);
}
//求周长方法
privateStringRound(doublea){
doubleperimeter=a*2*3.14;
Strings=newString(String.valueOf(perimeter));
returns;
}
//求面积方法
privateStringArea(doublea){
doublearea=a*a*3.14;
Strings=newString(String.valueOf(area));
returns;
}
//点击“计算”按钮jButton1触发的方法
privatevoidjButton1ActionPerformed(ActionEventevt){
//捕获单文本输入非数字的异常
try{
Strings=textOfRadius.getText();//获得单文本字符
doublea=Double.valueOf(s).floatValue();//字符转化为双精度
jLabel3.setText(Round(a));//标签内容为周长
jLabel5.setText(Area(a));//标签内容为面积
}catch(NumberFormatExceptionr){
//单文本为非数字弹出提示“输入错误”框
JOptionPane.showMessageDialog(this,"请输入数字类型","输入错误",JOptionPane.WARNING_MESSAGE);
textOfRadius.setText("");
}
}
//点击“退出”按钮jButton2触发的方法
publicvoidjButton2ActionPerformed(ActionEventevt){
System.exit(0);
}
}
运行结果:
编译text9_3.java产生字节码文件test9_3.class,接下来需要编写一个
HTML文件text9_3.html来嵌入text9_3.class,代码如下:
将test9_3.html文件和test9_3.class文件放在同一个目录下,在浏览器中打开这个test9_3.html文件,实现的效果如下:
4.编写一个Applet,向其输入五个数,然后以条形图(bargraph)的形式来表示这些数。
(还没完善好,供参考)
//MyJPanel类
importjava.awt.Graphics;
importjavax.swing.JPanel;
publicclassMyJPanelextendsJPanel{
publicint[]shu=newint[5];
publicMyJPanel(int[]shu){
for(inti=0;i<5;i++){
this.shu[i]=shu[i];
}
this.setSize(200,200);
this.setVisible(true);
}
publicvoidpaint(Graphicsg){//Component
super.paint(g);
for(inti=0;i<5;i++){
g.fillRect(10,30*i,10*shu[i],20);
}
}
}
//test9_4
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
publicclasstest9_4extendsJFrameimplementsActionListener{
JFramejFrame;
JTextFieldjTextField1;
JTextFieldjTextField2;
JTextFieldjTextField3;
JTextFieldjTextField4;
JTextFieldjTextField5;
JButtonjButton;
int[]number={1,2,3,4,5};
JPaneljPanel1;
MyJPaneljPanel2;
publicvoidinit(){
JFramejFrame=newJFrame("条形图表示数");
jFrame.setSize(600,210);
//jFrame.setResizable(false);
jFrame.setLayout(newGridLayout(1,2));
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jTextField1=newJTextField();
jTextField2=newJTextField();
jTextField3=newJTextField();
jTextField4=newJTextField();
jTextField5=newJTextField();
jButton=newJButton("开始");
jButton.addActionListener(this);
jPanel1=newJPanel();
jPanel1.setLayout(newGridLayout(6,1));
jPanel1.add(jTextField1);
jPanel1.add(jTextField2);
jPanel1.add(jTextField3);
jPanel1.add(jTextField4);
jPanel1.add(jTextField5);
jPanel1.add(jButton);
jPanel2=newMyJPanel(number);
jFrame.add(jPanel1);
jFrame.add(jPanel2);
jFrame.pack();
jFrame.setVisible(true);
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
number[0]=Integer.parseInt(jTextField1.getText());
number[1]=Integer.parseInt(jTextField2.getText());
number[2]=Integer.parseInt(jTextField3.getText());
number[3]=Integer.parseInt(jTextField4.getText());
number[4]=Integer.parseInt(jTextField5.getText());
for(inti=0;i<5;i++){
System.out.println(number[i]);
}
}
publicstaticvoidmain(String[]args){
newtest9_4().init();
}
}
5.编写一个绘制圆形的程序,当鼠标在绘制区域中单击时,该正方形的左上角顶点应准确的跟随鼠标光标移动,重绘该圆形。
//MyJFrame类
importjava.awt.Graphics;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavax.swing.JFrame;
publicclassMyJFrameextendsJFrameimplementsMouseListener{
intx=50;
inty=50;
intradius=50;
publicMyJFrame(){
this.setTitle("绘制圆形");
this.setSize(200,200);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(this);
this.setVisible(true);
}
publicvoidpaint(Graphicsg){
g.drawOval(x,y,radius,radius);
}
publicvoidmouseClicked(MouseEvente){
//TODOAuto-generatedmethodstub
this.x=e.getX();
this.y=e.getY();
this.repaint();
System.out.println("x:
"+e.getX()+"\ny:
"+e.getY());
}
publicvoidmouseEntered(MouseEvente){
//TODOAuto-generatedmethodstub
}
publicvoidmouseExited(MouseEvente){
//TODOAuto-generatedmethodstub
}
publicvoidmousePressed(MouseEvente){
//TODOAuto-generatedmethodstub
}
publicvoidmouseReleased(MouseEvente){
//TODOAuto-generatedmethodstub
}
publicstaticvoidmain(String[]args){
newMyJFrame();
}
}
运行结果:
6.编写一个“猜数”程序:
该程序随机在1到100的范围内选择一个供用户猜测的整数,然后改程序显示提示信息,要求用户输入一个1到100之间的整数,根据输入偏大、偏小、正确,程序将显示不同的图标。
//GuessNumber类
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.Random;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassGuessNumberextendsJFrameimplementsActionListener{
intnumberOfRandom;//游戏程序随机数
intnumberOfUser;//玩家输入整数
JLabellabel1;//标签1:
“输入一个1到100之间的整数”
JLabellabel2;//标签2:
“提示”
JLabellabel3;//标签3:
提示的内容(偏大、偏小、正确)
JButtonbuttonOfSure;//确定按钮
JButtonbuttonOfExit;//退出按钮
JTextFieldjTextField;//猜数输入单行文本框
publicvoidinit(){
//窗体的定义
this.setTitle("这是一个猜数游戏");
this.setSize(400,120);
this.setResizable(false);
this.setLayout(newGridLayout(3,2));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//随机数
Randomrandom=newRandom();
numberOfRandom=random.nextInt(100);
//各组件的定义
label1=newJLabel("请输入一个1到100之间的整数:
");
label2=newJLabel("提示:
",SwingConstants.CENTER);
label3=newJLabel("猜猜看");
buttonOfSure=newJButton("确定");
this.getRootPane().setDefaultButton(buttonOfSure);//默认用户按下回车键触发“确定”按钮
buttonOfSure.addActionListener(this);
buttonOfExit=newJButton("退出");
buttonOfExit.addActionListener(this);
jTextField=newJTextField("输入");
//窗体加入各组件
this.add(label1);
this.add(jTextField);
this.add(label2);
this.add(label3);
this.add(buttonOfSure);
this.add(buttonOfExit);
//显示窗体
this.setVisible(true);
System.out.println(numberOfRandom);//偷偷看看随机数,哈哈
}
//事件处理
pu