收藏 分销(赏)

Java语言程序设计(郑莉)第九章课后习题答案.doc

上传人:仙人****88 文档编号:9199552 上传时间:2025-03-16 格式:DOC 页数:36 大小:576.50KB 下载积分:10 金币
下载 相关 举报
Java语言程序设计(郑莉)第九章课后习题答案.doc_第1页
第1页 / 共36页
Java语言程序设计(郑莉)第九章课后习题答案.doc_第2页
第2页 / 共36页


点击查看更多>>
资源描述
Java语言程序设计 第九章课后习题答案 1.编写一个程序,该程序绘制一个5×9的网络,使用drawLine方法。 //NetWork类 import java.awt.Graphics; import javax.swing.JFrame; public class NetWork extends JFrame{ public NetWork(){ // 设置窗体大小 this.setSize(130, 130); //设置窗体大小不可改变 this.setResizable(false); // 设置默认关闭方式,关闭窗体的同时结束程序 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 将窗体显示出来 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(); } } 运行结果: 2.编写一个程序,该程序以不同的颜色随机产生三角形,每个三角形用不同的颜色进行填充。 //Triangle类 import java.awt.Color; import java.awt.Graphics; import java.util.Random; import javax.swing.JFrame; public class Triangle extends JFrame{ Random rnd = new Random(); //这里定义4个三角形 int[][] x=new int[4][3]; int[][] y=new int[4][3]; int[][] color=new int[4][3]; public Triangle(){ for(int i=0;i<4;i++){ for(int j=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); } public void paint(Graphics g){ for(int i=0;i<4;i++){ g.setColor(new Color(color[i][0],color[i][1],color[i][2])); g.fillPolygon(x[i], y[i], 3); } } } //test9_2 public class test9_2 { public static void main(String[] args){ new Triangle(); } } 运行结果: 3.编写一个Applet,该程序请求用户输入圆的半径,然后显示该圆的直径、周长和面积。 //test9_3 import javax.swing.*; import java.awt.*; import 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; private 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("圆的周长:", SwingConstants.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 ActionListener() { 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, 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(double 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));//标签内容为周长 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.java产生字节码文件test9_3.class,接下来需要编写一个 HTML文件text9_3.html来嵌入text9_3.class,代码如下: <html> <applet code="test9_3.class"> </applet> </html> 将test9_3.html文件和test9_3.class文件放在同一个目录下,在浏览器中打开这个test9_3.html文件,实现的效果如下: 4.编写一个Applet,向其输入五个数,然后以条形图(bar graph)的形式来表示这些数。 5.编写一个绘制圆形的程序,当鼠标在绘制区域中单击时,该正方形的左上角顶点应准确的跟随鼠标光标移动,重绘该圆形。 //MyJFrame类 import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; public class MyJFrame extends JFrame implements MouseListener{ int x=50; int y=50; int radius=50; public MyJFrame(){ this.setTitle("绘制圆形"); this.setSize(200,200); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 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 stub this.x=e.getX(); this.y=e.getY(); this.repaint(); System.out.println("x: " + e.getX() + "\ny: " + e.getY()); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } } //test9_5 public class test9_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 javax.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;// 标签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)); 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().setDefaultButton(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(buttonOfExit); // 显示窗体 this.setVisible(true); System.out.println(numberOfRandom);// 偷偷看看随机数,哈哈 } // 事件处理 public void eventHandle() { //捕获非整型输入异常 try { numberOfUser = Integer.parseInt(jTextField.getText());//获得用户输入数 if (numberOfUser < 1 || numberOfUser > 100) { JOptionPane.showMessageDialog(this, "请输入1到100之间的整数"); } else { if (numberOfUser > numberOfRandom) { label3.setText("偏大"); jTextField.requestFocus();//清空文本框并使重新获得焦点 } if (numberOfUser < numberOfRandom) { label3.setText("偏小"); jTextField.requestFocus(); } if (numberOfUser == numberOfRandom) { label3.setText("恭喜你,答对了。"); jTextField.requestFocus(); } } } catch (NumberFormatException e) { JOptionPane.showMessageDialog(this, "请输入整数", "输入错误", 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。使用BorderLayout将JFrame布局分为左右两块;左边又使用GridLayout,包含三个按钮,右边在JLabel里显示一幅图画,按钮控制JLabel是否显示滚动条。 //test9_7 import 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 javax.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 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.setDefaultCloseOperation((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); jPanel.add(button2); jPanel.add(button3); // 读取图片作为图标 picture = new ImageIcon("D:/image/fuck.jpg/"); // 将图标赋给标签label label = new JLabel(picture); // 定义滚动框,总是显示滚动条 jscrollPane = new JScrollPane(label, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); // 将左右两边的中间容器放弃JFrame中 pane.add(jPanel, BorderLayout.WEST); pane.add(jscrollPane, BorderLayout.EAST); //排版显示 jFrame.pack(); jFrame.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getActionCommand() == "滚动") { if (whetherCroll) { jscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);//垂直不显示 jscrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);//水平不显示 whetherCroll = false; } else { jscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//垂直显示 jscrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//水平显示 whetherCroll = true; } } if (e.getActionCommand() == "试试") { JOptionPane.showMessageDialog(this, "oh,,,Fuck your teacher? yeal……good!"); } if (e.getActionCommand() == "退出") { System.exit(0); } } public static void main(String[] args) { new test9_7().init(); } } 运行结果: 显示滚动条 点击“滚动”按钮后,没显示滚动条 8.练习使用JList。建立两个JList,双击其中任何一个中的某一项,此项就会跑到另外一个JList中。 //test9_8 import 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 MouseListener { 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(JFrame.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=new JList(listModel2); jList1.addMouseListener(this); jList2.addMouseListener(this); pane.add(jList1); pane.add(jList2); jFrame.pack(); jFrame.setVisible(true); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if(e.getSource() == jList1){ int index = jList1.locationToIndex(e.getPoint()); 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); } } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public static void main(String[] args) { new test9_8().init(); } } 运行结果: 9.练习使用JComboBox。包括一个JLable、一个JComboBox,可以通过输入或者选择JComboBox中的某一项来控制JLable中文字的大小。 //test9_9 import 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 javax.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 = 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);// 添加Ite
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服