文档

Java™教程
教程路径:使用Swing创建GUI界面
主页 > 使用Swing创建GUI

答案:使用Swing组件

使用本课程中的信息和组件操作指南来帮助您完成这些问题和练习。

问题

问题1: 找到最适合以下需求的组件。写下组件的通用名称(例如"frame")并在在线上找到组件的操作指南页面。

问题1a: 一个让用户选择颜色的组件。
回答1a: 颜色选择器

问题1b: 一个显示图标但不对用户点击作出反应的组件。
回答1b: 标签

问题1c: 一个看起来像按钮的组件,当按下时会弹出一个供用户选择的菜单项。
回答1c: 不可编辑的组合框

问题1d: 一个看起来像框架的容器,但通常(与其他类似的容器一起)出现在真正的框架中。
回答1d: 内部框架

问题1e: 一个容器,允许用户确定两个组件如何共享有限的空间。
回答1e: 分割窗格

问题2: 您如何将菜单栏添加到顶级容器(例如JFrame)中?
回答2: 使用setJMenuBar方法。

问题3: 您如何指定顶级容器(例如JFrameJDialog)的默认按钮?
回答3: 使用JRootPanesetDefaultButton方法(您可以使用RootPaneContainer接口定义的getRootPane方法获取顶级容器的根窗格,每个顶级容器都实现了该接口)。

问题4: 您如何启用和禁用组件(例如JButton)?它是在哪个类中定义的?
回答4: 使用setEnabled方法,该方法定义在Component类中。

问题5a: 哪些Swing组件使用了ListSelectionModel?[提示: 每个接口和类的规范顶部的“Use”链接都会带您到一个页面,显示该接口或类在API中的引用位置。]
回答5a: JListJTable

问题5b:这些组件是否使用其他模型来处理组件状态的其他方面?如果是,请列出其他模型的类型。
答案5b:JList也使用ListModel来保存列表的数据。JTable使用TableModel来保存其数据,并使用TableColumnModel来管理表格的列。

问题6:哪种类型的模型保存文本组件的内容?
答案6:Document

练习

练习1:编写一个带有GUI界面的程序,界面如下所示。将主方法放在名为MyDemo1的类中。

MyDemo1.png

答案1:请参见MyDemo1.java(在.java源文件中)。以下是添加粗体和斜体文本的代码:

JLabel label = new JLabel("My Demo");
frame.getContentPane().add(BorderLayout.CENTER, label);
label.setFont(label.getFont().deriveFont(Font.ITALIC | Font.BOLD));
label.setHorizontalAlignment(JLabel.CENTER)

练习2:MyDemo1.java复制为MyDemo2.java。在MyDemo2中添加一个菜单栏。
答案2:请参见MyDemo2.java(在.java源文件中)。可以使用以下代码来实现菜单栏:

JMenu menu = new JMenu("菜单");
JMenuBar mb = new JMenuBar();
mb.add(menu);
frame.setJMenuBar(mb);

练习3:MyDemo1.java复制为MyDemo3.java。在MyDemo3.java中添加一个按钮(JButton),并将其设置为默认按钮。
答案3:请参见MyDemo3.java(在.java源文件中)。以下是添加按钮并将其设置为默认按钮的代码:

JButton b = new JButton("一个按钮");
frame.getContentPane().add(BorderLayout.PAGE_END, b);
frame.getRootPane().setDefaultButton(b);

前一页:问题和练习:使用Swing组件