Presentation is loading. Please wait.

Presentation is loading. Please wait.

GUI Components.

Similar presentations


Presentation on theme: "GUI Components."— Presentation transcript:

1 GUI Components

2 Structure

3 Container Class Structure

4 Component Class Methods
setBackground(c) setForeground(c) setFont(f) setVisible(b) paint(g) repaint() setSize(x,y) getSize().width getWidth() getSize().height getHeight()

5 Container Class Methods
add(x) remove(x) removeAll() setLayout(l) getLayout() pack() -- window only paint(g) setVisible(b) getComponents()

6 Layout Managers FlowLayout: Places components from left to right, top to bottom allowing you no control over position. Constructors: FlowLayout(): the components are centered FlowLayout(a): a is FlowLayout.LEFT or FlowLayout.RIGHT FlowLayout(a, dx, dy) dx & dy are distances between components.

7 BorderLayout Designates five positions in the screen: North, South, East, West, and Center. BorderLayout(dx, dy) dx & dy are distances between components add(“place”, c) : arranges the component c “place” can be North, South, East, West, or Center

8 Border Layout Example /* File: BorderLayoutDemo.java */
import java.awt.*; import java.applet.Applet; public class BorderLayoutDemo extends Applet { public void init() { setLayout(new BorderLayout()); add(new Button("North") ,BorderLayout.NORTH); add(new Banner("The Center") ,BorderLayout.CENTER); add(new Button("East") ,BorderLayout.EAST); add(new Button("West") ,BorderLayout.WEST); add(new Button("South") ,BorderLayout.SOUTH); } } // BorderLayoutDemo class

9 GridLayout Lets you specify a two-dimensional grid of rows and columns. All components are the same size, and the size will automatically change as the window is manipulated. GridLayout(r,c) : sets number of rows and columns (Use zero when you need an arbitrary number) GridLayout(r,c,dx,dy) dx & dy are spacing distances

10 GridLayout Example /* File: GridLayoutDemo.java */ import java.awt.*; import java.applet.Applet; public class GridLayoutDemo extends Applet{ public void init() { int rows = 3; int columns = 3; Panel gridP = new Panel(); gridP.setLayout(new GridLayout(rows,columns,5,10)); for(int r = 1; r <= rows; r++) for (int c = 1; c <= columns; c++) if (r == 2 && c == 2) gridP.add(new Banner("TheCenter")); else gridP.add(new Button(r + " , " + c)); add(gridP); } }// class GridLayoutDemo

11 CardLayout Lets you create a “stack of cards” where only one of the cards is visible at any given time.

