Presentation is loading. Please wait.

Presentation is loading. Please wait.

TCU CoSc 10403 Introduction to Programming (with Java) Java Components.

Similar presentations


Presentation on theme: "TCU CoSc 10403 Introduction to Programming (with Java) Java Components."— Presentation transcript:

1 TCU CoSc 10403 Introduction to Programming (with Java) Java Components

2 Components GUI components (widgets) are defined in the Java API and are used to provide mechanisms that allow a user to interact with an applet. (GUIs) Widgets are the parts that are used to build graphical user interfaces (e.g. buttons, menus, text areas, etc). There are two libraries of enhanced graphics components that are available to Java programmers: –AWT - abstract window toolkit (may have a different appearance on different platforms) –Swing – a more modern widget toolkit developed to provide a more sophisticated set of GUI components. (should look the same across different platforms) AWT: SWING:

3 Visual Guide to Java Swing Components Borrowed from: http://java.sun.com/docs/books/tutorial/ui/features/components.html

4 Swing vs. AWT Swing is built “on top of” AWT, so you need to import AWT and use a few things from it Swing is bigger and slower Swing is more flexible and better looking Swing and AWT are incompatible--you can use either, but you can’t mix them –Actually, you can, but it’s tricky and not worth doing Basic controls are practically the same in both –AWT: Button b = new Button ("OK"); –Swing: JButton b = new JButton("OK"); Swing gives far more options for everything (buttons with pictures on them, etc.)

5 To build a GUI... Make somewhere to display things (a Container ) –Usually you would use a JFrame or a JApplet Create some Components (buttons, text areas, panels, etc.) –It’s usually best to declare Components as instance variables, and –Define them in your applet’s init() method or in some application method Add your Components to your display area –Choose a layout manager –Add your Components to your JFrame or JApplet according to the rules for your layout manager Attach Listeners to your Components –Interacting with a Component causes an Event to occur –A Listener gets a message when an interesting event occurs, and executes some code to deal with it

6 6 Container s and Component s A GUI is built by putting components into containers The job of a Container is to hold and display Component s Some frequently used types (subclasses) of Component are JButton, JCheckbox, JLabel, JTextField, and JTextArea A Container is also a Component –This allows Containers to be nested Important Container classes are JFrame, JApplet, and JPanel –JFrame and JApplet both contain other containers; (container hierarchy) –You typically create and use JPanels directly

7 To create an applet public class MyApplet extends JApplet { … } –The only way to make an applet is to extend Applet or JApplet You can add components to the applet The best place to add components is in init() You can paint directly on the applet, but… …it’s better to paint on a contained component Do all painting from paint(Graphics g)

8 Swing Components Adding components to an applet is like adding magnets to the fridge – easy to move around. Writing in the paint() method using drawString is like finger painting your fridge – permanently placed. Components (widgets) will appear behind strings or graphics objects that are drawn on the screen using paint. In order to have access to the Swing components – you’ll need to use the command: import javax.swing.*;

