Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Java Swing One of the most important features of Java is its ability to draw graphics. AWT to Swing • AWT: Abstract Window Toolkit • import java.awt.* • Swing: new with Java2 • import javax.swing.* extends AWT • Depends less on underlying platform • Many more predefined GUI components • Event listeners • API: • http://docs.oracle.com/javase/8/docs/api/ GUI Component API • Java: GUI component = class • Properties JButton • Methods • Events Using a GUI Component 1. Create it • Instantiate object: b = new JButton(“press me”); 2. Configure it • • Properties: b.text Methods: b.setText(“press me”); //set this way 3. Add button b to panel • panel.add(b); 4. Listen to it • Events: Listeners JButton Anatomy of an Application GUI GUI JFrame JPanel Internal structure JFrame containers JButton JLabel JPanel JButton JLabel Using a GUI Component 2 1. 2. 3. 4. 5. Create it Configure it Add children (if container) Add to parent (if not JFrame) Listen to it order important Add from bottom up Listener JLabel JButton JPanel JFrame • Create: • • • • Frame Panel Components Listeners • Add: (bottom up) • listeners into components • components into panel • panel into frame Frames • Swing version JFrame (extends AWT’s frame) • Import javax.swing (‘x’ – extension package) • Default size is 0x0 pixels DEMO FrameTest.java Frames • • • • Need to extend class Override constructor for size desired. Select behavior on Close (for example, exit) Starts invisible, must show DEMO SimpleFrameTest.java Frames • Only a few methods to change look • Inherits methods from superclasses – – – – dispose – closes window and reclaims resources setIconImage - used when window is minimized setTitle – for menu bar of window setResizable – takes boolean to enable/disable user’s ability to resize window – setLocation – position component – setBounds – size and position component DEMO SimpleFrameTest2.java Inheritance Chain Object Component Window Frame Container JComponent JPanel JFrame Panels • Draw on a panel, which is added to frame – Specifically to the content pane of the frame • Displays information – Draw strings – Draw graphical elements • Add components into content pane (they are containers) SomeComponent c = new … Container contentPane = frame.getContentPane(); contentPane.add (c); Application Code import javax.swing.*; class hello { public static void main(String[ ] args) { JFrame f = new JFrame(“title”); JPanel p = new JPanel(); JButton b = new JButton(“press me”); p.add(b); f.setContentPane(p); } } f.show(); // add button to panel // add panel to frame press me Subclasses • Extend JPanel • Override paintComponent method in that class to do graphics class MyPanel extends Jpanel { public void paintComponent (Graphics g) { //code for drawing goes here } DEMO NotHelloWorld.java Painting… • Never call paintComponent – Event handler notifies component to paint itself whenever needed • Resizing, minimizing, overlapping windows, etc. – If you need to force repainting, call repaint instead Subclasses cont. class MyPanel extends Jpanel { public void paintComponent (Graphics g) { super.paintComponent (g); //superclass does job //code for drawing goes here g.drawString (“Java is COOL!”, 75, 100); } DEMO NotHelloWorld.java