Document 7929275

Download Report

Transcript Document 7929275

Java Desktop Application #5
โปรแกรมคำนวณ และกำรใช้งำน jList , jRadioButton
ใน NetBean 6.0 & swing set
โดย อ. นัฐพงศ์ ส่ งเนียม
http://www.siam2dev.com
ออกแบบหน้ำจอโปรแกรม ดังรู ป
หลักการทางาน
โปรแกรมทีผ่ ่ านมามีการคานวณพืน้ ที่ต่าง ๆ
โดยใช้ การเลือกการคานวณค่ าจาก
ComboBox ค่าการคานวณ จาก
ComboBox แล้ ว ก็ ป้อนข้ อมูลทีจ่ าเป็ นจากนั้นก็
กด ปุ่ ม OK แล้ วโปรแกรมจะทาการคานวณ และแสดง
ผลลัพธ์ ออกมา ดังรูป แต่ สาหรับโปรแกรมครั้งนีจ้ ะ
แนะนาเครื่ องมือตัวใหม่ อีก ดังนีค้ ือ
jList
jRadioButton
jButtonGroup
jPanel
ButtonGroup
สร้ำง โปรเจ็กต์ใหม่
•
•
•
•
ไปที่เมนู File
เลือก New Project
เลือก Java Desktop Application
กำหนดชื่อโปรเจ็กต์เป็ น desktop_app5
control ต่ำง ๆที่ใช้สำหรับโปรแกรมนี้
•
•
•
•
•
•
•
•
jLabel
jTextField
jButton
jList
jRadioButton
jButtonGroup
jPanel
jOptionPane
ออกแบบหน้ำจอโปรแกรม
jLabel
jTextField
jList
ออกแบบหน้ำจอโปรแกรม (ต่อ…)
Button
jPanel
jRadioButton
กำรแทรก jList เข้ำมำใน jFrame
• สำมำรถทำได้ดงั นี้
–
–
–
–
ที่หน้ำต่ำง Swing เลือก Swing Control
เลือกเครื่ องมือ List
ทำกำร Drage mouse มำวำงบน Frame แล้วปล่อย mouse
ปรับขนำดของ List ตำมต้องกำร ดัง ต.ย. ในรู ปข้ำงล่ำงนี้
การกาหนดคุณสมบัตขิ อง jList1
คุณสมบัติที่สำคัญของ jList คือ
- model :: ใช้สำหรับกำหนด/เพิม่ รำยกำรที่อยูใ่ น jList1
- selectedItem :: สำหรับแสดงรำยกำรที่ถูกเลือกจำกรำยกำรทั้งหมดที่อยูใ่ น model
กำรกำหนดคุณสมบัติ สำมำรถทำได้ดงั นี้
1. Click เลือกที่ jList1
2. ในหน้ำต่ำง Properties ให้ เลือก model
3. จะปรำกฏหน้ำต่ำงในกำรเพิม่ รำยกำร หำกเรำต้องกำร
สำมำรถเพิ่มรำยกำรของเรำ ก็สำมำรถพิมพ์ลงในช่อง
item แล้วก็กด ปุ่ ม add ดังตัวอย่ำงในรู ป
หมายเหตุ ในที่น้ ีเรำไม่ตอ้ งกำหนด ค่ำใด
เนื่องจำก ต้องกำรเขียนโปรแกรมเพิ่มเข้ำไปที่หลัง
กำรแทรกและใช้งำน jPanel
• jPanel เป็ นเครื่ องมือที่ใช้สำหรับ จัดวำงกลุ่มของ ออบเจ็กต์ต่ำงบนหน้ำจอให้เป็ นระเบียบ
เรี ยบร้อย ในที่น้ ีเรำต้องกำรจัดกลุ่มของ jRadioButton ซึ่ งสำมำรถทำได้ดงั นี้
–
–
–
–
ที่หน้ำต่ำง Swing เลือก Swing Containers
เลือกเครื่ องมือ Panel
ทำกำร Drage mouse มำวำงบน Frame แล้วปล่อย mouse
ปรับขนำดของ Panel ตำมต้องกำร ดัง ต.ย. ในรู ปข้ำงล่ำงนี้
กำรกำหนดคุณสมบัติ Border ของ jPanel
เรำสำมำรถเลือกรู ปแบบ Border หรื อ กรอบของ jPanel ได้ ดังรู ปครับ
วิธีทา
1. คลิกเมำส์เลือกที่ Panel ที่ตอ้ งกำร
2. ในหน้ำต่ำง Properties เลือก
เลือก Border แล้วจะได้ หน้ำต่ำงดังรู ป
3. ให้คลิกเมำส์เลือกรู ปแบบที่ตอ้ งกำรแต่ในที่น้ ี
ให้เลือก เป็ นแบบ TitleBorder
ผลลัพธ์จะได้ดงั รู ปข้ำงล่ำง
กำรแทรกและใช้งำน jRadioButton
• สำมำรถทำได้ดงั นี้
–
–
–
–
–
ที่หน้ำต่ำง Swing เลือก Swing Control
เลือกเครื่ องมือ RadioButton
ทำกำร Drage mouse มำวำงบน jPanel แล้วปล่อย mouse
ปรับขนำดของ jRadioButton ตำมต้องกำร ดัง ต.ย. ในรู ปข้ำงล่ำงนี้
ในที่น้ ีให้ เพิ่ม jRadioButton ทั้งหมด 5 ครั้งดังรู ป
คุณสมบัติที่สำคัญของ RadioButton
• Text ใช้สำหรับกำหนดข้อควำมบน RadioButton
• ButtonGroup ใช้สำหรับจัดกลุ่มของ RadioButton
หำกเรำต้องกำรจัดกลุ่มของ RadioButton ทุกตัวให้อยูใ่ นกลุ่มเดียวกัน ต้อง
แทรก ButtonGroup จำก palleteมำบนหน้ำจอ ก่อน แล้ว กำหนด
Properties ButtonGroup ให้เป็ น ButtonGroup1
Code ในปุ่ ม btnOK
การเข้ าไปเขียนคาสั่ งในเหตุการณ์ btnOKMouseClicked ทาได้ ดังนี้
1.
2.
3.
4.
5.
Click ขวาที่ jButton1
เลือก Event
เลือก mouse
เลือก mouseclick
เขียนคาสั่ งในหน้ าถัดไป
โค้ดในปุ่ ม btnOK
private void btnOKMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
lstModel = new DefaultListModel();
if(jRadioButton1.isSelected() ) {
int n = Integer.parseInt(txtNumber.getText());
for(int i = 1;i<=n;i++) {
if(i % 2 == 0) {
} else {
lstModel.addElement(i);
}
}
lst1.setModel(lstModel);
} else if (jRadioButton2.isSelected() ) {
int n = Integer.parseInt(txtNumber.getText());
for(int i = 1;i<=n;i++) {
if(i % 2 == 0) {
lstModel.addElement(i);
} else {
}
}
lst1.setModel(lstModel);
} else {
jOptionPane1.showMessageDialog(null,"กรุ ณาเลือกรายการที่ต้องการคานวณก่ อน ค่ ะ");
} }
Code ในปุ่ ม btnRemove
กำรเข้ำไปเขียนคำสั่งในเหตุกำรณ์ jButton2MouseClicked ทำได้ดงั นี้
1.
2.
3.
4.
Click ขวำที่ jButton2
เลือก Event
เลือก mouse
เลือก mouseclick
private void btnRemoveMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if(lst1.getSelectedIndex() != -1) {
// ถ้ าเลือก รายการใดก็ให้ ลบเฉพาะรายการนั้น ๆ
lstModel.remove(lst1.getSelectedIndex());
} else{
// ถ้ าไม่ ได้ เลือก รายการใด ๆ เลย ให้ ลบทั้งหมด
lstModel.clear();
}
}
Code ในปุ่ ม btnExit
การเข้ าไปเขียนคาสั่ งในเหตุการณ์ jButton3MouseClicked ทาได้ ดังนี้
1.
2.
3.
4.
5.
Click ขวาที่ jButton3
เลือก Event
เลือก mouse
เลือก mouseclick
เขียนคาสั่ งในหน้ า ถัดไป
private void btnExitMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
String[] choices = {"Yes", "No", "Quit"};
Code ในปุ่ ม Exit
int response = jOptionPane1.showOptionDialog(
null
// Center in window.
, "คุณต้ องการออกจากโปรแกรมหรื อไม่ ?"
// Message
, "MyTitle"
// Title in titlebar
, jOptionPane1.YES_NO_OPTION
// Option type
, jOptionPane1.PLAIN_MESSAGE
// messageType
, null
// Icon (none)
, choices
// Button text as above.
, "None of your business"
// Default button's label
);
switch (response) {
case 0:
break;
case 1:
break;
case 2:
System.exit(0);
// It would be better to exit loop, but...
break;
case -1:
//... Both the quit button (3) and the close box(-1) handled here.
System.exit(0);
// It would be better to exit loop, but...
default:
//... If we get here, something is wrong. Defensive programming.
jOptionPane1.showMessageDialog(null, "Unexpected response ");
}
}
อธิ บำยคำสัง่ ที่สำคัญ :: กำรแสดงข้อควำมใน jLabel
• หำกเรำต้องกำรพิมพ์ขอ้ ควำมไปที่ Label ใด ๆ ก็ใช้ method
setText() ดัง ตัวอย่ำง
– ถ้ำต้องกำรพิมพ์ คำว่ำ “Hello” ใน jLabel1 ก็เขียนคำสัง่ ได้ ดังนี้
jLabel1.setText(“Hello”);
– ถ้ำหำกข้อควำมที่ตอ้ งกำรแสดงนั้นเป็ นค่ำจำกตัวแปร ก็ ไม่ตอ้ งใส่ เครื่ องหมำย “” ดัง
ตัวอย่ำง
String str = “Hello”;
jLabel1.setText(str);
กำรตรวจสอบกำรกดปุ่ มของผูใ้ ช้
String[] choices = {"Yes", "No", "Quit"};
int response = jOptionPane1.showOptionDialog(
null
// Center in window.
, "คุณต้ องการออกจากโปรแกรมหรื อไม่ ?"
// Message
, "MyTitle"
// Title in titlebar
, jOptionPane1.YES_NO_OPTION // Option type
, jOptionPane1.PLAIN_MESSAGE // messageType
, null
// Icon (none)
, choices
// Button text as above.
, "None of your business" // Default button's label
);
switch (response) {
case 0:
break;
case 1:
break;
case 2:
System.exit(0); // It would be better to exit loop, but...
break;
case -1:
System.exit(0); // It would be better to exit loop, but...
default:
jOptionPane1.showMessageDialog(null, "Unexpected response ");
}
ผลลัพธ์