런타임에 JTable의 특정 행에 대한 배경색 설정

사용자 3331894

netbeans IDE7.4로 작업 중이며 JTable런타임에 행을 추가 하고 있으며 이제 특정 행의 배경색을 설정하고 싶습니다.

이제 문제는 해당 행의 값이 변경 될 때 해당 특정 행의 색상이 변경되지 않고 테이블을 위아래로 스크롤하면 변경 사항이 적용된다는 것입니다.

런타임에 테이블을 새로 고치는 방법은 무엇입니까? 런타임에 특정 행의 배경색을 설정하는 방법은 무엇입니까?

이것은 특정 행을 채색하는 데 사용하는 렌더러 클래스입니다.

public class MyCellRenderer extends javax.swing.table.DefaultTableCellRenderer
    {         
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected,     boolean hasFocus, int row, int column)
   {
   final java.awt.Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,        column);

     Object val=table.getValueAt(row, 2);
     String sval=val.toString();
     sval=sval.replaceAll(":","");
     int ival=Integer.parseInt(sval);
  if(ival==0) 
    {  
        cellComponent.setForeground(Color.black);          
        cellComponent.setBackground(Color.red);              

    }      
    else  
    {      
        cellComponent.setBackground(Color.white);      
        cellComponent.setForeground(Color.black);      
    }    
    if (isSelected)
   {
    cellComponent.setForeground(table.getSelectionForeground());                             cellComponent.setBackground(table.getSelectionBackground());
   }


      return cellComponent;

 }


 }

다음과 같이 jtable에 할당하고 있습니다.

    newViewTable.setDefaultRenderer(Object.class,new MyCellRenderer());

newViewTable은 JTable의 이름입니다.

MadProgrammer

어느 시점에서 어떤 방식 으로든 내용이 변경되었음을 표에 알려야합니다.

TableModel기반을 사용하는 경우 예를 들어 이벤트를 AbstractTableModel사용할 수 있습니다 . 그러면 모델이 변경되었음을 알리고 테이블을 다시 그립니다.fireTableXxxfireTableCellUpdate(row, col)JTable

fireTablesRowsUpdated이로 인해 JTable전체 행이 업데이트 되므로 사용을 고려할 수 있습니다 .

당신이 사용하는 경우 setValueAt값을 변경 모델에 적절한 이벤트 트리거를 호출해야합니다 ...

실행 예제로 업데이트 됨

따라서 MyCellRenderer렌더러를 기반 으로이 예제를 수행했는데 제대로 작동합니다.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

public class TestTable {

    public static void main(String[] args) {
        new TestTable();
    }

    public TestTable() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                final DefaultTableModel model = new DefaultTableModel(
                        new Object[]{"A", "B", "C"}, 
                        0
                );

                model.addRow(new Object[]{"A", "B", "1"});
                model.addRow(new Object[]{"C", "D", "0"});
                model.addRow(new Object[]{"E", "F", "1"});
                model.addRow(new Object[]{"G", "H", "0"});

                JTable table = new JTable(model);
                table.setDefaultRenderer(Object.class, new MyCellRenderer());

                JButton btn = new JButton("Add");
                btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        model.addRow(new Object[]{"N", "O", (int)(Math.round(Math.random() * 1))});
                    }
                });

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(table));
                frame.add(btn, BorderLayout.SOUTH);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class MyCellRenderer extends javax.swing.table.DefaultTableCellRenderer {

        public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            final java.awt.Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

            Object val = table.getValueAt(row, 2);
            String sval = val.toString();
            sval = sval.replaceAll(":", "");
            int ival = Integer.parseInt(sval);
            if (ival == 0) {
                cellComponent.setForeground(Color.black);
                cellComponent.setBackground(Color.red);

            } else {
                cellComponent.setBackground(Color.white);
                cellComponent.setForeground(Color.black);
            }
            if (isSelected) {
                cellComponent.setForeground(table.getSelectionForeground());
                cellComponent.setBackground(table.getSelectionBackground());
            }

            return cellComponent;

        }

    }

}

이제 문제는 무엇을 다르게하고 있습니까 ??

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JTable에 지정된 셀의 배경색 설정

분류에서Dev

Gnuplot에서 키에 대한 사용자 정의 배경색 설정

분류에서Dev

Hangfire-런타임에 특정 RecurringJob에 대한 AutomaticRetry 구성

분류에서Dev

Linux에 특정 버전의 .NET Core 런타임 설치

분류에서Dev

런타임에 임의의 테마 색상을 설정하는 방법

분류에서Dev

