250 likes | 363 Views
GUI Chapter 10. Graphics context and objects Creating a window based application JFrame, JTextField, JButton Containers and Controls Graphics commands Layout Managers Event Handlers. Terms. GIU component container coordinates graphics context. Types of interfaces.
E N D
GUI Chapter 10 • Graphics context and objects • Creating a window based application • JFrame, JTextField, JButton • Containers and Controls • Graphics commands • Layout Managers • Event Handlers
Terms • GIU • component • container • coordinates • graphics 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 • JLabel • JPanel • … many others …
Classes • Container Classes • JFrame • JDialog • JApplet • JPanel • Helper 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 • Flow • Grid • Border • Others …. • 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 • drawline • drawrect • fillrect • drawarc • fillarc • drawstring • draw3drect • drawroundedrect • drawpolygon
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 programming • A change in the state of a GUI component triggers a call to an event handler method • Event 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); …
Example // 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())); } } import 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());
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 API • Containers – JFrame • Labels, TextFields and Buttons • Layout Managers • Graphics commands • Handling Events • Layout Managers