Java语言程序设计(郑莉)第九章课后习题答案_第1页
Java语言程序设计(郑莉)第九章课后习题答案_第2页
Java语言程序设计(郑莉)第九章课后习题答案_第3页
Java语言程序设计(郑莉)第九章课后习题答案_第4页
Java语言程序设计(郑莉)第九章课后习题答案_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java语言程序设计第九章课后习题答案1.编写一个程序,该程序绘制一个59的网络,使用drawLine方法。/NetWork类import java.awt.Graphics;import javax.swing.JFrame;public class NetWork extends JFramepublic NetWork()/ 设置窗体大小this.setSize(130, 130);/设置窗体大小不可改变this.setResizable(false);/ 设置默认关闭方式,关闭窗体的同时结束程序this.setDefaultCloseOperation(JFrame.EXIT_ON_C

2、LOSE);/ 将窗体显示出来this.setVisible(true);/横纵格之间都间隔10像素,起点在(20,40)public void paint(Graphics g)/绘制横向线for(int i=0;i=5;i+)g.drawLine(20, 40+i*10, 110, 40+i*10);/绘制纵向线for(int i=0;i=9;i+)g.drawLine(20+i*10, 40, 20+i*10, 90);/test9_1类public class test9_1 public static void main(String args)new NetWork();运行结果:

3、2.编写一个程序,该程序以不同的颜色随机产生三角形,每个三角形用不同的颜色进行填充。/Triangle类import java.awt.Color;import java.awt.Graphics;import java.util.Random;import javax.swing.JFrame;public class Triangle extends JFrameRandom rnd = new Random();/这里定义4个三角形int x=new int43;int y=new int43;int color=new int43;public Triangle()for(int i=

4、0;i4;i+)for(int j=0;j3;j+)colorij=rnd.nextInt(255);xij=rnd.nextInt(i*100+100);yij=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

