The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.
See Java Language Changes for a summary of updated language features in Java SE 9 and subsequent releases.
See JDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.
Use the information in this lesson and the component how-to sections to help you complete these questions and exercises.
Question 1: Find the component that best fits each of the following needs. Write down both the component's common name (such as "frame") and find the component's how-to page online.
Question 1a: A component that lets the user pick a color.
Answer 1a: color chooser
Question 1b: A component that displays an icon, but that doesn't react to user clicks.
Answer 1b: label
Question 1c: A component that looks like a button and that, when pressed, brings up a menu of items for the user to choose from.
Answer 1c: uneditable combo box
Question 1d: A container that looks like a frame, but that appears (usually with other, similar containers) within a real frame.
Answer 1d: internal frame
Question 1e: A container that lets the user determine how two components share a limited amount of space.
Answer 1e: split pane
Question 2: Which method do you use to add a menu bar to a top-level container such as a JFrame
?
Answer 2: setJMenuBar
Question 3: Which method do you use to specify the default button for a top-level container such as a JFrame
or JDialog
?
Answer 3: JRootPane
's setDefaultButton
method. (You get the top-level container's root pane using the getRootPane
method defined by the RootPaneContainer
interface, which every top-level container implements.)
Question 4: Which method do you use to enable and disable components such as JButton
s? What class is it defined in?
Answer 4: setEnabled
, which is defined in the Component
class
Question 5a: Which Swing components use ListSelectionModel
? [Hint: The "Use" link at the top of the specification for each interface and class takes you to a page showing where in the API that interface or class is referenced.]
Answer 5a: JList
and JTable
Question 5b: Do those components use any other models to handle other aspects of the components' state? If so, list the other models' types.
Answer 5b: JList
also uses a ListModel
, which holds the list's data. JTable
uses a TableModel
to hold its data and a TableColumnModel
to manage the table's columns.
Question 6: Which type of model holds a text component's content?
Answer 6: Document
Exercise 1. Implement a program with a GUI that looks like the one shown below. Put the main method in a class named MyDemo1
.
Answer 1: See MyDemo1.java
. Here's the code that adds the bold, italicized text:
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)
Exercise 2. Make a copy of MyDemo1.java
named MyDemo2.java
. Add a menu bar to MyDemo2
.
Answer 2: See MyDemo2.java
. The menu bar can be implemented with this code:
JMenu menu = new JMenu("Menu"); JMenuBar mb = new JMenuBar(); mb.add(menu); frame.setJMenuBar(mb);
Exercise 3. Copy MyDemo1.java
to MyDemo3.java
. Add a button (JButton
) to MyDemo3.java
. Make it the default button.
Answer 3: See MyDemo3.java
. Here's the code that adds the button and makes it the default button:
JButton b = new JButton("A button"); frame.getContentPane().add(BorderLayout.PAGE_END, b); frame.getRootPane().setDefaultButton(b);