2014-04-23 3 views
0

정상적으로 작동하는 jtable이 있습니다. 표에는 작업이 나열되고 각 작업에는 연결된 상태가 표시됩니다.상태 이미지를 기본으로 추가하는 방법 jTable java Netbeans

모든 상태가 이미지와 관련되기를 바랍니다.

이미지가 아래 표와 같이 표에 표시됩니다.

------ JTable에 대한 코드 ----------

DefaultTableModel tmSubTask = new DefaultTableModel(null, new String[]{"Status", "Priority", "Task", "SubTask", "Desc", "Prevision Begin", "Time", "Prevision Duration", "Prevision hour", "Begin", "Hour Begin","End Date" ,"End Hour", "Duration"}); 
List<SubTask> subTask; 
ListSelectionModel lsmSubTask; 

Connection conexao = null; 
PreparedStatement pst= null; 
ResultSet rs = null; 

private void showSubTask(List<SubTask> subTask) { 
    while (tmSubTask.getRowCount() > 0) { 
     tmSubTask.removeRow(0); 
    } 
    if (subTask.size() == 0) { 
     JOptionPane.showMessageDialog(null, "showSubTask"); 
    } else { 
     String[] line = new String[]{null, null, null}; 
     for (int i = 0; i < SubTask.size(); i++) { 
     tmSubTask.addRow(linha); 
     tmSubTask.setValueAt(subTask.get(i).getStatus(), i, 0); 
     tmSubTask.setValueAt(subTask.get(i).getIdPriority(), i, 1); 
     tmSubTask.setValueAt(subTask.get(i).getIdTask(), i, 2); 
     tmSubTask.setValueAt(subTask.get(i).getIdSubTask(), i, 3); 
     tmSubTask.setValueAt(subTask.get(i).getDescSubTask(), i, 4); 
     tmSubTask.setValueAt(subTask.get(i).getDateBegin(), i, 5); 
     tmSubTask.setValueAt(subTask.get(i).getTerm(), i, 6); 
     tmSubTask.setValueAt(subTask.get(i).getDuration(), i, 7); 
     tmSubTask.setValueAt(subTask.get(i).gethourBeginP(), i, 8); 
     tmSubTask.setValueAt(subTask.get(i).getDateBegin(), i, 9); 
     tmSubTask.setValueAt(subTask.get(i).getHourBegin(), i, 10); 
     tmSubTask.setValueAt(subTask.get(i).getDateEnd(), i, 11); 
     tmSubTask.setValueAt(subTask.get(i).getHourEnd(), i, 12); 
     tmSubTask.setValueAt(subTask.get(i).getDuration(), i, 13); 

     } 
    } 
} 

-------------- -jTable --------------

enter image description here

--------------- 내가 원하는 무엇 ------- -

enter image description here

jTable의 지연과 같은 상태가 빨간색을 표시하는 경우를 상상해보십시오.

솔직히 어디서부터 시작해야할지 모르겠다.

나는 분명히하지 않으면 사과드립니다.

나에게 줄 수있는 모든 도움에 감사드립니다.

인사말.

질문에 대해서는 가능한 한 최선을 다해 설명 드리겠습니다.

답변

0

ImageIcon을 테이블에 추가하고 JTable의 getColumnClass(...) 메서드를 재정 의하여 Icon.class를 반환하면 테이블에서 적절한 렌더러를 사용하여 아이콘을 표시합니다. 다음과 같음 :

import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.*; 

public class TableIcon extends JFrame 
{ 
    public TableIcon() 
    { 
     Icon aboutIcon = new ImageIcon("about16.gif"); 
     Icon addIcon = new ImageIcon("add16.gif"); 
     Icon copyIcon = new ImageIcon("copy16.gif"); 

     String[] columnNames = {"Picture", "Description"}; 
     Object[][] data = 
     { 
      {aboutIcon, "About"}, 
      {addIcon, "Add"}, 
      {copyIcon, "Copy"}, 
     }; 

     DefaultTableModel model = new DefaultTableModel(data, columnNames); 
     JTable table = new JTable(model) 
     { 
      // Returning the Class of each column will allow different 
      // renderers to be used based on Class 
      public Class getColumnClass(int column) 
      { 
       return getValueAt(0, column).getClass(); 
      } 
     }; 
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

     JScrollPane scrollPane = new JScrollPane(table); 
     getContentPane().add(scrollPane); 

     new TableRowResizer(table); 

     table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
     TableColumnAdjuster tca = new TableColumnAdjuster(table); 
     tca.adjustColumns(); 
    } 

    public static void main(String[] args) 
    { 
     TableIcon frame = new TableIcon(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

} 
관련 문제