Tabla de Contenidos
JTable เป็นคลาสที่ใช้ใน Java เพื่อสร้างตารางแบบโต้ตอบที่ ผู้ ใช้สามารถแก้ไขได้ด้วยส่วนประกอบ Swing API ของภาษาการเขียนโปรแกรมนั้น โดยพื้นฐานแล้วประกอบด้วยอินเทอร์เฟซแบบกราฟิกที่ให้คุณแสดงข้อมูลในรูปแบบของตาราง ทำให้คุณสามารถดูและโต้ตอบกับข้อมูลที่แสดงโดย GUI ในรูปแบบต่างๆ รวมถึงการแก้ไขเนื้อหาของตาราง การปรับเปลี่ยน ขนาดของคอลัมน์และแถว จัดลำดับคอลัมน์ต่างๆ ได้ตามต้องการ
การสร้างJTableอย่างง่าย
ตัวอย่างนี้พยายามสร้างตารางอย่างง่ายด้วยข้อมูลต่อไปนี้:
ชื่อจริง | นามสกุล | เพศ | อายุ |
เอเดรียน่า | หยุด | ฉ | ยี่สิบเอ็ด |
ฮวน | ปลาหมึก | ม | 40 |
โรซาเลีย | เบอร์นาร์ด | ฉ | 67 |
จูเลียน่า | เปเรซ | ฉ | 36 |
อิสราเอล | กอนซาเลซ | ม | 36 |
ตารางนี้จะแสดงในหน้าต่างที่มีแถบเลื่อน เมื่อใช้JTableเพื่อนำเสนอข้อมูลในรูปแบบตาราง เราต้องคำนึงว่า JTable เป็นเพียงอินเทอร์เฟซแบบกราฟิกเท่านั้น และไม่มีข้อมูลที่จะนำเสนอ ข้อมูลนี้ต้องรวมอยู่ในคลาสโมเดล กล่าวอีกนัยหนึ่ง เพื่อให้ตารางของเราสามารถแสดงข้อมูลใดๆ ได้ เราต้องสร้างอินสแตนซ์ของโมเดลข้อมูลก่อน แล้วจึงส่งโมเดลนี้ไปยัง JTable โดยใช้ตัวสร้าง
การสร้างกรอบ
เราต้องคำนึงว่าJTableต้องการเฟรมที่สามารถแสดงได้ ดังนั้นต้องสร้างสิ่งนี้ก่อน และรวมข้อมูลเช่นตำแหน่งและขนาดของเฟรม ตลอดจนระบุว่าเฟรมจะแสดงหรือไม่ .
รหัสทั่วไปเพื่อให้บรรลุเป้าหมายนี้จะเป็น:
คลาสสาธารณะ JTable_Use {
โมฆะคงที่สาธารณะ main(String[] args) {
JFrame myframe=ใหม่ TableFrame() ;
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
myframe.setVisible(จริง) ;
}
}
คลาส TableFrame ขยาย JFrame {
TableFrame สาธารณะ () {
setTitle(“ข้อมูลผู้ใช้”);
setBounds(200,200,700,500) ;
}
}
โค้ดด้านบนสร้างเฟรมที่มองเห็นได้ซึ่งอยู่ที่ตำแหน่ง 200×200 และมีขนาด 700×500 พร้อมชื่อ User Data
ตอนนี้ เราจะสร้างตารางที่จะมีข้อมูลเกี่ยวกับผู้ใช้ ข้อมูลนี้จะประกอบด้วย ชื่อ นามสกุล เพศ และอายุ เพื่อจุดประสงค์ในตัวอย่างนี้
มีตัวสร้างหลายตัวที่เราสามารถใช้เพื่อเพิ่มข้อมูลลงในตารางที่เรากำลังสร้าง หนึ่งในคอนสตรัคเตอร์ที่ง่ายที่สุดอนุญาตให้ใช้อาร์เรย์ข้อมูลสองอาร์เรย์เป็นอาร์กิวเมนต์:
JTable(Object[] [] rowData, Object[] ชื่อคอลัมน์)
อย่างที่คุณเห็น นี่เป็นตัวสร้างอย่างง่ายสำหรับJTableที่ใช้เป็นอาร์กิวเมนต์ของพารามิเตอร์ตัวแรกที่เป็นอาร์เรย์ สองมิติ ของประเภทObjectซึ่งจะรวมข้อมูลที่สอดคล้องกับแต่ละแถว ( rowData ) และพารามิเตอร์ตัวที่สองด้วย เป็นอาร์เรย์แต่มีมิติเดียว ยังเป็นประเภทObject ซึ่ง จะรวมส่วนหัวหรือชื่อของคอลัมน์ ( columnName )
กล่าวโดยย่อ ถ้าเราต้องการใช้ตัวสร้างนี้ เราต้องประกาศอาร์เรย์ สอง ตัว ตัวหนึ่งมีสองมิติ และอีกตัวหนึ่งมีหนึ่งมิติ เราทำสิ่งนี้ภายในคลาสที่สร้างเฟรมเวิร์กที่แสดงไว้ด้านบน
เราจะเริ่มต้นด้วยการประกาศอาร์เรย์ที่สอดคล้องกับส่วนหัวของคอลัมน์ เนื่องจากเป็นข้อความจึงจะเป็นประเภทString ด้านล่างนี้ เราจะประกาศอาร์เรย์ สองมิติ ที่สอดคล้องกับข้อมูลที่จะแสดงในแต่ละแถวของตาราง การประกาศอาร์เรย์มีลักษณะดังนี้:
สตริงส่วนตัว [] columnheads={“ชื่อ”, “นามสกุล”, “เพศ”, “อายุ”} ;
สตริงส่วนตัว [] [] userData={
{“เอเดรียน่า”, “หยุด”, “F”, “21”},
{«จอห์น», «คาลามาโร», «M», «40»},
{«Rosalía», «เบอร์นาร์ด», « F « , « 67 « },
{“จูเลียนา”, “เปเรซ”, “F”, “36”},
{“อิสราเอล”, “กอนซาเลซ”, “M”, “36”}
};
ในรหัสนี้ เราได้ตั้งชื่ออาร์เรย์ที่มีชื่อของคอลัมน์ “cabezadasColumnas” และ “dataUsers” อาร์เรย์ สองมิติ ที่มีข้อมูลของผู้ใช้ห้ารายที่จะรวมอยู่ในตาราง
ตอนนี้เรามีข้อมูลที่เราต้องการให้JTableแสดงแล้ว เราจะใช้ Constructor เพื่อส่งข้อมูลนี้ไปยังJTable เราทำสิ่งนี้ภายใต้กรอบที่เราสร้างไว้ก่อนหน้านี้ เราต้องตั้งชื่อตารางของเรา ดังนั้นเราจะเรียกมันว่า userTable สำหรับตัวอย่างนี้:
JTable tablaUsuarios=ใหม่ JTable(dataUsers, headersColumns) ;
วิธีเพิ่มแถบเลื่อนและการจัดกึ่งกลาง
ณ จุดนี้ เรามีJTableที่แสดงตารางอย่างง่ายที่มี 4 คอลัมน์และ 6 แถว ซึ่งมีแถวแรกที่มีส่วนหัวของคอลัมน์ ตามด้วย 5 แถวที่มีข้อมูลของผู้ใช้ 5 คน อย่างไรก็ตาม ตารางนี้อาจไม่พอดีกับเฟรมขนาด 700×500 ที่เราสร้างขึ้นในตอนเริ่มต้น หรือหากพอดีในตอนนี้ เราอาจเพิ่มข้อมูลเกี่ยวกับผู้ใช้จำนวนมากขึ้นในภายหลัง และอาจไม่พอดีในที่สุด ในกรณีนี้ จะเป็นประโยชน์ในการเพิ่มแถบเลื่อนเพื่อให้แน่ใจว่าข้อมูลทั้งหมดในตารางสามารถมองเห็นได้
เราทำผ่านJScrollPane นอกจากนี้ยังสะดวกที่จะระบุตำแหน่งของตารางของเราภายในกรอบ สำหรับสิ่งนี้ เราใช้BorderLayoutดังนี้:
เพิ่ม (ใหม่ JScrollPane (userTable), BorderLayout.CENTER) ;
รหัสสุดท้าย
หลังจากเพิ่มส่วนทั้งหมดลงในโค้ดแล้ว ควรมีลักษณะดังนี้:
คลาสสาธารณะ JTable_Use {
โมฆะสาธารณะคงที่ main(String[] args) {
JFrame myframe=ใหม่ TableFrame() ;
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
myframe.setVisible(จริง) ;
}
}
คลาส TableFrame ขยาย JFrame {
TableFrame สาธารณะ () {
setTitle(“ข้อมูลผู้ใช้”);
setBounds(200,200,500,500) ;
JTable tablaUsuarios=ใหม่ JTable(dataUsers, headersColumns) ;
เพิ่ม (ใหม่ JScrollPane (userTable), BorderLayout.CENTER) ;
}
สตริงส่วนตัว [] columnheads={“ชื่อ”, “นามสกุล”, “เพศ”, “อายุ”} ;
สตริงส่วนตัว [] [] userData={
{“เอเดรียน่า”, “หยุด”, “F”, “21”},
{«จอห์น», «คาลามาโร», «M», «40»},
{«Rosalía», «เบอร์นาร์ด», « F « , « 67 « },
{“จูเลียนา”, “เปเรซ”, “F”, “36”},
{“อิสราเอล”, “กอนซาเลซ”, “M”, “36”}
};
}
จะเพิ่มฟังก์ชั่นอื่นๆ ได้อย่างไร?
นอกจากแถบเลื่อนแล้วJTableยังให้คุณเพิ่มฟังก์ชันไม่รู้จบสำหรับแอปพลิเคชันต่างๆ คุณสามารถเพิ่มความเป็นไปได้สำหรับผู้ใช้ในการจัดลำดับแถวตามที่คุณต้องการ คุณสามารถปรับเปลี่ยนลักษณะที่ปรากฏของตารางโดยการปรับเปลี่ยนสีพื้นหลังของเซลล์ แสดงหรือไม่แสดงเส้นขอบ และอื่นๆ
อ้างอิง
Abellán, J. (2007a, 4 กุมภาพันธ์). ตัวอย่างแอปเพล็ต TableModel สำหรับ JTable สืบค้นจาก http://www.chuidiang.org/java/tablas/tablamodelo/applettabla.php
Abellán, J. (2007b, 4 กุมภาพันธ์). ตัวอย่าง TableModel ใน JTable สืบค้นจาก http://www.chuidiang.org/java/tablas/tablamodelo/tablamodelo.php
ยาคอมพิวเตอร์ [pildorasinformaticas]. (2017, 20 กันยายน). หลักสูตรจาวา ภาคผนวก III JTable I. วิดีโอ 267 [ไฟล์วิดีโอ]. กู้คืนจาก https://www.youtube.com/watch?v=yH_g6QGFqes
Sensei, J. (2011, 24 มกราคม). วิธีเลือกแถวจาก Java JTable สืบค้นเมื่อ 13 กันยายน 2021 จาก http://jedicerocool.blogspot.com/2011/01/como-seleccionar-una-fila-de-un-jtable.html