12 CardLayout Demo /* File: CardDemo.java*/
import java.awt.*; import java.applet.Applet; import java.awt.event.*; public class CardDemo extends Applet implements ActionListener { Button first,prev,next,last; Panel displays; CardLayout cLayout; public void init() { // The applet has a border layout setLayout(new BorderLayout()); // Create the buttons for controlling the card panel. // The button panel defaults to a FlowManager Panel buttonP = new Panel(); first = new Button("First"); buttonP.add(first); prev = new Button("Previous"); buttonP.add(prev); next = new Button("Next"); buttonP.add(next); last = new Button("Last"); buttonP.add(last); add(buttonP,BorderLayout.SOUTH); first.addActionListener(this); prev.addActionListener(this); next.addActionListener(this); last.addActionListener(this);

13 CardLayout Demo // Create the card panel, and card layout
displays = new Panel(); for(int i = 1; i <= 5; i++) displays.add( new Banner("Picture " + i)); cLayout = new CardLayout(); displays.setLayout(cLayout); add(displays, BorderLayout.CENTER); } public void actionPerformed(ActionEvent e) { Button b = (Button)e.getSource(); if (b == next) cLayout.next(displays); else if (b == prev) cLayout.previous(displays); else if (b == last) cLayout.last(displays); else if (b == first) cLayout.first(displays); } // class CardDemo

14 CardLayout Demo

15 GridBagLayout The most complicated an powerful LayoutManager.
Separates the window into a number of boxes. You may set the size of rows and columns of boxes Components may span multiple boxes (display area) You specify the box(es) that hold a component Number of total boxes is based on component placement Declaration: GridBagLayout m = new GridBagLayout(); setLayout(m);

16 GridBagConstraints()
Each component in a GridBagLayout must use an instance of the GridBagConstraints class to set its properties. For example: GridBagConstraints con = new GridBagConstraints(); con.X; con.Y; ... (uses methods X & Yof con to set some properties) m.setConstraints(comp, con); connects the constrains in GridBagConstraints con to the component comp in GridBagLayout m. The component can then be added to m with add(comp);

17 GridBagConstraints methods:
gridx, gridy: set column and row where component will begin. Starts with 0. Default value is Relative (to the right for gridx, down for gridy gridwidth, gridheight: sets the number of boxes the component will occupy. Default is 1. Value REMAINDER means the rest of the row or col. fill, anchor: deal with how the component will fill its area and/or what position in the box it will take (anchor). Default values: NONE, CENTER insets, ipadx, ipady: allow you to set space around components. weightx, weighty: set up how any extra space is allotted to components in each column (x) or row (y). Components with higher weight get more space. Default values: 0.

18 GridBagLayout Example:
// File: GridBagLayoutDemo.java import java.awt.*; import java.applet.*; public class GridBagLayoutDemo extends Applet { public void init() { GridBagLayout manager = new GridBagLayout(); setLayout(manager); GridBagConstraints constraints; // arrange the checkboxes Checkbox chkBig = new Checkbox("Big"); Checkbox chkActive = new Checkbox("Active"); constraints = new GridBagConstraints(); constraints.weighty = 1; constraints.anchor = GridBagConstraints.SOUTHWEST; constraints.gridy = 0; constraints.gridx = 0; // row 0, col manager.setConstraints(chkBig, constraints); add(chkBig); constraints.anchor = GridBagConstraints.NORTHWEST; constraints.gridy = 1; constraints.gridx = 0; // row 1, col manager.setConstraints(chkActive, constraints); add(chkActive);

19 GridBagLayout Example:
// arrange the canvas Canvas cvs = new Canvas(); cvs.setBackground(Color.darkGray); constraints = new GridBagConstraints(); constraints.gridy = 0; constraints.gridx = 1; // row 0, col constraints.gridwidth = 2; constraints.gridheight = 2; constraints.fill = GridBagConstraints.BOTH; manager.setConstraints(cvs, constraints); add(cvs); // arrange the label Label lblFile = new Label("File: ", Label.RIGHT); constraints = new GridBagConstraints(); constraints.gridy = 2; constraints.gridx = 0; // row 2, col constraints.insets = new Insets(10, 0, 10, 0); // 10 pixels above and below manager.setConstraints(lblFile, constraints); add(lblFile); // arrange the TextField TextField txtFile = new TextField(); constraints.gridwidth = 2; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridy = 2; constraints.gridx = 1; // row 2, col 1 manager.setConstraints(txtFile, constraints); add(txtFile);

20 GridBagLayout Example:
// arrange the buttons Button btnOK = new Button("OK"); Button btnCancel = new Button("Cancel"); Button btnTest = new Button("Test"); constraints = new GridBagConstraints(); constraints.gridy = 3; constraints.gridx = 0; // row 3, col constraints.ipadx = 5; constraints.anchor = GridBagConstraints.EAST; manager.setConstraints(btnOK, constraints); add(btnOK); constraints.weightx = 1; constraints.gridy = 3; constraints.gridx = 1; // row 3, col constraints.anchor = GridBagConstraints.CENTER; manager.setConstraints(btnCancel, constraints); add(btnCancel); constraints.gridy = 3; constraints.gridx = 2; // row 3, col constraints.anchor = GridBagConstraints.WEST; manager.setConstraints(btnTest, constraints); add(btnTest); } }

21 GridBagLayout Example:
<html> <head> <title>GridBagLayout demonstration</title> </head> <body> <applet code=GridBagLayoutDemo.class width= height=200> </applet> </body> </html>

22 Output Components Label -- basic text output using fonts.
Canvas -- area for drawing or writing text.

23 The Label Component Methods:
Constructors: Label(“text”); Label(“text”,adj); text is the label’s text, adj is the label’s alignment setText(“text”); getText(); setAlignment(adj); getAlignment(); Values for adj: Label.LEFT (the default), Label.CENTER, Label.RIGHT

24 Label Example: import java.awt.*; class ShowLabel extends Frame {
public static void main(String[] arg) { ShowLabel w = new ShowLabel (); Label l = new Label("Welcome to Java", Label.CENTER); l.setFont( new Font("SansSerif", Font.BOLD, 24) ); l.setBackground(Color.yellow); l.setForeground(Color.blue); // set the window's properties w.setLayout( new GridLayout(1,1) ); w.add(l); w.setSize(400, 150); w.setVisible(true); } }

25 Canvas Used only for showing drawings & text
Not a container, like Panel. import java.awt.*; public class CircleCanvas extends Canvas { public boolean filled = true; public boolean inTheCenter = true; public boolean blackBackground = false; public void paint(Graphics g) { int diam = Math.min(getSize().width, getSize().height); int x0 = 0; if (inTheCenter) x0 = (getSize().width - diam) / 2; if (blackBackground) setBackground(Color.black); else setBackground(Color.white); if (filled) g.fillOval(x0, 0, diam, diam); else g.drawOval(x0, 0, diam, diam); } }

26 Canvas Continued import java.awt.*; import java.applet.*;
public class CircleDemo extends Applet { CircleCanvas circle = new CircleCanvas(); Label label = new Label("A circle", Label.CENTER); public void init() { circle.setForeground(Color.blue); label.setFont( new Font("Serif", Font.BOLD, 18) ); setLayout( new GridLayout(2, 1) ); add(circle); add(label); setVisible(true); } } <html> <head> <title>A canvas demonstration applet</title> </head> <body> A canvas demonstration applet <br> <applet code=CircleDemo.class width= height=150> </applet> </body> </html>

27 Clickable Input Components
Button CheckBox List Choice Scrollbar

28 Button Define method actionPerformed in the listener: Methods:
Constructors: Button(); Button(“text”) setLabel(“text”); getLabel() b.setActionCommand(“text”); Connects the text text to button b. b.addActionListener(l); Connects a listener l of class ActionListener to button b. Define method actionPerformed in the listener: Methods then called in the listener: e.getSource(): returns the object where event occurred b.getLabel(): returns text in button public void actionPerformed(ActionEvent e) { //we get here when the user presses the button }

29 Button Example: import java.awt.*; import java.awt.event.*;
import java.applet.*; public class CircleButtonDemo extends Applet implements ActionListener { private CircleCanvas circle = new CircleCanvas(); private Panel panel = new Panel(); private Button btnBlue = new Button("Blue"); private Button btnRed = new Button("Red"); private Button btnYellow = new Button("Yellow"); public void init() { circle.setForeground(Color.green); setLayout( new GridLayout(2, 1) ); add(circle); add(panel); panel.setLayout (new GridLayout(1, 3) ); panel.add(btnBlue); panel.add(btnRed); panel.add(btnYellow);

30 Button Example: // connect the listeners
btnBlue.addActionListener(this); btnRed.addActionListener(this); btnYellow.addActionListener(this); setVisible(true); } // define listeners public void actionPerformed(ActionEvent e) { // check to see which button has been clicked on if (e.getSource() == btnBlue) circle.setForeground(Color.blue); else if (e.getSource() == btnRed) circle.setForeground(Color.red); else if (e.getSource() == btnYellow) circle.setForeground(Color.yellow); circle.repaint();

31 Button Example: <html> <head>
<title>A button demonstration applet</title> </head> <body> A button demonstration applet <br> <applet code=CircleButtonDemo.class width=400 height=150> </applet> </body> </html>

32 Checkboxes May be grouped to form radio buttons Declarations:
Checkbox x1 = new Checkbox(); not selected, no text Checkbox x2 = new Checkbox(“text”); not selected, with text Checkbox x3 = new Checkbox(“text”, false); not selected Checkbox x4 = new Checkbox(“text”, true); selected CheckboxGroup gr = new CheckboxGroup(); a set of radio buttons Checkbox r1 = new Checkbox(“text1”,bool, gr); Checkbox r2 = new Checkbox(“text2”,bool, gr);only one r# is true Checkbox r3 = new Checkbox(“text3”,bool, gr);

33 Checkbox Methods setLabel(“text); getLabel(); setState(bool);
x.setCheckboxGroup(g); puts x into group g. x.getCheckboxGroup(); gives the group x is in. g.setSelectedCheckbox(x); x in group g will be selected g.getSelectedCheckbox(); return selected Checkbox in g.

34 Checkbox Listeners To connect a listener to a Checkbox:
x.addItemListener(l); Define the method itemStateChanged in the listener: public void itemStateChanged (ItemEvent e) { // we get here when user clicks on a checkbox } Method called in the listener: e.getSource(); returns the object where the event occurred.

35 Checkbox Example import java.awt.*; import java.awt.event.*;
import java.applet.*; public class CircleCheckboxDemo extends Applet implements ItemListener { private CircleCanvas circle = new CircleCanvas(); private Panel panelMiddle = new Panel(); private CheckboxGroup grpOption = new CheckboxGroup(); private Checkbox chkBlue = new Checkbox("Blue", true, grpOption); private Checkbox chkRed = new Checkbox("Red", false, grpOption); private Checkbox chkYellow = new Checkbox("Yellow", false, grpOption); private Panel panelBottom = new Panel(); private Checkbox chkFilled = new Checkbox("Filled", true); private Checkbox chkCentered = new Checkbox("Centered", true); private Checkbox chkBlack = new Checkbox("Black Background", false);

36 public void init() { circle. setForeground(Color
public void init() { circle.setForeground(Color.green); setLayout (new GridLayout(3, 1) ); add(circle); add(panelMiddle); // arrange the radio buttons panelMiddle.setLayout( new GridLayout(1, 3) ); panelMiddle.add(chkBlue); panelMiddle.add(chkRed); panelMiddle.add(chkYellow); // connect the listener chkBlue.addItemListener(this); chkRed.addItemListener(this); chkYellow.addItemListener(this); add(panelBottom); // arrange the checkboxes panelBottom.setLayout( new GridLayout(3, 1) ); panelBottom.add(chkFilled); panelBottom.add(chkCentered); panelBottom.add(chkBlack);

37 Checkbox Example: // connect the listener chkFilled.addItemListener(this); chkCentered.addItemListener(this); chkBlack.addItemListener(this); setVisible(true); } // listener public void itemStateChanged(ItemEvent e) { if (e.getSource() == chkBlue) circle.setForeground(Color.blue); else if (e.getSource() == chkRed) circle.setForeground(Color.red); else if (e.getSource() == chkYellow) circle.setForeground(Color.yellow); else if (e.getSource() == chkFilled || e.getSource() == chkCentered || e.getSource() == chkBlack) { circle.filled = chkFilled.getState(); circle.inTheCenter = chkCentered.getState(); circle.blackBackground = chkBlack.getState(); } circle.repaint(); } }

38 Choice and List Choice chooses one item only while List allows for multiple selections at once. Declarations: Choice colors = new Choice(); colors.add(“Blue”); colors.add(“Red”); colors.add(“Yellow”); List l = new list(3,true); //three items in list, all can be selected at once l.add(“Filled”); l.add(“In the center”); l.add(“Black Background”);

39 Choice and List Methods
x.add(“text”); Adds option text to x. x.select(n); selects option n in x. x.isIndexSelected(n); returns bool value Connecting a listener: X.addItemListener(l); public void itemStateChanged(ItemEvent e) { //We get here when an option is selected or deselected. } e.getSource(); returns the object where the event occurred.

40 Choice & List Example: import java.awt.*; import java.awt.event.*;
import java.applet.*; public class CircleChoiceListDemo extends Applet implements ItemListener { private CircleCanvas circle = new CircleCanvas(); private Panel panel = new Panel(); private Choice choColors = new Choice(); private List lstList = new List(3, true); // multi-select able public void init() { circle.setForeground(Color.green); setLayout( new GridLayout(2, 1) ); add(circle); add(panel); panel.setLayout( new GridLayout(1, 2) ); panel.add(choColors); // add the items to the choice menu choColors.add("Blue"); choColors.add("Red"); choColors.add("Yellow"); // select the first item choColors.select(0); panel.add(lstList);

41 Choice & List Example: // add the item to the list
lstList.add("Filled"); lstList.add("Centered"); lstList.add("Black Background"); // select the first two items lstList.select(0); lstList.select(1); // connect the listeners choColors.addItemListener(this); lstList.addItemListener(this); // make visible setVisible(true); } public void itemStateChanged(ItemEvent e) {// listener if (e.getSource() == choColors) { if (choColors.getSelectedIndex() == 0) circle.setForeground(Color.blue); else if (choColors.getSelectedIndex() == 1) circle.setForeground(Color.red); else circle.setForeground(Color.yellow); } else if (e.getSource() == lstList) { circle.filled = lstList.isIndexSelected(0); circle.inTheCenter = lstList.isIndexSelected(1); circle.blackBackground = lstList.isIndexSelected(2); circle.repaint();

42 Choice & List Example:

43 Scrollbar Allows for ‘slider’ input Declaration:
Scrollbar sR = new Scrollbar(position, init.value, scrollbox, min.value, max.value); Position is either Scrollbar.HORIZONTAL or Scrollbar.VERTICAL. Scrollbox is size of the moveable box

44 Scrollbar Methods setUnitIncrement(n); changes the amount of space moved when arrow is clicked by ±n setPageIncrement(n); changes the amount of space moved when inside the bar is clicked by ±n setValue(n); sets the value at scrollbox’s left/lower edge getValue(n); gets the value at scrollbox’s left/lower edge Listening: uses AdjustmentListener object instantiated as seen in Choice/List. Uses getSource();

45 Scrollbar Example: import java.awt.*; import java.awt.event.*;
import java.applet.*; public class CircleScrollbarDemo extends Applet implements AdjustmentListener { private CircleCanvas circle = new CircleCanvas(); private Panel panel = new Panel(); private Scrollbar sbRed = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 256); private Scrollbar sbGreen = new Scrollbar(Scrollbar.HORIZONTAL, 255, 1, 0, 256); private Scrollbar sbBlue = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 256); private Label lblRed = new Label("0", Label.CENTER); private Label lblGreen = new Label("255", Label.CENTER); private Label lblBlue = new Label("0", Label.CENTER);

46 Scrollbar Example public void init() {
circle.setForeground(Color.green); setLayout( new GridLayout(2, 1, 0, 5) ); add(circle); add(panel); panel.setLayout( new GridLayout(3, 3) ); panel.add( new Label("Red", Label.CENTER) ); panel.add(sbRed); panel.add(lblRed); panel.add( new Label("Green", Label.CENTER) ); panel.add(sbGreen); panel.add(lblGreen); panel.add( new Label("Blue", Label.CENTER) ); panel.add(sbBlue); panel.add(lblBlue); sbRed.addAdjustmentListener(this); sbGreen.addAdjustmentListener(this); sbBlue.addAdjustmentListener(this); setVisible(true); }

47 Scrollbar Example: public void adjustmentValueChanged(AdjustmentEvent e) { if (e.getSource() == sbRed || e.getSource() == sbGreen || e.getSource() == sbBlue) { int red = sbRed.getValue(), green = sbGreen.getValue(), blue = sbBlue.getValue(); lblRed.setText( String.valueOf(red) ); lblGreen.setText( String.valueOf(green) ); lblBlue.setText( String.valueOf(blue) ); circle.setForeground( new Color(red, green, blue) ); circle.repaint(); }

48 Text Input TextField -- one line, or row, of text
TextArea -- multiple rows

49 TextField Methods Declarations: Uses ActionListener
TextField t = new TextField(); TextField t = new TextField(n); n sets space TextField t = new TextField(“text”); TextField t = new TextField(“text, n); Uses ActionListener e.getSource(); x.getText(); Returns the text in the box as a String (which must be parsed for numeric data)

50 TextField Methods setColumns(n) -- Changes the size setText(“text”)
setEchoChar(‘*’) -- Displays in place of entered text. Used for password fields. selectAll() select(i, j) -- Selects characters i to j getSelectedText

51 TextField Example: import java.awt.*; import java.awt.event.*;
class Hello extends Frame implements ActionListener { TextField txtAnswer = new TextField(25); Label lblGreeting = new Label(); public Hello() {// constructor // define the appearance of the window setFont( new Font("Dialog", Font.PLAIN, 14) ); setLayout( new GridLayout(2, 2) ); add( new Label("What is your name? ", Label.RIGHT) ); // add the components add(txtAnswer); add(lblGreeting); lblGreeting.setAlignment(Label.RIGHT); pack(); // pack the window, calculating its size txtAnswer.addActionListener(this); // connect a listener to the TextField // display the window setVisible(true); }

52 TextField Example: public static void main(String[] arg) {
Hello h = new Hello(); } // listeners public void actionPerformed(ActionEvent e) { // this method is called when an event occurs if (e.getSource() == txtAnswer) { String name = txtAnswer.getText(); lblGreeting.setText("Welcome " + name + "!");

53 TextArea Methods Declaration:TextArea a=new TextArea(“text”,r,c,sb);
r & c -- number of rows & columns sb sets scrollbars All methods in TextField are available plus: setEditable(bool) append(“text”) insert(“text”, i) replaceRange(“text”, i, j)

54 TextArea Methods Continued
setRows( r) setColumns( c) getRows() getColumnts() Must use a TextListener, not an ActionListener a.addTextListener(l); public void textValueChanged(TextEvent e) { // we get here when the user makes changes in the text } e.getSource(); //returns object where event occurred

55 Containers Panel ScrollPane

56 Panel Is a subclass of Component
Has its own layout, therefore its own LayoutManager can be used. Must be contained by another container.

57 Panel Example import java.awt.*; class Flight extends Panel {
String flightNo, destination, comment = " "; Time departure, arrival; Label comLabel = new Label(comment); public Flight(String flight, String dest, int depHour, int depMin, int arrHour, int arrMin) { flightNo = flight; destination = dest; departure = new Time(depHour, depMin); arrival = new Time(arrHour, arrMin); setLayout( new GridLayout(1, 4) ); setBackground(Color.white); departure.setFont( getFont() ); departure.setBackground( getBackground() ); add( new Label(flightNo) ); add( new Label(destination) ); add(departure); add(comLabel); setVisible(true); } public void delay(int min) { departure.tick(min * 60); arrival.tick(min * 60); setComment("Delayed"); public void setComment(String theComment) { comment = theComment; comLabel.setText(comment); repaint();

58 Panel Example import java.awt.*; class FlightDemo extends Frame {
Flight f1, f2, f3, f4; public FlightDemo() { f1 = new Flight("BA1853", "London", 8, 10, 10, 55); f2 = new Flight("AF3142", "Paris", 8, 20, 10, 55); f3 = new Flight("TP0678", "Lisbon", 8, 35, 12, 40); f4 = new Flight("SK5971", "Vern", 8, 40, 9, 30); add(f1); add(f2); add(f3); add(f4); setLayout( new GridLayout(4, 1, 0, 1) ); setBackground(Color.black); pack(); // resize window setVisible(true); f1.delay(15); f2.setComment("Boarding gate 15"); } public static void main(String[] arg) { FlightDemo demo = new FlightDemo(); }

59 ScrollPane Declaration: add( c)
new ScrollPane(); new ScrollPane(s) s -- ScrollPane.SCROLLBARS.ALWAYS/NEVER add( c) getScrollbarHeight(); getScrollbarWidth(); setScrollbarPosition(x,y); allows point x,y to be seen

60 ScrollPane Example import java.awt.*; import java.applet.*;
public class ScrollPaneDemo extends Applet { private ScrollPane sp = new ScrollPane(); private CircleCanvas circle = new CircleCanvas(); public void init() { circle.setSize(300, 300); sp.add(circle); setLayout( new GridLayout(1, 1) ); add(sp); setVisible(true); }


Download ppt "GUI Components."

Similar presentations


Ads by Google