문제

나는 가지고있다 jTable1 2개의 열이 있습니다.열 1 모양을 제어하고 싶기 때문에 다음 코드를 사용하여 셀의 텍스트 글꼴을 굵게 설정하거나 셀 행이 짝수인지 홀수인지에 따라 설정하지 않습니다.

import java.awt.Component;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class CustomTableCellRenderer extends DefaultTableCellRenderer{
@Override
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 (row % 2 == 0){
            cell.setFont(getFont().deriveFont(Font.BOLD));
        }
        return cell;
    }
}

나는 다음을 사용하여 그것을 호출합니다:

jTable1.getColumnModel().getColumn(1).setCellRenderer(new 
CustomTableCellRenderer());

내가 원하는 것은 이것을 수정하는 것입니다 TableCellRenderer 셀 배경은 같은 행의 다른 열(열 0) 값을 기준으로 그려집니다.예를 들어, 열 0의 값이 5행이 "book"이면 열 1, 행 5의 셀이 빨간색이 되고, 열 0의 값이 "신문"이면 열 1의 색상이 녹색이 ​​됩니다.내 문제는 컬럼0 값을 컬럼1 렌더러에 전달하여 색상을 변경하는 데 사용되는 방법을 모른다는 것입니다.

도움이 되었습니까?

해결책 3

다른 열 데이터에 액세스하는 방법을 찾았습니다.

import java.awt.Component;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class CustomTableCellRenderer extends DefaultTableCellRenderer{
@Override
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 );

    //I USE THIS TO ACCESS THE DATA FROM ANOTHER CELL!!!
    TableModel model = table.getModel();
    String media= (String) model.getValueAt(row, 0)


    if (row % 2 == 0){
        cell.setFont(getFont().deriveFont(Font.BOLD));
    }


   //SO I GET THE RESULT I WANT
   if ("book".equals(media)){
     cell.setBackground(Color.red)  
   }
   else{
     cell.setBackground(Color.green)
   }  



    return cell;
}
}

다른 팁

서명을 확인하세요. .getTableCellRendererComponent(...) 방법:TableModel을 얻을 수 있는 JTable에 대한 참조와 현재 행 및 열의 인덱스를 얻습니다.

이를 사용하면 원하는 상대 값을 찾을 수 있습니다.

보여진 바와 같이 여기, 재정의할 수 있습니다. prepareRenderer() 전체 행에 영향을 미칩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top