JMX에 대한 런타임 설정 JVM 인수

분류에서Dev

런타임에 무작위 분포 클래스 멤버에 대한 최소 및 최대 경계 설정?

분류에서Dev

루프의 <tr>에 배경색 설정

분류에서Dev

루프의 <tr>에 배경색 설정

분류에서Dev

Pandas 데이터 프레임 행의 특정 열에 대한 값 설정

분류에서Dev

C99 이전의 런타임 결정 크기 배열에 대한 포인터

분류에서Dev

특정 값에 대한 배열 검색

분류에서Dev

MATLAB 행렬식 함수의 특정 결과에 대한 설명

분류에서Dev

컴파일 타임에 값의 런타임 유형에 대한 정보에 어떻게 액세스합니까?

분류에서Dev

Java의 jtable에서 특정 행 강조

분류에서Dev

배열의 특정 열에 대한 계산 수행

분류에서Dev

JColorChooser를 사용하여 JTable의 행에 색상 설정

분류에서Dev

특정 길이의 특정 문자열에 대한 C # 검색

분류에서Dev

Matplotlib imshow에서 특정 값에 대한 색상 설정

분류에서Dev

런타임에 샌드 박스 앱에 대한 DYLD 변수 설정

분류에서Dev

배경의 일부에만 배경색 설정

분류에서Dev

Serilog, 특정 네임 스페이스에 대해 런타임시 로그 수준 변경 (> MinimumLevel)

분류에서Dev

QMenu : 특정 QAction에 대한 텍스트 색상 설정

분류에서Dev

사용자 정의 DefaultTableCellRenderer가 jTable에서 행의 배경색을 변경하지 않음

분류에서Dev

동적 TableView에서 하나의 셀에 대한 배경 설정

분류에서Dev

런타임에 배열 크기 수정

분류에서Dev

CSV에서 특정 열에 대한 행을 임의로 선택

분류에서Dev

특정 양식에 대한 유효성 검사 설정 변경

분류에서Dev

MFC C ++의 컨트롤에 대한 배경색을 설정할 수 없습니다.

Related 관련 기사

  1. 1

    JTable에 지정된 셀의 배경색 설정

  2. 2

    Gnuplot에서 키에 대한 사용자 정의 배경색 설정

  3. 3

    Hangfire-런타임에 특정 RecurringJob에 대한 AutomaticRetry 구성

  4. 4

    Linux에 특정 버전의 .NET Core 런타임 설치

  5. 5

    런타임에 임의의 테마 색상을 설정하는 방법

  6. 6

    JMX에 대한 런타임 설정 JVM 인수

  7. 7

    런타임에 무작위 분포 클래스 멤버에 대한 최소 및 최대 경계 설정?

  8. 8

    루프의 <tr>에 배경색 설정

  9. 9

    루프의 <tr>에 배경색 설정

  10. 10

    Pandas 데이터 프레임 행의 특정 열에 대한 값 설정

  11. 11

    C99 이전의 런타임 결정 크기 배열에 대한 포인터

  12. 12

    특정 값에 대한 배열 검색

  13. 13

    MATLAB 행렬식 함수의 특정 결과에 대한 설명

  14. 14

    컴파일 타임에 값의 런타임 유형에 대한 정보에 어떻게 액세스합니까?

  15. 15

    Java의 jtable에서 특정 행 강조

  16. 16

    배열의 특정 열에 대한 계산 수행

  17. 17

    JColorChooser를 사용하여 JTable의 행에 색상 설정

  18. 18

    특정 길이의 특정 문자열에 대한 C # 검색

  19. 19

    Matplotlib imshow에서 특정 값에 대한 색상 설정

  20. 20

    런타임에 샌드 박스 앱에 대한 DYLD 변수 설정

  21. 21

    배경의 일부에만 배경색 설정

  22. 22

    Serilog, 특정 네임 스페이스에 대해 런타임시 로그 수준 변경 (> MinimumLevel)

  23. 23

    QMenu : 특정 QAction에 대한 텍스트 색상 설정

  24. 24

    사용자 정의 DefaultTableCellRenderer가 jTable에서 행의 배경색을 변경하지 않음

  25. 25

    동적 TableView에서 하나의 셀에 대한 배경 설정

  26. 26

    런타임에 배열 크기 수정

  27. 27

    CSV에서 특정 열에 대한 행을 임의로 선택

  28. 28

    특정 양식에 대한 유효성 검사 설정 변경

  29. 29

    MFC C ++의 컨트롤에 대한 배경색을 설정할 수 없습니다.

뜨겁다태그

보관