Notes

snottybugbearΛογισμικό & κατασκευή λογ/κού

3 Νοε 2013 (πριν από 3 χρόνια και 9 μήνες)

85 εμφανίσεις

Lecture Notes CPSC 224 (Spring 2012)
Today
 Quiz 6
 Start on Java Swing
Homework
 hw5 out
Reading
 Ch 7:281-299
 Ch 8:323-330
S.Bowers 1 of 10
Lecture Notes CPSC 224 (Spring 2012)
GUI programming in Java
Early versions of Java used the\AWT"
 Abstract Window Toolkit
 an API over underlying graphics support of platform(Win,Mac,Linux,etc.)
\Swing"extends AWT
 richer API
 more consistent\look and feel"
 native\look and feels"
 more widgets
S.Bowers 2 of 10
Lecture Notes CPSC 224 (Spring 2012)
JPanels
A JPanel is called either a\panel"or\pane"
 a general-purpose container for widgets
 widgets added using panel.add(widget)...depending on layout manager
 panels are also widgets...so can be added to panes
 basic operations:
{ add(Comonent c)
{ getComponent(int i)
{ remove(int i)
{ set the background color
{ set the layout manager (more later)
{ lots more!
NOTE:You are expected to look up the classes we discuss in the Java API...
we can't cover all the methods/uses in class
S.Bowers 3 of 10
Lecture Notes CPSC 224 (Spring 2012)
JFrames
A JFrame is a top-level window
import javax.swing.*;
public class Lab f
public static void main(String[] args) f
JFrame f = new JFrame("Test");
f.setSize(300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
g
g
 set/get the size
 set/get the window title
 add widgets to the\content"pane
 add/set the menu bar
 and so on
JFrame anatomy:
 root pane manages the interior of the pane (the other panes)
 layered pane for puting widgets on top of or behind other widgets
 menu bar (optional) is for menu items (File!Save,Edit!Copy,etc.)
 content pane is the visible widgets of the frame,panes added using frame.add(...)
 glass pane is used to intercept events before the content pane
S.Bowers 4 of 10
Lecture Notes CPSC 224 (Spring 2012)
Example Widgets:JTextArea
Used for getting/displaying multiple lines of text
import javax.swing.*;
public class Lab f
public static void main(String[] args) f
JFrame f = new JFrame("Test");
f.setSize(300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea(20,40);
f.add(textArea);
f.pack();
f.setVisible(true);
g
g
Various operations for a JTextArea
 append a string
 set line wrapping
 get text
 get selected text
 set whether editable
 and so on
S.Bowers 5 of 10
Lecture Notes CPSC 224 (Spring 2012)
Adding Scroll Bars to a Text Area
Here we can use a JScrollPane widget
import javax.swing.*;
public class Lab f
public static void main(String[] args) f
JFrame f = new JFrame("Test");
f.setSize(300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea(20,40);
JScrollPane scrollPane = new JScrollPane(textArea);
f.add(scrollPane);
f.pack();
f.setVisible(true);
g
g
Setting the horizontal and vertical scroll policy
 as needed,never,always...by scroll bar
scrollPane.setVerticalScrollBarPolicy(
ScrollPaneConstants.VERTICAL
SCROLLBAR
ALWAYS);
S.Bowers 6 of 10
Lecture Notes CPSC 224 (Spring 2012)
Dialog Boxes
Displaying simple errors,warnings,messages,etc.using JOptionPane
JOptionPane.showMessageDialog(...)
{ shows a message,waits for user to click OK
JOptionPane.showConfirmDialog(...)
{ shows a message and gets conrmation (OK,cancel,etc.)
JOptionPane.showOptionDialog(...)
{ shows a message and gets users choice from a set of options
JOptionPane.showInputDialog(...)
{ shows a message and gets a line of user input
import javax.swing.*;
public class Lab f
public static void main(String[] args) f
JFrame f = new JFrame("Test");
f.setSize(300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
JOptionPane.showMessageDialog(f,"Welcome to Swing");
JOptionPane.showMessageDialog(f,"Hi","Title",
JOptionPane.PLAIN_MESSAGE);
g
g
 Types of messages:ERROR
MESSAGE,INFORMATION
MESSAGE,WARN-
ING
MESSAGE,QUESTION
MESSAGE,or PLAIN
MESSAGE
S.Bowers 7 of 10
Lecture Notes CPSC 224 (Spring 2012)
Basic Class Organization
Create JFrame or JPanel subclasses for windows/panes
 main creates the main application frame
 each JFrame or JPanel class becomes a reusable,specialized widget
public class App f
public static void main(String[] args) f
...
JFrame frame = new MyJFrame(...);
...
g
g
public class MyJFrame extends JFrame f
public MyJFrame(...) f
initFrame();
...
g
private void initFrame() f...g
g
public class MyPane extends JPanel f
public MyPane() f
initPane();
g
private void initPane() f...g
g
S.Bowers 8 of 10
Lecture Notes CPSC 224 (Spring 2012)
Buttons
Create buttons using the JButton class
import javax.swing.*;
import java.awt.event.*;
public class Lab f
public static void main(String[] args) f
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new PanicPane());
f.pack();
f.setVisible(true);
g
g
import javax.swing.*;
import java.awt.event.*;
public class PanicPane extends JPanel implements ActionListener f
private JButton button1 = new JButton("Panic");
private JButton button2 = new JButton("Don't Panic");
public PanicPane() f
initPane();
g
private void initPane() f
button1.addActionListener(this);
button2.addActionListener(this);
add(button1);
S.Bowers 9 of 10
Lecture Notes CPSC 224 (Spring 2012)
add(button2);
g
public void actionPerformed(ActionEvent e) f
if(e.getSource() == button1)
System.out.println("Panic");
else
System.out.println("Don't Panic");
g
g
Exercise
 Instead of printing...
 Display a dialog box with a message depending on button clicked
S.Bowers 10 of 10