2013-05-02 3 views
-1

숫자가있는 JTable이 있습니다. 나는 한 세포 또는 모든 세포의 색깔을 바꾸는 법을 안다. 하지만 어떻게 세포의 색깔을 바꾸고 그것을 움직이게할까요? 예를 들어 빨간색의 첫 번째 셀에는 지연이 있고 두 번째 셀에는 같은 빨강 색이 칠해집니다. 내가 수업하는 DefaultTableCellRenderer을 상속JTable에서 셀의 색상을 변경하고 애니메이션을 적용하는 방법은 무엇입니까?

class paintCell extends DefaultTableCellRenderer { 
    public Component getTableCellRendererComponent(JTable table, 
      Object value, boolean isSelected, boolean hasFocus, int row, 
      int column) { 
     Component c = super.getTableCellRendererComponent(table, value, 
       isSelected, hasFocus, row, column); 
     return c; 
    } 
} 

및 설정 방법 table.setDefaultRenderer (Object.class를, 새로운 paintCell());

+1

당신은'테이블마다 NN에 재 페인트를()'호출 Timer''를 기반으로 스윙을 확립 시도 할 수 있습니다 렌더러가 호출 될 때마다 셀 색상을 조정합니다. 이를 기반으로 작동시키지 못한다면 최선의 시도를 [SSCCE] (http://sscce.org/)에 게시하십시오. –

답변

1
private JTable table; 
private int index; 
private void startAnimation() { 
    Timer timer = new Timer(1000, new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      index++; 
      if (index > table.getRowCount() * table.getColumnCount()) 
       index = 0; 
      table.repaint(); 
     } 
    }); 
    timer.setRepeats(true); 
    timer.start(); 
} 
class PaintCell extends DefaultTableCellRenderer { 
    private static final long serialVersionUID = 1L; 
    public Component getTableCellRendererComponent(JTable table, 
      Object value, boolean isSelected, boolean hasFocus, int row, 
      int column) { 
     Component c = super.getTableCellRendererComponent(table, value, 
       isSelected, hasFocus, row, column); 
     int id = row * table.getRowCount() + column; 
     c.setBackground(id < index ? Color.RED : null); 
     return c; 
    } 
} 

(SeniorJD 나보다 빠르다 ...하지만 그의 대답하지 않고 코드를 작성)

+0

도움 주셔서 감사합니다! –

1

javax.swing.Timer 개체를 만듭니다. PaintCell 렌더러 클래스에 int pointer 필드를 추가하고 Timer.actionPerfomed()에서 이미지를 늘리십시오. 그런 다음 PaintCell.getTableCellRendererComponent 메서드에서 value 매개 변수를 int 유형으로 캐스팅하고 (셀에 숫자가 있음) pointer 필드와 비교합니다. equals or less 인 경우 셀 backgroundred으로 설정하십시오.

+0

도움 주셔서 감사합니다! –

관련 문제