Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Intro_Java_brief_Liang2011.pdf
Скачиваний:
195
Добавлен:
26.03.2016
Размер:
10.44 Mб
Скачать

274 Chapter 8 Objects and Classes

 

 

 

 

 

 

Object type assignment c1 = c2

 

 

Before:

 

 

 

 

After:

 

 

 

 

 

 

 

 

 

 

c1

 

 

 

 

 

 

 

 

 

c1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c2

 

 

 

 

 

 

 

 

 

c2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c2: Circle

 

 

c1: Circle

 

 

 

c2: Circle

c1: Circle

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

radius = 9

 

 

radius = 5

 

 

 

radius = 9

 

radius = 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FIGURE 8.8 Reference variable c2 is copied to variable c1.

 

Note

 

As shown in Figure 8.8, after the assignment statement c1 = c2, c1 points to the same object

 

referenced by c2. The object previously referenced by c1 is no longer useful and therefore is now

garbage

known as garbage. Garbage occupies memory space. The Java runtime system detects garbage

garbage collection

and automatically reclaims the space it occupies. This process is called garbage collection.

Tip

If you know that an object is no longer needed, you can explicitly assign null to a reference variable for the object. The JVM will automatically collect the space if the object is not referenced by any reference variable.

 

 

 

 

8.6

Using Classes from the Java Library

 

 

 

 

Listing 8.1 defined the Circle1 class and created objects from the class. You will frequently

 

 

 

 

use the classes in the Java library to develop programs. This section gives some examples of

 

 

 

 

the classes in the Java library.

 

 

 

 

 

 

 

8.6.1

The Date Class

 

 

 

 

 

 

 

In Listing 2.8, ShowCurrentTime.java, you learned how to obtain the current time using

 

 

 

 

System.currentTimeMillis(). You used the division and remainder operators to extract

 

 

 

 

current second, minute, and hour. Java provides a system-independent encapsulation of date

java.util.Date class

and time in the java.util.Date class, as shown in Figure 8.9.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

java.util.Date

 

 

 

The + sign indicates

 

+Date()

 

Constructs a Date object for the current time.

 

+Date(elapseTime: long)

 

 

 

public modifier

 

 

 

Constructs a Date object for a given time in

 

 

 

 

 

 

 

 

 

milliseconds elapsed since January 1, 1970, GMT.

 

 

 

 

 

+toString(): String

 

Returns a string representing the date and time.

 

 

 

 

 

+getTime(): long

 

Returns the number of milliseconds since January 1,

 

 

 

 

 

 

 

 

1970, GMT.

 

 

 

 

 

+setTime(elapseTime: long): void

 

Sets a new elapse time in the object.

 

 

 

 

 

 

 

 

 

 

FIGURE 8.9 A Date object represents a specific date and time.

You can use the no-arg constructor in the Date class to create an instance for the current date and time, its getTime() method to return the elapsed time since January 1, 1970, GMT, and its toString method to return the date and time as a string. For example, the following code

8.6 Using Classes from the Java Library 275

java.util.Date date = new java.util.Date() ; System.out.println("The elapsed time since Jan 1, 1970 is " +

date.getTime() + " milliseconds"); System.out.println(date.toString() );

create object

get elapsed time invoke toString

displays the output like this:

The elapsed time since Jan 1, 1970 is 1100547210284 milliseconds Mon Nov 15 14:33:30 EST 2004

The Date class has another constructor, Date(long elapseTime), which can be used to construct a Date object for a given time in milliseconds elapsed since January 1, 1970, GMT.

8.6.2The Random Class

You have used Math.random() to obtain a random double value between 0.0 and 1.0 (excluding 1.0). Another way to generate random numbers is to use the java.util.Random class, as shown in Figure 8.10, which can generate a random int, long, double, float, and boolean value.

java.util.Random

 

 

+Random()

 

Constructs a Random object with the current time as its seed.

+Random(seed: long)

 

Constructs a Random object with a specified seed.

+nextInt(): int

 

Returns a random int value.

+nextInt(n: int): int

 

Returns a random int value between 0 and n (exclusive).

+nextLong(): long

 

Returns a random long value.

+nextDouble(): double

 

Returns a random double value between 0.0 and 1.0 (exclusive).

+nextFloat(): float

 

Returns a random float value between 0.0F and 1.0F (exclusive).

+nextBoolean(): boolean

 

Returns a random boolean value.

 

 

 

FIGURE 8.10 A Random object can be used to generate random values.

When you create a Random object, you have to specify a seed or use the default seed. The no-arg constructor creates a Random object using the current elapsed time as its seed. If two Random objects have the same seed, they will generate identical sequences of numbers. For example, the following code creates two Random objects with the same seed, 3.

Random random1 = new Random(3); System.out.print("From random1: "); for (int i = 0; i < 10; i++)

System.out.print(random1.nextInt(1000) + " ");

Random random2 = new Random(3); System.out.print("\nFrom random2: "); for (int i = 0; i < 10; i++)

System.out.print(random2.nextInt(1000) + " ");

