Java Swing

advertisement
Lec09 :: Java Swing
เรื่ อง jOptionPane
Nattapong Songneam
http://www.siam2dev.com
AWT to Swing

AWT: Abstract Windowing Toolkit


import java.awt.*
Swing: new with Java2
import javax.swing.*
 Extends AWT
 Tons o’ new improved components
 Standard dialog boxes, tooltips, …
 Look-and-feel, skins
 Event listeners


API:
Swing Set Demo
J2sdk/demo/jfc/SwingSet2
• Many predefined
GUI components
GUI Component API

Java: GUI component = class

Properties


Methods


Events

JButton
Using a GUI Component
1.
Create it

2.
Configure it


3.
Properties: b.text = “press me”;
Methods:
b.setText(“press me”);
[avoided in java]
Add it

4.
Instantiate object: b = new JButton(“press me”);
panel.add(b);
Listen to it

Events: Listeners
JButton
Anatomy of an Application GUI
Internal structure
GUI
JFrame
JFrame
JPanel
containers
JPanel
JButton
JButton
JLabel
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
เรี ยงลาดับการทางาน
จากบนลงล่าง
Build from bottom up
Listener

Create:
Frame
 Panel
 Components
 Listeners


JLabel
JButton
JPanel
Add: (bottom up)
listeners into components
 components into panel
 panel into frame

JFrame
Code
JFrame f = new JFrame(“title”);
JPanel p = new JPanel( );
JButton b = new JButton(“press me”);
p.add(b);
f.setContentPane(p);
// add button to panel
// add panel to frame
f.show();
press me
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);
// add button to panel
// add panel to frame
press me
f.show();
}
}
Layout Managers
Automatically control placement of
components in a panel
 Why?


Layout
Manager
Heuristics
FlowLayout
GridLayout
null
none,
programmer
sets x,y,w,h
Left to right,
Top to bottom
BorderLayout
n
w
c
s
e
CardLayout
One at a time
GridBagLayout
JButton
Combinations
JButton JButton
JTextArea
Combinations
JButton
JButton
JFrame
n
JPanel: FlowLayout
JPanel: BorderLayout
c
JTextArea
Code: null layout
JFrame f = new JFrame(“title”);
JPanel p = new JPanel( );
JButton b = new JButton(“press me”);
b.setBounds(new Rectangle(10,10, 100,50));
p.setLayout(null);// x,y layout
p.add(b);
press me
f.setContentPane(p);
Code: FlowLayout
JFrame f =
JPanel p =
FlowLayout
JButton b1
JButton b2
new JFrame(“title”);
new JPanel( );
L = new FlowLayout( );
= new JButton(“press me”);
= new JButton(“then me”);
p.setLayout(L);
p.add(b1);
p.add(b2);
f.setContentPane(p);
press me then me
Applets


JApplet is like a JFrame
Already has a panel

