Top Banner
GUI and Swing, part 2 The illustrated edition
21

GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Dec 18, 2015

Download

Documents

Karen Richards
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

GUI and Swing, part 2

The illustrated edition

Page 2: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Scroll bars

• As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be inserted is not fixed

• As a result, some text may become invisible as the window is overfilled

• A JScrollPane object can be added to a JTextArea (or JFrame or JPanel) to enable the user to access all window contents via scroll bars

Page 3: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Scroll bars

• A JScrollPane is constructed using the text area (or other component) it applies to as its argument:JTextArea commentBox = new JTextArea(50,

20);JScrollPane viewBox = new

JScrollPane(commentBox);

• The JScrollPane object can then be added to a JFrame or JPanel using the add method

Page 4: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Drawing pictures with Java

• Java’s Graphics class contains methods for drawing lines and simple geometric figures (e.g. rectangles, ellipses)

• Figures can be hollow or filled with color

• Drawings are created within the context of an X-Y coordinate system illustrated on the next slide

Page 5: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Java screen coordinate system

Page 6: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Java coordinate system and graphics objects

• As the previous slide illustrates, the origin point (0,0) is in the upper lefthand corner of the screen (or Container, such as JFrame or JPanel)

• The X axis is horizontal and the Y axis is vertical; all values are positive

• A figure, such as a rectangle or ellipse, has a bounding rectangle that indicates the borders in which it is drawn in the space

• The upper left corner of this position and the size of the figure are specified in its constructor

Page 7: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Swing objects and the paint() method

• Most Swing components include a paint() method, which is used to draw the component on the screen

• This method is inherited from JComponent, an ancestor class for most of the Swing objects

• As an inherited method, we have been able to use it (invisibly, since none of our code has called it directly) without modifying, or overriding the original version

• In order to draw our own pictures, we will need to provide a new paint() definition, overriding the original

Page 8: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

The paint() method

• The paint method for an object is automatically invoked when the object is made visible; there is almost never an explicit call to the method

• The paint() method has a single parameter of type Graphics, typically named g

• We use g to invoke the methods that draw pictures

Page 9: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Example

public class BlueSquare extends JFrame {// instance variables describe position & size of square private int x = 20, y = 40, size = 100; // constructor not shown – just sets size & location of JFrame public void paint (Graphics g) { g.setColor(Color.BLUE); g.fillRect(x,y,size,size); } public static void main (String[] args) {

BlueSquare b = new BlueSquare();b.setVisible(true);

}}

Page 10: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Example

• The code from the previous slide (along with the constructor and main method) produces this result:

• The 100 x 100 pixel square is placed within a 140 x 160 window with its upper left corner at position (20, 40)

Page 11: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Graphics drawing methods

• Shape drawing methods include:– drawRect – rectangle outline– drawOval – ellipse outline– fillRect – filled rectangle– fillOval – filled ellipse

• Each takes four int arguments– 1st and 2nd: x,y coordinates of bounding

rectangle’s upper left corner– 3rd and 4th: width and length of figure

Page 12: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Graphics drawing methods

• drawRoundRect and fillRoundRect: rectangles with rounded corners– First 4 arguments to these are the same as for

the rectangle methods– 2 additional int arguments specify the width

and height of the corner arcs

Page 13: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Graphics drawing methods

• draw3DRect and fill3DRect: rectangles with slightly raised edges– First 4 arguments same as other rectangles– Last argument is boolean

• If true, the foreground color has the raised appearance with a small background color edge

• If false, the background color is the raised part, with a small foreground color edge

Page 14: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Graphics drawing methods

• drawLine: draws a line between two points specified by 4 int arguments:– 1st and 3rd arguments are the x coordinates– 2nd and 4th are the y coordinates

Page 15: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Graphics drawing methods

• drawArc and fillArc: draw partial ellipses within bounding rectangles; each takes 6 int arguments:– 1st and 2nd: xy position of upper left corner of bounding

rectangle– 3rd and 4th: width and height of bounding rectangle– 5th: start of drawing arc (number between 0 and 359)– 6th: sweep of drawing arc (number of degrees of arc

sweep)• A positive sweep value draws arc in clockwise direction• A negative sweep value draws arc in counterclockwise

direction

Page 16: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Specifying an Arc (Part 1 of 2)

Page 17: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Specifying an Arc (Part 2 of 2)

Page 18: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

The repaint() method

• The paint() method is called automatically when a window is made visible

• If changes need to be made to the window’s appearance, the window must be redrawn

• This operation is accomplished by the repaint() method

Page 19: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Icons

• An icon is a small picture, typically displayed as part of a GUI component such as a button, menu item, or label

• In Java, an icon is an instance of the ImageIcon class, and is constructed with a digital picture file, such as a .gif or .jpg

• Example:ImageIcon pic = new ImageIcon(“pic.gif”);

Page 20: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Adding icons to GUI components

• To add an icon to a JLabel, JButton or JMenuItem, you can use the setIcon method:JButton button = new JButton(“”);button.setIcon(pic);

• Alternatively, you can construct the component using an icon argument instead of String argument:JButton button = new JButton(pic);

• In both instances above, a String should be associated with the JButton by using the setActionCommand() method

Page 21: GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.

Placing icons in a window

• To use an existing drawing (as opposed to one you create yourself), you can use the paintIcon method of an ImageIcon object

• The method takes 4 arguments:– The component on which to paint the icon

(e.g. a JPanel or JFrame)– A Graphics object– The x and y coordinates of the upper left

corner of the bounding rectangle