The code generates the same sequence of random int values:

From random1: 734 660 210 581 128 202 549 564 459 961

From random2: 734 660 210 581 128 202 549 564 459 961

Note

The ability to generate the same sequence of random values is useful in software testing and

same sequence

many other applications. In software testing, you can test your program using a fixed sequence of

 

numbers before using different sequences of random numbers.

 

276Chapter 8 Objects and Classes

8.6.3Displaying GUI Components

Pedagogical Note

Graphical user interface (GUI) components are good examples for teaching OOP. Simple GUI examples are introduced for this purpose. The full introduction to GUI programming begins with Chapter 12, “GUI Basics.”

When you develop programs to create graphical user interfaces, you will use Java classes such as JFrame, JButton, JRadioButton, JComboBox, and JList to create frames, buttons, radio buttons, combo boxes, lists, and so on. Listing 8.5 is an example that creates two windows using the JFrame class. The output of the program is shown in Figure 8.11.

FIGURE 8.11 The program creates two windows using the JFrame class.

LISTING 8.5 TestFrame.java

 

1

import javax.swing.JFrame;

 

2

 

 

 

 

 

3

public class TestFrame {

 

4

public static void main(String[] args) {

create an object

5

 

JFrame frame1 = new JFrame();

 

invoke a method

6

 

frame1.setTitle("Window 1");

 

7

 

frame1.setSize(200, 150);

 

8

 

frame1.setLocation(200, 100);

 

9

 

frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

10

 

frame1.setVisible(true);

 

11

 

 

 

 

create an object

12

 

JFrame frame2 = new JFrame();

 

 

invoke a method

13

 

frame2.setTitle("Window 2");

 

14

 

frame2.setSize(200, 150);

 

15

 

frame2.setLocation(410, 100);

 

16

 

frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

17

 

frame2.setVisible(true);

 

18

}

 

 

 

 

19

}

 

 

 

This program creates two objects of the JFrame class (lines 5, 12) and then uses the methods setTitle, setSize, setLocation, setDefaultCloseOperation, and setVisible to set the properties of the objects. The setTitle method sets a title for the window (lines 6, 13). The setSize method sets the window’s width and height (lines 7, 14). The setLocation method specifies the location of the window’s upper-left corner (lines 8, 15). The setDefaultCloseOperation method terminates the program when the frame is closed (lines 9, 16). The setVisible method displays the window.

You can add graphical user interface components, such as buttons, labels, text fields, check boxes, and combo boxes to the window. The components are defined using classes. Listing 8.6 gives an example of creating a graphical user interface, as shown in Figure 8.1.

8.6 Using Classes from the Java Library 277

LISTING 8.6 GUIComponents.java

1 import javax.swing.*;

2

3 public class GUIComponents {

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

5// Create a button with text OK

6 JButton jbtOK = new JButton("OK");

7

8// Create a button with text Cancel

9 JButton jbtCancel = new JButton("Cancel");

10

11// Create a label with text "Enter your name: "

12JLabel jlblName = new JLabel("Enter your name: ");

14// Create a text field with text "Type Name Here"

15JTextField jtfName = new JTextField("Type Name Here");

17// Create a check box with text bold

18JCheckBox jchkBold = new JCheckBox("Bold");

20// Create a check box with text italic

21JCheckBox jchkItalic = new JCheckBox("Italic");

23// Create a radio button with text red

24JRadioButton jrbRed = new JRadioButton("Red");

26// Create a radio button with text yellow

27JRadioButton jrbYellow = new JRadioButton("Yellow");

29// Create a combo box with several choices

30JComboBox jcboColor = new JComboBox(new String[]{"Freshman",

31"Sophomore", "Junior", "Senior"});

33// Create a panel to group components

34JPanel panel = new JPanel();

35panel.add(jbtOK); // Add the OK button to the panel

36panel.add(jbtCancel); // Add the Cancel button to the panel

37panel.add(jlblName); // Add the label to the panel

38panel.add(jtfName); // Add the text field to the panel

39panel.add(jchkBold); // Add the check box to the panel

40panel.add(jchkItalic); // Add the check box to the panel

41panel.add(jrbRed); // Add the radio button to the panel

42panel.add(jrbYellow); // Add the radio button to the panel

43panel.add(jcboColor); // Add the combo box to the panel

45JFrame frame = new JFrame(); // Create a frame

46frame.add(panel); // Add the panel to the frame

47frame.setTitle("Show GUI Components");

48frame.setSize(450, 100);

49frame.setLocation(200, 100);

50frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

51frame.setVisible(true);

52}

53}

Video Note

Use classes

create a button

create a button

create a label

create a text field

create a check box

create a check box

create a radio button

create a radio button

create a combo box

create a panel add to panel

create a frame add panel to frame

display frame

This program creates GUI objects using the classes JButton, JLabel, JTextField,

JCheckBox, JRadioButton, and JComboBox (lines 6–31). Then, using the JPanel class (line 34), it then creates a panel object and adds to it the button, label, text field, check box,

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]