JApplet
contentPane
Access panel with JApplet.getContentPane( )
import javax.swing.*;
JButton
class hello extends JApplet {
public void init(){
JButton b = new JButton(“press me”);
getContentPane().add(b);
}
Applet Methods

Called by browser:
init( ) - initialization
 start( ) - resume processing (e.g.
animations)
 stop( ) - pause
 destroy( )
- cleanup
 paint( ) - redraw stuff (‘expose’ event)

Application + Applet
import javax.swing.*;
class helloApp {
public static void main(String[] args){
// create Frame and put my mainPanel in it
JFrame f = new JFrame(“title”);
mainPanel p = new mainPanel();
f.setContentPane(p);
f.show();
}
}
class helloApplet extends JApplet {
public void init(){
// put my mainPanel in the Applet
mainPanel p = new mainPanel();
getContentPane().add(p);
}
}
// my main GUI is in here:
class mainPanel extends JPanel {
mainPanel(){
setLayout(new FlowLayout());
JButton b = new JButton(“press me”);
add(b);
}
}
Command line
Browser
JFrame
JApplet
or
contentPane
JPanel
JButton
Applet Security
No read/write on client machine
 Can’t execute programs on client machine
 Communicate only with server
 “Java applet window” Warning

Input
โดยใช้ JOptionPane

คลาส JOptionPane เป็ นคลาสที่อยูใ่ น package
javax.swing และใช้สาหรับการรับข้อมูลผ่านทางคียบ์ อร์ด และ
แสดงข้อมูลทางจอภาพ ในการทางานของ graphics mode
หรื อ GUI โดยจะแสดงออกมาในลักษณะของ popup
window ที่เรี ยกว่า dialog box
ลักษณะของ dialog box ของ JOptionPane
InputDialog
 MessageDialog
 ConfirmDialog

Input Dialog


สร้างขึ้นจาก method ที่ชื่อ showInputDialog() ซึ่ งจะ
return ค่ากลับมาเป็ น String
ตัวอย่างเช่น
String response =
JOptionPane.showInputDialog( null,
“What is your name?”);
Arguments of showInputDialog()




ชื่อของ parent window
ข้อความที่ตอ้ งการแสดงใน inputDialog
ชื่อหัวข้อ (title) (option)
ชนิดของ InputDialog (option)





ERROR_MESSAGE
INFORMATION_MESSAGE
PLAIN_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE
showInputDialog()
Message Dialog
MessageDialog เป็ น dialog box ที่ใช้สาหรับแสดง
ข้อความ หรื อข้อมูลต่างๆ โดยถูกสร้างจาก method ชื่อว่า
showMessageDialog()
 ค่า argument ของ showMessageDialog() จะ
เหมือนกับ showInputDialog()

showMessageDialog()
JOptionPane.showMessageDialog(null,
"Hello..Java!!");
JOptionPane.showMessageDialog(null,
"This program will terminate
in 10 seconds",
"Programtermination",
JOptionPane.WARNING_MESSAGE);
Confirm Dialog

ConfirmDialog เป็ น dialog box ที่มีปุ่มคาสัง่ Yes
No และ Cancel ปรากฎด้วย โดยสร้างจาก method ชื่อ
showConfirmDialog()

showConfirmDialog() จะ return ค่ากลับเป็ น ตัวเลข
จานวนเต็ม (integer) โดยขึ้นกับปุ่ มที่ผใู ้ ช้คลิก นัน่ คือ ปุ่ ม Yes
จะมีค่าเท่ากับ 0 ปุ่ ม No จะมีค่าเท่ากับ 1 และปุ่ ม Cancel จะมี
ค่าเท่ากับ 2
Arguments of showConfirmDialog()




ชื่อของ parent window
ข้อความที่ตอ้ งการแสดงใน inputDialog
ชื่อหัวข้อ (title (option)
ค่าคงที่ของปุ่ ม Yes No และ Cancel ที่ตอ้ งการแสดง ซึ่งมี 2 แบบ คือ (option)



YES_NO_CANCEL_OPTION
YES_NO_OPTION
ชนิดของ InputDialog ซึ่ งจะถูกกาหนดโดยค่าคงที่ต่อไปนี้ (option)





ERROR_MESSAGE
INFORMATION_MESSAGE
PLAIN_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE
showConfirmDialog()
int s =
JOptionPane.showConfirmDialog(null,
”Are you ready to quit? ");
int s = JOptionPane.showConfirmDialog(
null,
"Are you ready to quit?",
"Exit confirmation",
JOptionPane.YES_NO_OPTION,
JOptionPane.ERROR_MESSAGE);
ฝึ กปฎิบตั ิตวั อย่าง Input1 ถึง Input14.java
Class Input1
import javax.swing.JOptionPane;
public class Input1 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ");
System.exit(0);
}
}
Class Input2
import javax.swing.JOptionPane;
class Input2 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ",
"Data Input",JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
Class Input3
import javax.swing.JOptionPane;
class Input3 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ",
"Data Input",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
Class Input4
import javax.swing.JOptionPane;
class Input4 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ",
"Data Input",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
Class Input5
import javax.swing.JOptionPane;
class Input5 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ",
"Data Input",JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}
Class Input6
import javax.swing.JOptionPane;
class Input6 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ",
"Data Input",JOptionPane.QUESTION_MESSAGE);
System.exit(0);
}
}
Class Input7
import javax.swing.JOptionPane;
class Input7 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ");
JOptionPane.showMessageDialog(null, "Hello! "+data);
System.exit(0);
}
}
Class Input8
import javax.swing.JOptionPane;
class Input8 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter
Name: ");
JOptionPane.showMessageDialog(null,data,
" Input Name :
",JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}
Class Input9
import javax.swing.JOptionPane;
class Input9 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter
Name: ");
JOptionPane.showMessageDialog(null,"Hello "
+ data,
" Input Name :
",JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}
Class Input10
import javax.swing.JOptionPane;
class Input10 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter
Name: ");
JOptionPane.showMessageDialog(null,"Hello " + data);
System.exit(0);
}
}
Class Input11
import javax.swing.JOptionPane;
class Input11 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name:
");
JOptionPane.showMessageDialog(null,"Hello " +
data);
int s =
JOptionPane.showConfirmDialog(null,"Are you ready to quit? ");
System.exit(0);
}
}
Class Input12
import javax.swing.JOptionPane;
class Input12 {
public static void main(String[] args) {
String data;
data = JOptionPane.showInputDialog(null,"Enter Name: ");
JOptionPane.showMessageDialog(null,"Hello " + data);
int s = JOptionPane.showConfirmDialog(null,"Are
you ready to quit? ");
JOptionPane.showMessageDialog(null,"no select = " +s );
System.exit(0);
}
}
Class Input13
import javax.swing.JOptionPane;
class Input13{
public static void main(String[] args) {
float score; double d; int mid_score,final_score,total_score;
char ch; String data, message;
message = " ";
mid_score = 30 ;
data = JOptionPane.showInputDialog("Enter final score: ");
final_score = Integer.parseInt(data);
total_score = mid_score+final_score;
message = "Mid = " + mid_score +"Final = "+final_score+
" Total score = " + total_score;
JOptionPane.showMessageDialog(null, message);
System.exit(0);
}
}
Class Input14
import javax.swing.JOptionPane;
class Input14{
public static void main(String[] args) {
float salary,ot,debt,net; String data, message;
data = JOptionPane.showInputDialog("Enter Your Salary: ");
salary = Float.parseFloat(data);
data = JOptionPane.showInputDialog("Enter Your OT: ");
ot
= Float.parseFloat(data);
data = JOptionPane.showInputDialog("Enter Your debt : ");
debt = Float.parseFloat(data);
net = salary+ot-debt;
message = "salary = "+ salary + " ot = "+ ot + "debt = " + debt +
" net = "+net ;
JOptionPane.showMessageDialog(null, message);
System.exit(0);
}
}
import javax.swing.JOptionPane;
public class FindAverage {
public static void main ( String args[ ] ) {
float x, y, average;
String data, outText;
data = JOptionPane.showInputDialog("Enter first value : ");
x = Float.parseFloat(data);
data = JOptionPane.showInputDialog("Enter second value : ");
y = Float.parseFloat(data);
average = (x + y) / 2.0f;
outText = "Average number between " + x + " and " + y + " is " +
average;
JOptionPane.showMessageDialog(null, outText);
System.exit(0);
}
}
In NetBean6.0

Download