참고 :이 코드는 제 것이 아니며 다른 사이트에서 가져 와서 수정하려고합니다.셀 렌더러를 사용자 정의하여 하나의 셀 색상을 변경 하시겠습니까?
세부 정보로드가있는 JTable이 있지만 첫 번째 셀의 색을 변경하기 위해 특정 셀을 변경할 때 유용합니다. 현재이 코드는 클릭 할 때 행을 강조 표시하지만 값을 다른 숫자로 변경하면 이름 셀이 빨간색으로 변경됩니다. 나는 몇 가지 (if 문)을 시도했지만 그것을 작동하지 않을 수 있습니다. 어떤 도움이라도 좋을 것입니다. 당신이 행 번호를 알고있는 경우
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
public class CustomCellRenderer{
JTable table;
TableColumn tcol;
public static void main(String[] args) {
new CustomCellRenderer();
}
public CustomCellRenderer(){
JFrame frame = new JFrame("Creating a Custom Cell Reanderer!");
JPanel panel = new JPanel();
String data[][] = {{"Vinod","Computer","3"},
{"Rahul","History","2"},
{"Manoj","Biology","4"},
{"Sanjay","PSD","5"}};
String col [] = {"Name","Course","Year"};
DefaultTableModel model = new DefaultTableModel(data,col);
table = new JTable(model);
tcol = table.getColumnModel().getColumn(0);
tcol.setCellRenderer(new CustomTableCellRenderer());
tcol = table.getColumnModel().getColumn(1);
tcol.setCellRenderer(new CustomTableCellRenderer());
tcol = table.getColumnModel().getColumn(2);
tcol.setCellRenderer(new CustomTableCellRenderer());
JTableHeader header = table.getTableHeader();
header.setBackground(Color.yellow);
JScrollPane pane = new JScrollPane(table);
panel.add(pane);
frame.add(panel);
frame.setSize(500,150);
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public class CustomTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table,
Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(
table, obj, isSelected, hasFocus, row, column);
if (isSelected) {
cell.setBackground(Color.green);
}
else {
if (row % 2 == 0) {
cell.setBackground(Color.lightGray);
}
else {
cell.setBackground(Color.lightGray);
}
}
return cell;
}
}
}
코드에 달성하려는 부분이 포함되어 있지 않은 것 같습니다. 렌더러는 스트라이핑 외에 아무것도하지 않고 먼저 비주얼을 결정해야하는 값에 따라 색상을 구현 한 다음 다시 칠할 필요가있는 셀을 다시 그려야합니다. – kleopatra