JTable เป็นคลาสย่อยของ JComponent สร้างตาราง หลายแถวหลายคอลัมน์ เลือกค่าแล้วเกิด TableModelEvent จัดการด้วย TableModelListener กำหนดสีแถวสลับกัน (Alternate Row Color) โดย override prepareRenderer() ของ JTable
ไวยากรณ์
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
ตัวอย่าง: JTable สีแถวสลับกัน
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class AlternateRowColorTableTest extends JFrame {
public AlternateRowColorTableTest() {
setTitle("Alternate Row Color Table Test");
JTable table = new JTable(
new Object[][] {
{"115", "Ramesh"}, {"120", "Adithya"},
{"125", "Jai"}, {"130", "Chaitanya"}, {"135", "Raja"}
},
new String[] {"Employee Id", "Employee Name"}
) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
Color alternateColor = new Color(200, 201, 210);
Color whiteColor = Color.WHITE;
if (!comp.getBackground().equals(getSelectionBackground())) {
Color c = (row % 2 == 0) ? alternateColor : whiteColor;
comp.setBackground(c);
}
return comp;
}
};
add(new JScrollPane(table));
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new AlternateRowColorTableTest();
}
}
ผลลัพธ์

ตรรกะ: row % 2 == 0 ใช้สี alternateColor, row % 2 == 1 ใช้สีขาว ตรวจสอบ selection background ก่อนเพื่อไม่ทับสีการเลือก