《Java基础入门》 - 课后习题 下载本文

博学谷——让IT教学更简单,让IT学习更有效

}

}

public static void main(String[] args) { }

new Information(); panel.add(rb1); panel.add(rb2); bg.add(rb1); bg.add(rb2);

// 为单选和复选按钮添加事件监听器 cb1.addActionListener(listener1); cb2.addActionListener(listener1); cb3.addActionListener(listener1); rb1.addActionListener(listener2); rb2.addActionListener(listener2);

// 将JPanel面板和JScrollPane面板添加到JFrame容器中 Container container = this.getContentPane(); container.add(panel, BorderLayout.NORTH); container.add(pane, BorderLayout.CENTER); this.pack();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);

3、参考答案

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class MyMenu extends JFrame implements ActionListener {

JLabel label = new JLabel(\请选择菜单\JMenuItem aaMenuItem, baMenuItem; MyMenu() {

JMenuBar menuBar = new JMenuBar(); JMenu aMenu = new JMenu(\菜单A\JMenu bMenu = new JMenu(\菜单B\

JMenuItem aaMenuItem = new JMenuItem(\菜单项 AA\JMenuItem abMenuItem = new JMenuItem(\菜单项AB\JMenuItem baMenuItem = new JMenuItem(\菜单项 BA\menuBar.add(aMenu); menuBar.add(bMenu); aMenu.add(aaMenuItem); aMenu.addSeparator(); aMenu.add(abMenuItem); bMenu.add(baMenuItem);

aaMenuItem.addActionListener(this); abMenuItem.addActionListener(this);

博学谷——让IT教学更简单,让IT学习更有效

}

public void actionPerformed(ActionEvent e) { }

public static void main(String args[]) { }

JFrame frame = new MyMenu();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); frame.setVisible(true);

JMenuItem source = (JMenuItem) (e.getSource()); label.setText(\选择了菜单:\label.setHorizontalAlignment(JLabel.CENTER); baMenuItem.addActionListener(this); setJMenuBar(menuBar);

getContentPane().add(label, BorderLayout.CENTER);

一、填空题。

1、 在Java中,图形用户界面简称______,它的组件包含在______和______这两个包中。

2、 为了避免实现监听器中定义的所有方法,造成代码的臃肿,在JDK中提供了一些______类,这些

类实现了接口所有的方法,但是方法中没有任何代码,属于一种空实现。

3、 在Java中,______类相当于一个抽象的画笔对象,使用它可以在组件上绘制图形。 4、 ______负责监听事件源上发生的事件,并对各种事件做出响应处理。

5、 大部分的Swing组件都是______类的直接或者间接子类,其名称都是在原来AWT组件名称前加

上字母J。

6、 AWT事件有多种多样,大致可以分为______、______、______、______等。

7、 如果点击Frame窗口右上角的关闭按钮能将其关闭,那么这个Frame窗口添加了______监听器,

并实现了监听器的实现了______方法。 8、 对话框可以分为______和______两种。

9、 每一个容器都有一个默认的布局管理器,如果不希望通过布局管理器对容器进行布局,可以调用

容器的______方法将其取消。

10、创建下拉式菜单需要使用三个组件,分别是______、______和______。 二、判断题。

1、容器(Container)是一个可以包含基本组件和其它容器的组件。

2、可以通过实现ActionListener接口或者继承ActionAdapter类来实现动作时间监听器。 3、CardLayout布局管理器将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的。 4、非模态对话框是指用户需要等到处理完对话框后才能继续与其它窗口进行交互。 5、JFrame的默认布局管理器是FlowLayout。 三、选择题

1、下面四个组件中哪一个不是Component的子类?

A、Button B、Dialog C、Label D、MenuBar 2、每一个GUI程序中必须包含一个什么组件?

A、按钮 B、标签 C、菜单 D、容器

博学谷——让IT教学更简单,让IT学习更有效

3、下面四个选项中,哪些是事件处理机制中的角色?(多选) A、事件 B、事件源

C、事件接口 D、事件监听器

4、当鼠标按键被释放时,会调用以下哪个事件处理器方法? A、mouseReleased() B、mouseUp() C、mouseOff() D、mouseLetGo()

5、ActionEvent的对象会被传递给以下哪个事件处理器方法? A、addChangeListener() B、addActionListener() C、stateChanged() D、actionPerformed() 6、AWT中,常用的布局管理器包括哪些?(多选) A、FlowLayout布局管理器 B、BorderLayout布局管理器 C、CardLayout布局管理器 D、GridLayout布局管理器 7、下面哪些是FlowLayout类中表示对齐方式的常量?(多选) A、FlowLayout.LEFT B、FlowLayout.CENTER C、FlowLayout.VERTICAL D、FlowLayout.RIGHT 8、下面对与Swing的描述,正确的有哪些?(多选)

A、Swing 是在AWT基础上构建的一套新的图形界面系统 B、Swing提供了AWT 所能够提供的所有功能 C、Swing 组件是用Java代码来实现的 D、Swing组件都是重量级组件

9、下面四对AWT和Swing对应组件中,错误的是? A、Button和JButton B、Dialog和JDialog

C、MenuBar和JMenuBar D、ComboBox和JComboBox

10、使用下面哪个组件可以接收用户的输入信息? A、JButton B、JLabel

C、JTextField D、以上都可以

四、程序分析题

阅读下面的程序以及注释的要求,在空格处填上相应的代码 代码一:

import java.awt.*; import javax.swing.*;

public class MyLayout _______/*此处填空*/ JFrame{

JLabel labelNo,labelName,labelGender; JTextField stdno,name,gender; int x=0,y=0,w,h;

Container cp=getContentPane(); public MyLayout() {

setLayout(null);

学号=new JLabel(\、\姓名=new JLabel(\、\性别=new JLabel(\、\_______________________ // 此处填空

博学谷——让IT教学更简单,让IT学习更有效

}

}

public static void main(String args[]){ }

MyLayout obj=new MyLayout();

_______________________ // 此处填空 gender=new JTextField(); x=80;y=30; w=100;h=30;

cp.add(labelNo); cp.add(labelName);cp.add(labelGender); cp.add(stdno);cp.add(name);cp.add(gender);

labelNo.setBounds(0,y,w,h); stdno.setBounds(x,y,w,h); labelName.setBounds(0,2*y,w,h);name.setBounds(x,2*y,w,h); labelGender.setBounds(0,3*y,w,h);gender.setBounds(x,3*y,w,h); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(280,200); setVisible(true);

代码二:

import java.awt.CardLayout; import java.awt.Container;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class MyCardLayout {

public static void main(String args[]) {

final JFrame jframe = new JFrame(\一个滚动列表的例子\final Container panelcp = jframe.getContentPane(); final CardLayout card = new CardLayout (20, 20); panelcp.setLayout(card); for (int i = 0; i < 5; i++) {

JButton jbt = new JButton(\

jbt.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

final JPanel panel = new JPanel();

jframe.add(panel);

// 点击的时候显示下一个按钮

}

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

_______________________ // 此处填空

});

_______________________ // 此处填空