Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

กำหนดสีแถบสลับกันของ JTable ใน Java

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();
    }
}

ผลลัพธ์

กำหนดสีแถบสลับกันของ JTable ใน Java

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