gui chapter 10 graphics context and objects creating a window based application jframe, jtextfield,...

Post on 03-Jan-2016

223 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

GUI Chapter 10

Graphics context and objectsCreating a window based applicationJFrame, JTextField, JButtonContainers and ControlsGraphics commandsLayout ManagersEvent Handlers

Terms

GIUcomponentcontainercoordinatesgraphics context

Types of interfaces

Console applications Using print and Scanner

A simple GUI Using JoptionPane

A complete GUI using a Frame Can be created using AWT Can be create using Swing

The swing versus the AWT

AWT part of JDK v1 Mapped to platform specific

components Heavyweight

Swing introduced in V2 Platform independent components Lightweight

Components

JButton tnOK = new JButton(“OK”);JLabel tnOK = new JLabel(“OK”);JTextField tfNAME = new JTextField(“Enter Name”);JCheckBox cbOK = new JTextBox(“OK”);JComboBox cmb = new JComboBox(new String[] {“Red”,”Green”,Blue”});

The Class chart

JComponent AbstractButton

Jbutton JToggleButton

JCheckBox

JTextComponent JTextField

JLabelJPanel… many others …

Classes

Container ClassesJFrameJDialogJAppletJPanelHelper Classes Graphics, Color, Font, FontMetrics LayoutManager

Frames

Public class myframe { public static void main(String[] args) { JFrame yframe = new JFrame(“MyFrame”); myframe.setsize(300,300); myframe.setvisible=true; myframe.setdefaultcloseoperation(Jframe.EXIT_ON_CLOSE); }}

Frames with components(limited example)

Import javax.swing.*;

Public class myframe { public static void main(String[] args) { JFrame yframe = new JFrame(“MyFrame”);

java.awt.Container mycnt = frame.getContentPane(); Jbutton btOK = new JButton(“OK”); mycnt.add(btOK);

myframe.setsize(300,300); myframe.setvisible=true; myframe.setdefaultcloseoperation(Jframe.EXIT_ON_CLOSE); }}

Getting the screen size

Dimension ScrS = Toolkit.getDefaultToolkit().getScreenSize();int wid = screensize.width;int hgt = screensize.height;

This can be used to center or dynamically size frame.

Frame.setlocation(x,y);Frame.setwidth(wid);Frame.sethight(hgt);

Layout Managers

Use to determine how components will be positioned on the frame or panel.To create and apply a layout manager to a component.LayoutManager Lm = new FlowLayout();Frame.setLayout(LM);

Type of layout managers

FlowGridBorderOthers ….

Properties.setHGap(10);.setVGap(10);.setAlignment(FlowLayout.RIGHT);

Creating a subclass of Frame

Import javax.swing.*;Import java.awt.*;

Public class theframe extends Jframe {

Public theframe() {

Container mycnt = getContentPane(); mtcnt.setLayout(new FlowLayout()); Jbutton btOK = new JButton(“OK”); mycnt.add(btOK);}

public static void main(String[] args) {

theframe myframe = new theframe(); myframe.settitle(“Frame subclass”); myframe.setsize(300,300); myframe.setvisible=true; myframe.setdefaultcloseoperation(Jframe.EXIT_ON_CLOSE); }}

The color Class

Color c = new Color(100,100,100)

The color constructor expects:Color(R,G,B)Red, Green, Blue 0-255

btnOK.setForeground( c );

The Font class

Font ( name, Style, size)

Font F = new Font(“Serif”, Font.BOLD + Font.ITALIC, 12);

btnOK.setFont(F);

Drawing shapes

drawlinedrawrectfillrectdrawarcfillarcdrawstringdraw3drectdrawroundedrectdrawpolygon

Making a window based application

import javax.awt.*;import javax.swing.*;public class MyWindow extends JFrame { public MyWindow() { super(“My Window”); setSize(400,200); setVisible(true); } public void paint(Graphics g) { super.paint(g); g.setColor(Color.red); g.fillRect(20,20,100,100); } public static void main( String args[]) { MyWindow app1=new MyWindow(); app1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); }}

Event Handlers

Event-driven programmingA change in the state of a GUI component triggers a call to an event handler methodEvent source is the object that the user interacts with to trigger the event.Event handler is an object with an event handler method designed to handle a specific event type.

Implementing Event Handlers

1 – Code a class for the event handler. The class must implement the correct listener. This can be the same class file as out

application runs in.

2 – Create an event handler object from the class.3 – Register the handler object with the GUI component.

Event Handlers – Step 1

Create a class to implement the Handler

public class MyProgram extends JFrame implements ActionListener {

… /** This method will be invoked when a button is clicked */ public void actionPerformed(ActionEvent e) { System.out.println("The " + e.getActionCommand() + "

button is " + "clicked at\n " + new java.util.Date(e.getWhen()));

} …}

Event Handlers – Step 2

Create event handler object

//ButtonListener btListener = new ButtonListener();

This step may be skipped if we are using the Program class as the event object.

Event Handlers – Step 3

Register the event handler object with the source object. In this example a button.

… private JButton jbtOk = new

JButton("OK"); jbtOk.addActionListener(this);…

Exampleimport javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestActionEvent extends

JFrame implements ActionListener { // Create two buttons private JButton jbtOk = new

JButton("OK"); private JButton jbtCancel = new

JButton("Cancel"); public TestActionEvent() { // Set the window title setTitle("TestActionEvent"); // Set FlowLayout manager to arrange

the components inside the frame getContentPane().setLayout(new

FlowLayout());

// Add buttons to the frame getContentPane().add(jbtOk); getContentPane().add(jbtCancel); // Create a listener object //ButtonListener btListener = new

ButtonListener(); // Register listeners jbtOk.addActionListener(this); jbtCancel.addActionListener(this); } /** Main method */ public static void main(String[] args) { TestActionEvent frame = new

TestActionEvent();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(100, 80); frame.setVisible(true); } /** This method will be invoked when a button

is clicked */ public void actionPerformed(ActionEvent e) { System.out.println("The " +

e.getActionCommand() + " button is " + "clicked at\n " + new

java.util.Date(e.getWhen())); } }

Getting and Setting the value of a TextField

Getting a value from a Textfield String s; s= TheTextField.getText();

Setting the value in a TextField TheTextField.setText(“A value”);

Summary

AWT and Swing APIContainers – JFrameLabels, TextFields and ButtonsLayout ManagersGraphics commandsHandling EventsLayout Managers

top related