9 Example of relationship between paint() and init() methods import javax.swing.*; import java.awt.*; public class PaintAndInitMethodsDemo extends JApplet { Font f1; Color c1, c2; JButton b1; public void init() { setLayout(new FlowLayout()); f1 = new Font("Serif",Font.BOLD, 40); c1 = Color.RED; c2 = Color.BLUE; b1 = new JButton("COSC 10403"); add(b1); b1.setForeground(c2); } public void paint( Graphics g ) { g.setColor(c1); g.setFont(f1); g.drawString("Hello World - Let's see!",30,30); } Paint method draws on top of components managed by the layout manager for Japplet – opposite for Applets

10 Component Class Widgets are derived from the Component class (which is itself defined in the java.awt package) The most important class in the java.awt package. It is also the largest, having 129 methods (at present). It is the parent(super) class for all the Java widget classes and serves as the repository of all the methods that are common to the widgets (it is an abstract class and does not need to be instantiated). Hierarchy: Applet

11 A JApplet is a Panel is a Container java.lang.Object | java.awt.Component | java.awt.Container | java.awt.Panel | java.applet.Applet | javax.swing.JApplet …so you can display things in an Applet

12 Introduction to GUI Components Consider this simple program for creating JLabel s for displaying text on an applet: import javax.swing.*; import java.awt.*; public class LabelDemo extends JApplet { JLabel l1 = new Jlabel(); JLabel l2, l3; public void init() { setLayout(new FlowLayout()); //default layout is BorderLayout.CENTER l2 = new JLabel("Texas Christian University"); l3 = new JLabel("Fall, 2009"); add(l1); l1.setText(“CoSc 10403”); add(l2); add(l3); } Note that components appear on the applet, centered, top-down, left-to-right in the order that they were added to the applet – this is FlowLayout. The default layout for a JApplet is BorderLayout.CENTER Note that components appear on the applet, centered, top-down, left-to-right in the order that they were added to the applet – this is FlowLayout. The default layout for a JApplet is BorderLayout.CENTER

13 The JLabel Class Labels allow the user to create GUI components that can display un-selectable text or images. Constructors (6 ways to build a JLabel ): JLabel() - Creates a JLabel instance with no image and with an empty string for the title. JLabel(String text) - Creates a JLabel instance with the specified text. JLabel ( String text, int horizontalAlignment ) - Creates a JLabel instance with the specified text and horizontal alignment. JLabel ( Icon image ) - Creates a JLabel instance with the specified image. JLabel ( Icon image, int horizontalAlignment ) - Creates a JLabel instance with the specified image and horizontal alignment. JLabel ( String text, Icon icon, int horizontalAlignment ) - Creates a JLabel instance with the specified text, image, and horizontal alignment.

14 JLabels import java.awt.*; import javax.swing.*; public class LabelDemo extends JApplet { JLabel l1 = new JLabel("COSC 10403"); JLabel l2 = new JLabel("Texas Christian University", JLabel.RIGHT); JLabel l3; public void init() { setLayout(new FlowLayout()); add(l1); add(l2); l3 = new JLabel("Fall, 2009", JLabel.LEFT); add(l3); }

15 JLabels (continued) By specifying HTML code in a JLabel 's text, you can give the label various characteristics such as multiple lines, multiple fonts or multiple colors. If the label uses just a single color or font, you can avoid the overhead of HTML processing by using the setForeground or setFont method instead. import javax.swing.*; import java.awt.*; public class LabelStyles extends JApplet { JLabel l1; JLabel l2; JLabel l3; Font f1; public void init() { setLayout(new FlowLayout()); //default is BorderLayout.CENTER l1 = new JLabel("CoSc 10403 - Introduction to Computer Science"); l1.setForeground(Color.RED); l2 = new JLabel("Texas Christian University"); f1 = new Font("Serif",Font.BOLD+Font.ITALIC,15); l2.setFont(f1); l3 = new JLabel(" Fall, " + " semester " + " 2009 "); add(l1); add(l2); add(l3); }

16 import javax.swing.*; import java.awt.*; public class JLabelImageDemo extends JApplet { Image img1, img2, img3, img4, img5; ImageIcon ic1, ic2, ic3, ic4, ic5; JLabel l1, l2, l3, l4, l5; public void init ( ) { setLayout( new FlowLayout( ) ); img1 = getImage( getCodeBase( ), "Pics/Elf.gif" ); img2 = getImage( getCodeBase( ), "Pics/ElfBox.gif" ); img3 = getImage( getCodeBase( ), "Pics/Santa.gif" ); img4 = getImage( getCodeBase( ), "Pics/Computer.gif" ); img5 = getImage( getCodeBase( ), "Pics/Seesaw.gif"); // can't just add images like this: add( image ); ic1 = new ImageIcon( img1 ); ic2 = new ImageIcon( img2 ); ic3 = new ImageIcon( img3 ); ic4 = new ImageIcon( img4 ); ic5 = new ImageIcon( img5 ); // can't just add ImageIcons like this: add( imageIcon ); l1 = new JLabel( ic1 );// have to add to a JLabel // now can add the Jlabel to the applet l2 = new JLabel("Elf with Box:",ic2,JLabel.CENTER); l2.setHorizontalTextPosition(JLabel.LEFT); l3 = new JLabel("Santa:",ic3,JLabel.RIGHT); l4 = new JLabel("Computer:",ic4,JLabel.CENTER); l4.setHorizontalTextPosition(JLabel.CENTER); l4.setVerticalTextPosition(JLabel.BOTTOM); l5 = new JLabel("Seesaw",ic5,JLabel.LEFT); l5.setHorizontalTextPosition(JLabel.CENTER); add(l1); add(l2); add(l3); add(l4); add(l5); } Text position can be managed with: setHorizontalTextPosition(pos) setVerticalTextPosition(pos) Where pos can be one of: Horizontal Vertical JLabel.LEFTJLabel.TOPJLabel.CENTER JLabel.RIGHTJLabel.BOTTOM

17 The JButton Class A single button set up to initiate some action when pushed by the user. Note: A Swing button can display both text and an image. Four Constructors that we will use: JButton() - creates a button with no set text or icon JButton(String text) - creates a button with text JButton(Icon icon) - creates a button with an icon JButton(String text, Icon icon) - creates a button with initial text and an icon.

18 18 JButtons Swing permits: Text JButton mybutton; mybutton = new JButton( “Hello World” ); Image JButton mybutton; mybutton = new JButton( ImageIconVariable ); Text and image JButton mybutton; mybutton = new JButton(“three”, ImageIconVariable ); Text overlayed on top of image JButton mybutton; mybutton = new JButton( “text w/ image”, ImageIconVariable ); mybutton.setHorizontalTextPosition(JButton.CENTER); Poland

19 JButton Demo import java.awt.*; import javax.swing.*; public class JButtonDemo extends JApplet { JButton b1, b2, b3, b4, b5, b6; Image img1, img2; ImageIcon icon; public void init() { setLayout(new FlowLayout()); b1 = new JButton("Press"); img1 = getImage(getCodeBase(),"Pics/Earth.jpg"); icon = new ImageIcon( img1 ); b2 = new JButton( icon ); img2 = getImage( getCodeBase(), "Pics/Mars.jpg”); b3 = new JButton( "Mars", new ImageIcon( img2 ) ); b4 = new JButton("Earth",icon); b4.setHorizontalTextPosition(JButton.CENTER); b4.setVerticalTextPosition(JButton.BOTTOM); b5 = new JButton("Earth",icon); b5.setBorderPainted(false); b6 = new JButton("Earth", icon); b6.setEnabled(false); add( b1 ); add( b2 ); add( b3 ); add( b4 ); add( b5 ); add( b6) ; }

20 20 JButton Example: font, color, center import javax.swing.*; import java.awt.*; public class JButtonImg2 extends JApplet { JButton one, two,three; Image img; ImageIcon icon; public void init( ) { setLayout( new FlowLayout( ) ); one = new JButton( "one" ); one.setForeground( Color.red ); // change color to red img = getImage( getCodeBase( ), "buttonPoland.png" ); icon = new ImageIcon( img ); two = new JButton( icon ); img = getImage( getCodeBase( ), "buttonYellowstone.png" ); three = new JButton( "Yellowstone", new ImageIcon( img )); three.setFont( new Font( "Serif", Font.BOLD, 26 )); // change font three.setHorizontalTextPosition( JButton.CENTER ); // center add( one ); add( two ); add( three ); }

21 Textual Widgets Swing provides six text components that deal with the display of text (only three are discussed in our text): JTextField, JPasswordField, and JTextArea. A JTextField looks like a box into which the user can enter a single line of text. It might be used to collect personal information about a user.(it can be changed by the user by clicking and dragging or by the program using the proper methods). A JTextArea provides space for more than a single line of input or output. It might be used to allow a user to add personal comments. A JPasswordField provides specialized text fields for password entry (for security reasons, a password field does not show the characters that the user types)

22 The JTextField Class A GUI component that displays a single line of text. Under program control it is possible to specify whether or not the user is allowed to edit the contents of the field. Because they may be edited, a JTextField can be used to obtain input from the user. Four Constructors that we will use for building JTextField s: JTextField() – constructs a new JTextField. JTextField(int columns) – constructs a new empty JTextField with the specified number of columns. JTextField(String text) – constructs a new JTextField initialized with the specified text. JTextField(String text, int columns) – constructs a new JTextField initialized with the specified text and columns.

23 JTextField Demo Program import java.awt.*; import javax.swing.*; public class JTextFieldDemo1 extends JApplet { JTextField tf1, tf2, tf3, tf4, tf5; JPasswordField jpwf1; Font f1 = new Font("Serif",Font.ITALIC,15); JLabel l1; public void init() { setLayout(new FlowLayout()); tf1 = new JTextField(); //default size tf2 = new JTextField(10); tf2.setHorizontalAlignment(JTextField.RIGHT); tf2.setFont(f1); tf2.setForeground(Color.RED); tf3 = new JTextField("CoSc 10403"); tf4 = new JTextField("Enter name",25); l1 = new JLabel("Enter Password:"); jpwf1 = new JPasswordField(12); add(tf1); add(tf2); add(tf3); add(tf4); add(l1); add(jpwf1); } Right alignment, red, Serif font Note: the length parameter for the JTextField limits only the number of characters that are visible at any point in time – not the number of characters that can be entered into the field (characters will scroll). JPasswordField: characters are concealed.

24 The JTextArea Class A JTextArea is similar to a JTextField except that it lets you view and edit multiple lines of text. Its size can be specified when the object is instantiated. Text can be appended, inserted, or replaced at any location (using “click and drag”). Scrollbars may be attached (using a JScrollPane ) along the bottom and right side of the text area, no matter how much text is actually contained in it. The scrollbars can be used to bring desired portions of the text into the visible area. A JTextArea is defined by the JTextArea class, a subclass of the JTextComponent class, which contains several methods of its own. JTextArea has a bound property for line wrapping that controls whether or not it will wrap lines. By default, the line wrapping property is set to false (not wrapped).

25 JTextArea Constructors There are four constructors that we will use in the class: JTextArea() - Constructs a new JTextArea JTextArea(int rows, int columns) Constructs a new empty JTextArea with the specified number of rows and columns. JTextArea(String text) Constructs a new JTextArea with the specified text displayed. JTextArea(String text, int rows, int columns) Constructs a new JTextArea with the specified text and number of rows and columns.

26 JTextArea Demo import javax.swing.*; import java.awt.*; public class JTextAreaDemo extends JApplet { JTextArea ta1, ta2, ta3, ta4, ta5, ta6, ta7; JScrollPane jsp; public void init() { ta1 = new JTextArea ( ); //creates a JTextArea with 0 columns, 0 rows – nothing visible ta2 = new JTextArea ( 3, 10 ); //line wrapping is not enabled – really more than 10 chars wide, //grows as characters are inserted. ta3 = new JTextArea ( 3, 10 ); ta3.setLineWrap(true); //line wrapping is enabled within the column width specified - // width doesn’t change ta4 = new JTextArea ( 3, 10 ); ta4.setLineWrap(true); ta4.setWrapStyleWord(true); //enable both line wrapping and word boundary wrapping – width //doesn’t change ta5 = new JTextArea("CoSc 10403"); ta6 = new JTextArea ( "TCU rocks", 4, 10 ); ta7 = new JTextArea( 5, 10); ta7.setLineWrap(true); ta7.setWrapStyleWord(true); jsp = new JScrollPane(ta7); setLayout(new FlowLayout()); add(ta1); add(ta2); add(ta3); add(ta4); add(ta5); add(ta6); add(jsp); }

27 Active Widgets The Swing package supports a variety of window components that the user can interact with to initiate an action. Javax.swing supports four distinct types of “components”, each serving a different purpose and each is used in specific situations 1.JCheckBox Class A component that can be selected or deselected and which displays its state to the user. Often a group of checkbox buttons are used to define a set of options. Multiple options can be chosen at the same time. 2.JRadioButton Class A single component that displays a list of choices when pushed. The current choice is shown next to the button at all times but only a single button can be chosen at one time. 3.JComboBox Class A single component that displays a list of choices when pushed. The current choice is shown next to the button at all times. 4. JList Class A component that allows the user to select one or more objects from a list.

28 The JCheckBox Class Seven Constructors that we will use: JCheckBox() Creates an initially unselected check box button with no text and no icon. JCheckBox(String s) Creates a Checkbox with the given label and unchecked (false) state. JCheckBox(String s, boolean b) Creates a check box with text and specifies whether or not it is initially selected. JCheckBox(Icon icon) Creates an initially unselected check box with an icon. JCheckBox(Icon icon, boolean selected) Creates a check box with an icon and specifies whether or not it is initially selected. JCheckBox(String s, Icon icon) Creates an initially unselected check box with the specified text and icon. JCheckBox(String s, Icon icon, boolean selected) Creates an initially unselected check box with the specified text and icon.

29 JCheckBox Demo import java.awt.*; import javax.swing.*; public class JCheckBoxDemo extends JApplet { JCheckBox cb1, cb2, cb3, cb4, cb5; Image img1; ImageIcon imgIcon1; //Images for the selected state and unselected state Image notSelRedImg, selPaleRedImg; //ImageIcons for the selected state and unselected state ImageIcon notSelRedImgIcon, selPaleRedImgIcon; public void init() { setLayout(new FlowLayout()); cb1 = new JCheckBox( ); cb2 = new JCheckBox( "CoSc 10403" ); img1 = getImage(getCodeBase(), "Pics/Earth.jpg"); imgIcon1 = new ImageIcon(img1); cb3 = new JCheckBox( imgIcon1 ); cb4 = new JCheckBox( "TCU", false);//true causes it to be selectedd notSelRedImg = getImage(getCodeBase(), "Pics/Red.png"); notSelRedImgIcon = new ImageIcon(notSelRedImg); selPaleRedImg = getImage(getCodeBase(), "Pics/PaleRed.png"); selPaleRedImgIcon = new ImageIcon(selPaleRedImg); cb5 = new JCheckBox( "Red", notSelRedImgIcon ); cb5.setSelectedIcon(selPaleRedImgIcon); add(cb1); add(cb2); add(cb3); add(cb4); add(cb5); } No way to know when this selection is made. When selected – a second image is displayed (due to setSelectedIcon() ).

30 JRadioButton Class An implementation of a radio button -- an item that can be selected or deselected, and which displays its state to the user. Seven Constructors that we will use: JRadioButton() Creates an initially unselected radio button with no set text. JRadioButton(String, text) Creates an unselected radio button with the specified text. JRadioButton(String text, boolean selected) Creates a radio button with the specified text and selection state. JRadioButton( Icon icon) Creates an initially unselected radio button with the specified image but no text. JRadioButton(Icon icon, boolean selected) Creates a radio button with the specified image and selection state, but no text. JRadioButton(String text, Icon icon) Creates a radio button that has the specified text and image, and that is initially unselected. JRadioButton(String text Icon icon, boolean selected) Creates a radio button that has the specified text, image, and selection state.

31 JRadioButton Demo import java.awt.*; import javax.swing.*; public class JRadioButtonDemo extends JApplet { JRadioButton blankRadioButton, onCampus, offCampus, male, female; ButtonGroup housingGroup, genderGroup; public void init( ) { blankRadioButton = new JRadioButton(); onCampus = new JRadioButton( "Lives on Campus" ); offCampus = new JRadioButton( "Lives off Campus" ); male = new JRadioButton( "Male", true); female = new JRadioButton( "Female" ); housingGroup = new ButtonGroup( ); genderGroup = new ButtonGroup(); housingGroup.add( onCampus ); housingGroup.add( offCampus ); genderGroup.add( male ); genderGroup.add( female ); setLayout( new FlowLayout( ) ); add( blankRadioButton); add( onCampus ); add( offCampus ); add( male ); add(female); }

32 JRadioButton Demo import java.awt.*; import javax.swing.*; public class JRadioButtonDemo1 extends JApplet { JRadioButton male, female; ButtonGroup genderGroup; //Images for the selected state and unselected state Image notSelMaleImg, selMaleImg, notSelFemaleImg, selFemaleImg; //ImageIcons for the selected state and unselected state ImageIcon notSelMaleImgIcon, selMaleImgIcon, notSelFemaleImgIcon, selFemaleImgIcon; public void init( ) { notSelMaleImg = getImage(getCodeBase(), "Pics/Male.png"); selMaleImg = getImage(getCodeBase(), "Pics/SelectedMale.png"); notSelFemaleImg = getImage(getCodeBase(), "Pics/Female.png"); selFemaleImg = getImage(getCodeBase(), "Pics/SelectedFemale.png"); notSelMaleImgIcon = new ImageIcon(notSelMaleImg); selMaleImgIcon = new ImageIcon(selMaleImg); notSelFemaleImgIcon = new ImageIcon( notSelFemaleImg); selFemaleImgIcon = new ImageIcon(selFemaleImg); male = new JRadioButton( "Male", notSelMaleImgIcon, true); female = new JRadioButton( "Female", notSelFemaleImgIcon ); genderGroup = new ButtonGroup(); genderGroup.add( male ); genderGroup.add( female ); setLayout( new FlowLayout( ) ); add( male ); male.setSelectedIcon(selMaleImgIcon); add(female); female.setSelectedIcon(selFemaleImgIcon); } Automatically selected.

33 JComboBox Class A component that combines a button or editable field and a drop-down list. Scrollbars are automatically added to the drop-down list if about seven or more items are in the list (this number may be modified by using the setMaximumRowCount(int count) method). One Constructor that we will use: JComboBox() Creates a JComboBox with a default data model.

34 JComboBox Demo import javax.swing.*; import java.awt.*; public class JComboBoxDemo extends JApplet { JComboBox majors; public void init( ) { majors = new JComboBox( ); majors.addItem( "Select One Of" ); majors.addItem( "Computer Science" ); majors.addItem( "Mathematics" ); majors.addItem( "Physics" ); majors.addItem( "Engineering" ); majors.addItem( "Geology" ); setLayout( new FlowLayout( ) ); add( majors ); }

35 The List Class (from AWT): A component that allows the user to select one or more objects from a list - somewhat like a permanently expanded JComboBox. The JList class is intuitively more difficult to understand than the analogous List class in AWT. Appears as a component with a collection of items, one per line. Example: Note: (1)When the mouse is clicked on one of the lines, it becomes highlighted and serves as the current selection. (2)A List object may behave in one of two ways. clicking on an item may turn off any currently highlighted rows (the single selection mode). clicking on an item may highlight it without influencing any of the other already highlighted rows (the multiple- selection mode). A shift-click operation.

36 The List Class Three Constructors: List() Creates a default-sized List object in single- selection mode. List(int rows) Creates a List object in single-selection mode with the specified number of rows. List(int r, boolean b) Creates a List object with the specified number of rows, and if the argument is false, the created List is in single-selection mode. Must use methods: void add(String item) Adds a new item (to the bottom of the list) with the given label to this List object. void add(String s, int i) Adds a new item (in the position indicated by index ) with the given label to this List object. Items are shifted down to make room for the new entry. import java.awt.*; import java.applet.*; public class ListDemoProgram extends Applet { List l1 = new List(); List l2 = new List(6); List l3 = new List(5, true); public void init() { add(l1); add(l2); add(l3); l3.add("ROTC"); l3.add("Honor's Program"); l3.add("Band"); l3.add("Student Government"); l3.add("Athletics"); }

37 37 JList Used to display a list of items –Text –Images –Buttons

38 38 JList First element is at index 0 (zero) Create a model to work on the list: –DefaultListModel model; model = new DefaultListModel( ); Create the list with this model –JList list; list = new JList( model ); To add items, use the addElement method on the model variable to add items at the end of the list or the add method on the model variable and specify the index in the list of where to add it. –model.addElement( “grapes” ); –model.add( 0, “bananas” );

39 39 JList To specify how many rows should be visible (the rest are scrollable) use: –list.setVisibleRowCount( number ); To remove items, use the remove method on the model –model.remove( 1 ); // remove item at index 1 –model.remove( “bananas” ); To get scrollbars, put in a JScrollPane JScrollPane spane; spane = new JScrollPane( list ); add( spane );

40 40 JList – Example - add

41 41 JList – Example - addElement

42 42 JList – Example - JScrollPane import javax.swing.*; import java.awt.*; public class JListEx extends JApplet { DefaultListModel model; JList majors; public void init( ) { setLayout( new FlowLayout( ) ); model = new DefaultListModel( ); majors = = new JList( model ); model.addElement( "CS" ); model.addElement( "Math" ); model.addElement( "History" ); model.addElement( "Leisure Studies" ); model.addElement( "Psych" ); majors.setVisibleRowCount( 3 ); JScrollPane spane = new JScrollPane( majors ); add( spane ); }

43 43 JList – Example - Images import javax.swing.*; import java.awt.*; public class JListExImage extends JApplet { DefaultListModel model; JList countries; public void init( ) { model = new DefaultListModel( ); countries = = new JList( model ); Image img = getImage( getCodeBase( ), “Poland.png" ); ImageIcon ic = new ImageIcon( img ); model.add( 0, ic ); model.add( 1, “Europe" ); img = getImage( getCodeBase( ), “Laos.png" ); ic = new ImageIcon( img ); model.add( 2, ic ); model.addElement( “Asia" ); img = getImage( getCodeBase( ), “Cambodia.png" ); ic = new ImageIcon( img ); model.addElement( ic ); setLayout( new FlowLayout( ) ); countries.setVisibleRowCount( 3 ); JScrollPane spane = new JScrollPane( countries); add( spane ); }

44 44 JList - constructors Constructors –JList list; list = new JList ( ); Creates a new empty list –DefaultListModel model; JList list; model = new DefaultListModel( ); list = new JList( model ); Creates a list based on a default model, such that you can add items to the model –JList list; list = new JList( array ); Creates a list based on the array We haven’t done arrays yet…. stay tuned

45 JList Example import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JListDemo extends JApplet { String[] classification = {"Fresh", "Soph", "Junior", "Senior"}; JList list0 = new JList(classification); JScrollPane pane0 = new JScrollPane(list0); // since build on the classification data model – which is a fixed // size - no more items may be added. public void init() { setLayout(new FlowLayout()); add(pane0); list0.setVisibleRowCount(3); }

46 JList Example import java.awt.*; import javax.swing.*; public class JListDemo1 extends JApplet { DefaultListModel model = new DefaultListModel(); JList list1 = new JList(model); JScrollPane pane1 = new JScrollPane(list1); public void init() { setLayout(new FlowLayout()); add(pane1); // add selections to the data model model.addElement("JList"); model.addElement("Computer Science"); model.addElement("Math"); model.addElement("Engr"); model.addElement("Phys"); list1.setVisibleRowCount(3); //.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //the default //ist1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); //shift key??? list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); //command key?? }

47 47 JList - methods Useful Methods –int getSelectedIndex( ) Returns the index of the item that is selected –Object getSelectedValue( ) Returns the object that is selected –void setSelectionMode( int mode ) Where mode can be: – ListSelectionModel.SINGLE_SELECTION – ListSelectionModel.MULTIPLE_INTERVAL_SELECTION (default) allows users to select more than one in the list –… more in API in book and on the website

48 Some Useful Methods in the JLabel Class void setText (String text); Sets the text of the specified Label to that given in the argument. Example: blanklabel.setText(“Now something”); String getText(); Returns a String object whose value is the same as that of this JLabel ’s text. Example: String str = blanklabel.getText(); Alignment methods int getHorizontalAlignment(); int getVerticalAlignment(); void setHorizontalAlighment(int alignment); void setVerticalAlignment(int alignment); Icon getIcon (String text); Returns the graphic image that the label displays. void setIcon (Icon icon); Defines the icon this component will display.

49 Useful Methods in the JButton class void setText (String s); Sets the J Button ’s label to be the specified string. oExample cancelB.setText(“Cancel”); String getText(); Gets the label of the specified Jbutton. oExample: String s = b1.getText(); void setActionCommand (String s); Sets command name for action event fired by this Jbutton. oExample: JButton b1 = new JButton(“Cancel”); b1.setActionCommand(“B1”); String getActionCommand(); Returns the command name of the action event fired by this JButton. oExample: String str; str = b1.getActionCommand();

50 Commonly used TextField & TextArea Methods TextFields void setColumns(int columns) sets the width of this JTextField to be enough to hold columns characters (must be >= zero) int getColumns() returns the current width, in columns, of this JTextField. String getSelectedText() returns the selected text in this JTextField. String getText() returns the contents of the JTextField. void setText(String string) set the contents of the JTextField to the specified argument. TextAreas int getColumns() returns the current width, in columns, of this JTextArea. int getRows() returns the current height, in rowes, of this JTextArea. void append(String str) changes the text of this object by appending the characters in the argument to the end of the current text (The JTextArea version of string concatenation). void setColumns(int columns) changes the number of columns in this JTextArea. (No companion methods for rows). void insert(String str, int position) inserts the argument string into the current text, at the location given by the position argument. Example, “mud” becomes “mustard” after insert(“star”,2). (Begin counting at 0). void replaceRange(String str, int start, int end) replaces the current text between start (included in the replacement) and end (not included in the replacement) with the argument string. Example, “abcdefghi” becomes “ab*ghi” after replaceText(“*”,2,6). (Begin counting at zero, string may be empty).

51 Commonly used TextComponent Methods TextComponent String getSelectedText() returns the text that has been selected in this text component. String getText() returns the text that is in this text component. void setText(String s) Sets the text in this text component to the string provided. void setEditable(boolean b) Sets the flag that determines whether this text component can be changed.

52 Some JComboBox Methods void add(String item) **already seen!!! Adds a new item with the given label to the list of this JComboBox object. int getItemCount() Returns the number of items currently in this JComboBox object. String getItemAt(int index) Returns the text of the item that is currently in the index position. int getSelectedIndex() Returns the index of the currently selected item. String getSelectedItem() Returns the text of the currently selected item. void insertAt(String item, int index) **already seen!!! Inserts a new item string in the list in the given index position. void remove(int index) Removes the item at the given index position. void removeAll() Removes all items from this JComboBox object. void selectIndex(int index) Select the item in the given index position (numbered 0 to itemCount-1). void selectItem(String item) Selects the item in the list that matches the given string.

53 Some Useful JCheckBox & JRadioButton Methods JCheckBox void setText(String label) Sets the label of this JCheckBox. String getText(String label) Returns a string containing the label text of this JCheckBox. boolean getState() Returns the current state ( true or false ) of this JCheckBox. void setSelected(boolean state) Sets the current state of this JCheckBox. void setSelectedIcon(Image image) Sets the selected icon for the JCheckBox JRadioButton Icon getSelectedIcon() Returns the selected icon. void setSelected(boolean b) Sets the JRadioButton state to the specified argument.

54 Some Useful List Methods void delItems(int start, int end) // Removes a inclusive range of items from the List. void deselect(int index) // Turns off the selection of the item in position index. String getItem(int index ) // Returns the text of the item in position index in the List. int getItemCount() // Returns the number of items in the List. int getRows() // Returns the number of rows in this List item. int getSelectedIndex() // Returns the index of the current selection (-1 if none). boolean isMultipleMode() –Returns true if this List is in multiple-selection mode (else false ). void remove(int index) –Remove the item at the given index from the List. void remove(String item) –Removes the item with the given string from the List. void removeAll() –Removes all items from the List. void replaceItem(String newItem, int index) –Replaces the item in position index with the text given by the argument. void select(int index) –Selects the item in position index. void setMultipleMode(boolean m) –Turns the multiple-selection mode on if the argument is true. Sets the mode to single-selection if the argument is false.

55 Some Other Useful Methods void setVisible(boolean b) // makes the current component visible or not. void setEnabled(boolean b) // makes the current component visible or not. void setEditable(boolean b ) // makes the current component editable or not. void setForeground(Color c) // sets the Foreground color of the object to the specified value. void setBackground(Color c) // sets the Background color of the object to the specified value. void requestFocus( ) // requests that this component gets the input focus void validate() // ensures that the component has a valid layout.

56 How do the paint() and init() methods relate? i mport java.awt.*; import javax.swing.*; public class PaintMethodDemo extends JApplet { int i = 0; List l = new List(5); JComboBox c = new JComboBox(); public void init() { setLayout(new FlowLayout()); add(c); add(l); } public void paint(Graphics g) { i = i + 1; //insert another TCU each time window is redrawn c.addItem("TCU - " + i); //insert another "CoSc 10403" each time window is redrawn l.add("CoSc 10403 - " + i); } Note: new values are added to each Component every time the applet window size changes.


Download ppt "TCU CoSc 10403 Introduction to Programming (with Java) Java Components."

Similar presentations


Ads by Google