5、);public void paint(Graphics g)for(int i=0;i4;i+)g.setColor(new Color(colori0,colori1,colori2); g.fillPolygon(xi, yi, 3);/test9_2public class test9_2 public static void main(String args)new Triangle();运行结果:3.编写一个Applet,该程序请求用户输入圆的半径,然后显示该圆的直径、周长和面积。/test9_3import javax.swing.*;import java.awt.*;impo

6、rt java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class test9_3 extends JApplet /声明5个标签private JLabel jLabel1;private JLabel jLabel2;private JLabel jLabel3;private JLabel jLabel4;private JLabel jLabel5;/1个单行文本private JTextField textOfRadius;/2个按钮private JButton jButton1;priva

7、te JButton jButton2;/初始化public void init() try java.awt.EventQueue.invokeAndWait(new Runnable() public void run() initComponents();); catch (Exception ex) ex.printStackTrace();private void initComponents() /声明8个组件jLabel1 = new JLabel(输入圆的半径:, SwingConstants.CENTER);jLabel2 = new JLabel(圆的周长:, SwingC

8、onstants.CENTER);jLabel3 = new JLabel(, SwingConstants.CENTER);jLabel4 = new JLabel(圆的面积:, SwingConstants.CENTER);jLabel5 = new JLabel(, SwingConstants.CENTER);textOfRadius = new JTextField(半径);jButton1 = new JButton(计算);jButton2 = new JButton(退出);/按钮添加监听器jButton1.addActionListener(new ActionListene

9、r() public void actionPerformed(ActionEvent evt) jButton1ActionPerformed(evt););/按钮添加监听器jButton2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) jButton2ActionPerformed(evt););/声明定义内容面板,并且设置其布局格式为:4行2列格子Container c = getContentPane();c.setLayout(new GridLayout(4,

10、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);/ 求周长方法private String Round(double a) double perimeter = a * 2 * 3.14;String s = new String(String.valueOf(perimeter);return s;/ 求面积方法private String Area(dou

11、ble a) double area = a * a * 3.14;String s = new String(String.valueOf(area);return s;/点击“计算”按钮jButton1触发的方法private void jButton1ActionPerformed(ActionEvent evt) /捕获单文本输入非数字的异常try String s = textOfRadius.getText();/获得单文本字符double a = Double.valueOf(s).floatValue();/字符转化为双精度jLabel3.setText(Round(a);/标

12、签内容为周长jLabel5.setText(Area(a);/标签内容为面积 catch (NumberFormatException r) /单文本为非数字弹出提示“输入错误”框JOptionPane.showMessageDialog(this, 请输入数字类型, 输入错误,JOptionPane.WARNING_MESSAGE);textOfRadius.setText();/点击“退出”按钮jButton2触发的方法public void jButton2ActionPerformed(ActionEvent evt) System.exit(0);运行结果:编译text9_3.jav

13、a产生字节码文件test9_3.class,接下来需要编写一个HTML文件text9_3.html来嵌入text9_3.class,代码如下:将test9_3.html文件和test9_3.class文件放在同一个目录下,在浏览器中打开这个test9_3.html文件,实现的效果如下:4.编写一个Applet,向其输入五个数,然后以条形图(bar graph)的形式来表示这些数。5.编写一个绘制圆形的程序,当鼠标在绘制区域中单击时,该正方形的左上角顶点应准确的跟随鼠标光标移动,重绘该圆形。/MyJFrame类import java.awt.Graphics;import java.awt.ev

14、ent.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;public class MyJFrame extends JFrame implements MouseListenerint x=50;int y=50;int radius=50;public MyJFrame()this.setTitle(绘制圆形);this.setSize(200,200);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_C

15、LOSE);this.addMouseListener(this);this.setVisible(true);public void paint(Graphics g)g.drawOval(x, y, radius, radius);public void mouseClicked(MouseEvent e) / TODO Auto-generated method stubthis.x=e.getX();this.y=e.getY();this.repaint();System.out.println(x: + e.getX() + ny: + e.getY();public void m

16、ouseEntered(MouseEvent e) / TODO Auto-generated method stubpublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubpublic void mousePressed(MouseEvent e) / TODO Auto-generated method stubpublic void mouseReleased(MouseEvent e) / TODO Auto-generated method stub/test9_5public class test

17、9_3 public static void main(String args)new MyJFrame();运行结果:6.编写一个“猜数”程序:该程序随机在1到100的范围内选择一个供用户猜测的整数,然后改程序显示提示信息,要求用户输入一个1到100之间的整数,根据输入偏大、偏小、正确,程序将显示不同的图标。/GuessNumber类import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Random;import ja

18、vax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.SwingConstants;public class GuessNumber extends JFrame implements ActionListener int numberOfRandom;/ 游戏程序随机数int numberOfUser;/ 玩家输入整数JLabel label1;/

19、标签1:“输入一个1到100之间的整数”JLabel label2;/ 标签2:“提示”JLabel label3;/ 标签3:提示的内容(偏大、偏小、正确)JButton buttonOfSure;/ 确定按钮JButton buttonOfExit;/ 退出按钮JTextField jTextField;/ 猜数输入单行文本框public void init() / 窗体的定义this.setTitle(这是一个猜数游戏);this.setSize(400, 120);this.setResizable(false);this.setLayout(new GridLayout(3, 2);

20、this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 随机数Random random = new Random();numberOfRandom = random.nextInt(100);/ 各组件的定义label1 = new JLabel(请输入一个1到100之间的整数:);label2 = new JLabel(提示:, SwingConstants.CENTER);label3 = new JLabel(猜猜看);buttonOfSure = new JButton(确定);this.getRootPane().setDefau

21、ltButton(buttonOfSure);/ 默认用户按下回车键触发“确定”按钮buttonOfSure.addActionListener(this);buttonOfExit = new JButton(退出);buttonOfExit.addActionListener(this);jTextField = new JTextField(输入);/ 窗体加入各组件this.add(label1);this.add(jTextField);this.add(label2);this.add(label3);this.add(buttonOfSure);this.add(buttonOf

22、Exit);/ 显示窗体this.setVisible(true);System.out.println(numberOfRandom);/ 偷偷看看随机数,哈哈/ 事件处理public void eventHandle() /捕获非整型输入异常try numberOfUser = Integer.parseInt(jTextField.getText();/获得用户输入数if (numberOfUser 100) JOptionPane.showMessageDialog(this, 请输入1到100之间的整数); else if (numberOfUser numberOfRandom)

23、label3.setText(偏大);jTextField.requestFocus();/清空文本框并使重新获得焦点if (numberOfUser numberOfRandom) label3.setText(偏小);jTextField.requestFocus();if (numberOfUser = numberOfRandom) label3.setText(恭喜你,答对了。);jTextField.requestFocus(); catch (NumberFormatException e) JOptionPane.showMessageDialog(this, 请输入整数, 输

24、入错误,JOptionPane.WARNING_MESSAGE);jTextField.requestFocus();/按钮触发选择public void actionPerformed(ActionEvent e) if (e.getActionCommand() = 确定) this.eventHandle();if (e.getActionCommand() = 退出) System.exit(0);public static void main(String args) new GuessNumber().init();运行结果:7.练习使用JscrollPane。使用BorderLa

25、yout将JFrame布局分为左右两块;左边又使用GridLayout,包含三个按钮,右边在JLabel里显示一幅图画,按钮控制JLabel是否显示滚动条。/test9_7import java.awt.BorderLayout;import java.awt.Button;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import ja

26、vax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.ScrollPaneConstants;public class test9_7 extends JFrame implements ActionListener private JPanel jPanel;/左边panel框private Button button1;private Button

27、 button2;private Button button3;private JScrollPane jscrollPane;/右边滚动框private JLabel label;/滚动框中的标签public ImageIcon picture = null;/标签中的图标public boolean whetherCroll = true;/用于切换滚动条的显示public void init() JFrame jFrame = new JFrame(练习使用JscrollPane);Container pane = jFrame.getContentPane();this.setDefa

28、ultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 定义左边镶板JPanel框和三个按钮jPanel = new JPanel(new GridLayout(3, 1, 0, 30);button1 = new Button(滚动);button1.addActionListener(this);button2 = new Button(试试);button2.addActionListener(this);button3 = new Button(退出);button3.addActionListener(this);jPanel.add(button1);j

29、Panel.add(button2);jPanel.add(button3);/ 读取图片作为图标picture = new ImageIcon(D:/image/fuck.jpg/);/ 将图标赋给标签labellabel = new JLabel(picture);/ 定义滚动框,总是显示滚动条jscrollPane = new JScrollPane(label,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);/ 将左右两边的中间容器放弃JFram

30、e中pane.add(jPanel, BorderLayout.WEST);pane.add(jscrollPane, BorderLayout.EAST);/排版显示jFrame.pack();jFrame.setVisible(true);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif (e.getActionCommand() = 滚动) if (whetherCroll) jscrollPane.setVerticalScrollBarPolicy(JScrol

31、lPane.VERTICAL_SCROLLBAR_NEVER);/垂直不显示jscrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);/水平不显示whetherCroll = false; else jscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);/垂直显示jscrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_S

32、CROLLBAR_ALWAYS);/水平显示whetherCroll = true;if (e.getActionCommand() = 试试) JOptionPane.showMessageDialog(this,oh,Fuck your teacher? yealgood!);if (e.getActionCommand() = 退出) System.exit(0);public static void main(String args) new test9_7().init();运行结果:显示滚动条点击“滚动”按钮后,没显示滚动条8.练习使用JList。建立两个JList,双击其中任何一

33、个中的某一项,此项就会跑到另外一个JList中。/test9_8import java.awt.Container;import java.awt.GridLayout;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.DefaultListModel;import javax.swing.JFrame;import javax.swing.JList;public class test9_8 extends JFrame implements MouseListene

34、r public JFrame jFrame;public JList jList1;public JList jList2;public DefaultListModel listModel1;public DefaultListModel listModel2;public void init() JFrame jFrame = new JFrame(练习使用List);Container pane = jFrame.getContentPane();pane.setLayout(new GridLayout(1,2);jFrame.setDefaultCloseOperation(JFr

35、ame.EXIT_ON_CLOSE);listModel1 = new DefaultListModel();listModel1.addElement(First);listModel1.addElement(Second);listModel1.addElement(Third);listModel2=new DefaultListModel();listModel2.addElement(one);listModel2.addElement(two);listModel2.addElement(three);jList1 = new JList(listModel1);jList2=ne

36、w JList(listModel2);jList1.addMouseListener(this);jList2.addMouseListener(this);pane.add(jList1);pane.add(jList2);jFrame.pack();jFrame.setVisible(true);Overridepublic void mouseClicked(MouseEvent e) / TODO Auto-generated method stubif(e.getSource() = jList1)int index = jList1.locationToIndex(e.getPo

37、int();Object o = jList1.getModel().getElementAt(index);listModel2.addElement(o);if(e.getSource()=jList2)int index = jList2.locationToIndex(e.getPoint();Object o = jList2.getModel().getElementAt(index);listModel1.addElement(o);Overridepublic void mousePressed(MouseEvent e) / TODO Auto-generated metho

38、d stubOverridepublic void mouseReleased(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubpublic static void main(String args) new test9_8().ini

39、t();运行结果:9.练习使用JComboBox。包括一个JLable、一个JComboBox,可以通过输入或者选择JComboBox中的某一项来控制JLable中文字的大小。/test9_9import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import javax.swing.JComboBox;import javax.swing.JFrame;import j

40、avax.swing.JLabel;import javax.swing.JOptionPane;public class test9_9 extends JFrame implements ItemListener public JFrame jFrame;private JLabel jLabel;private JComboBox jComboBox;private String fontSize = 8, 14, 20, 28, 32, 40 ;public void init() jFrame = new JFrame(练习ComboBox);Container container

41、= jFrame.getContentPane();container.setLayout(new GridLayout(2, 1);jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jLabel = new JLabel(你好吗?);jLabel.setFont(new Font(, 0, 10);/ 设置字体大小jComboBox = new JComboBox(fontSize);jComboBox.setEditable(true);/ 设置复选框可以输入jComboBox.addItemListener(this);/ 添加I

42、temListener监听/ 添加两个组件container.add(jLabel);container.add(jComboBox);jFrame.pack();/ 排版jFrame.setVisible(true);/ 显示public void itemStateChanged(ItemEvent e) /使用这个判断的目的的是为了避免触发事件总是执行两次的问题if (e.getStateChange() = ItemEvent.SELECTED) try String s = jComboBox.getSelectedItem().toString();int intFontSize

43、= Integer.parseInt(s);jLabel.setFont(new Font(, 0, intFontSize);/System.out.println(intFontSize); catch (NumberFormatException r) JOptionPane.showMessageDialog(this, 请输入整数);public static void main(String args) new test9_9().init();运行结果:10.练习使用JTable。包括姓名、学号、语文成绩、数学成绩、总分五项,单击总分会自动将语文数学成绩相加。import jav

44、a.awt.event.*;import javax.swing.*;import javax.swing.table.*;public class Test9_10 extends JFrame implements MouseListener private JTable jTable;private Object cellData = 姓名, new String(林楚金) , 学号, new String() , 语文成绩, new String(86) , 数学成绩, new String(96) , 总分, new String(点击出总分) ;private String col

45、umnNames = col1, col2 ;public Test9_10() DefaultTableModel model = new DefaultTableModel(cellData, columnNames) public boolean isCellEditable(int row, int column) return false;jTable = new JTable(model);jTable.addMouseListener(this);this.add(jTable);this.setTitle(表格演示);this.setSize(300, 350);this.se

46、tLocation(200, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);public void mouseClicked(MouseEvent e) DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel();int row = jTable.getSelectedRow();int column = jTable.getSelectedColumn();if(row=4 & column=1)Stri

47、ng yuwen = (String) tableModel.getValueAt(2, column);/语文成绩String shuxue = (String) tableModel.getValueAt(3, column);/数学成绩Integer count = Integer.parseInt(yuwen)+Integer.parseInt(shuxue);tableModel.setValueAt(count.toString(), row, column);public void mouseEntered(MouseEvent e) public void mouseExite

48、d(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) public static void main(String args) new Test9_10();运行结果:11.练习使用对话框。包括一个JLable和两个JButton,按任何一个JButton都会产生一个对话框,按确定后将输入内容在JLable中显示出来。/test9_11import java.awt.Container;import java.awt.Frame;import java.awt

49、.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;public class test9_11 extends Frame implements ActionListener JFrame jFrame;JButton jButton1;JButton jButton2;JLabel jLabel;public void init() JFrame jFrame = new JFrame(练习使用对话框);Container pane =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论