Download Java Swing

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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