2012-01-30 5 views
0

나는 JTable을 만들었습니다. 나는 DB에서 JTable로 값을 얻는다. 행을 클릭하면 이미지 아이콘 경로를 표시하는 동안 문제가 발생합니다. 이미지를 표시 할 수 없습니다. 어떻게 내가 이미지를 설정할 수 있습니다.JTable에서 이미지 아이콘을 얻는 방법

두 가지 이미지가 하나 더 있습니다. 포인터 이미지 2. 빈 이미지 런타임에 포인터가 기본적으로 첫 번째 행의 포인터 이미지에서 5 번째 행을 클릭하면 첫 번째 행이 빈 이미지로 설정되어야합니다. , 다섯 번째 행은 포인터 이미지로 설정되어야합니다. 그리고 DefaultCellRender에서 가능한지 모르겠습니다. JTableString, Number, Boolean 및 E.I.과 동일한 ColumnClassObject's type을 알고 있기 때문에

package ex10012012; 

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


public class frame10012012 extends javax.swing.JFrame { 

    private DefaultTableModel TmpFlxMdl; 
    private TableColumn TmpFlxColumn; 
    private int TmpRow,TmpFlxDRow; 
    private TableColumn TmpFlxCol; 
    private Statement TmpFlxSt=null; 
    private ResultSet TmpFlxDRs=null; 
    GENLMODL TmpGenModl= new GENLMODL(); 
    FrmM01011 TmpFrmM0101 = new FrmM01011(); 

    public frame10012012() { 
     initComponents();    
    }       

    private void FlxDMouseClicked(java.awt.event.MouseEvent evt) {         

      if(evt.getClickCount()==2) 
      { 
       setVisible(false); 
       FlxD.setRowSelectionAllowed(true); 
       int row=FlxD.getSelectedRow(); 
       int modelRow = FlxD.convertRowIndexToModel(row); 
       Object oc= FlxD.getModel().getValueAt(modelRow, 1); 
       String TempStr=oc.toString(); 
       TmpFlxMdl =(DefaultTableModel)FlxD.getModel(); 
       try{ 
           } 
       catch(Exception e){ 
       System.out.println(e); 
       } 
       TmpFrmM0101.setVisible(true); 

      } 
      else{ 
       FRM_FLXD_PTR_DATA_ASSGN(FlxD.getSelectedRow());        
     }  
    } 

    public void Frm_FlxD_Database() { 
      try{ 
      TmpRow=0; 
      TmpGenModl.PRJ_DB_CONNECTION_ASSGN(); 
      TmpFlxMdl =(DefaultTableModel)FlxD.getModel(); 
      TmpFlxDRow = 2; 

      TmpFlxSt=TmpGenModl.GContcn.createStatement(); 
      TmpFlxDRs=TmpFlxSt.executeQuery("SELECT * from ActivityMaster"); 
      PRJ_FLX_DEFTL_ASSGN(FlxD, "BEGIN"); 
      TmpFlxDRs.first(); 
      do { 
       FlxD.setValueAt(TmpFlxDRs.getString("ActvtyDesc"), TmpRow,1); 
       FlxD.setValueAt(TmpFlxDRs.getString("ActvtyCode"), TmpRow,2); 
       FlxD.setValueAt(TmpFlxDRs.getString("ActvtyDispStatus"), TmpRow,3); 
       FlxD.setValueAt(TmpFlxDRs.getString("ActvtyId"), TmpRow,4); 
       TmpFlxMdl.addRow(new Object[]{""}); 
       TmpRow = TmpRow + 1; 
      }while(TmpFlxDRs.next()); 
      FRM_FLXD_PTR_DATA_ASSGN(TmpFlxDRow); 
    } 
     catch(Exception e){ 
      System.out.println(e); 
     } 
    } 

    private void PRJ_FLX_DEFTL_ASSGN(JTable PFlx, String POptnStr){ 
      int TmpRow; 
      DefaultTableModel TmpFlxMdl = new DefaultTableModel(); 
      TmpFlxMdl = (DefaultTableModel) PFlx.getModel(); 

      if (POptnStr == "BEGIN") {    
       for (TmpRow=2; TmpRow<=TmpFlxMdl.getRowCount(); TmpRow++) { 
        TmpFlxMdl.removeRow(TmpRow); 
       } 

      }else if(POptnStr == "END"){ 
        TmpRow = TmpFlxMdl.getRowCount(); 
        TmpFlxMdl.removeRow(TmpRow); 
      } 
    } 

    private void FRM_FLXD_PTR_DATA_ASSGN(int PFlxRow) { 
      //System.out.println(TmpFlxDRow); 
      TmpFlxDRow = PRJ_FLX_PTR_ASSGN(FlxD, PFlxRow, TmpFlxDRow); 
    } 

    private int PRJ_FLX_PTR_ASSGN(JTable PFlx, int PCurRow, int PPrvRow){ 
      ImageIcon TmpIcon; 
      System.out.println(PCurRow); 
      System.out.println(PPrvRow); 

      if (PCurRow != PPrvRow){ 
       TmpIcon = new ImageIcon(getClass().getResource("Blank.gif")); 
       PFlx.setValueAt(PCurRow,0); 
      } 
      TmpIcon = new ImageIcon(getClass().getResource("Pointer.gif")); 
      PFlx.setValueAt(TmpIcon, PCurRow,0); 

      return(PCurRow); 
    } 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
        frame10012012 TmpFrame= new frame10012012(); 
        TmpFrame.Frm_FlxD_Database(); 
        TmpFrame.setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton CmdAdd; 
    private javax.swing.JButton CmdBack; 
    private javax.swing.JButton CmdDelete; 
    private javax.swing.JTable FlxD; 
    private javax.swing.JLabel Lbl01; 
    private javax.swing.JLabel Lbl02; 
    private javax.swing.JRadioButton Rbtn01; 
    private javax.swing.JTextField Txt01; 
    private javax.swing.JTextField Txt02; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel jPanel2; 
    private javax.swing.JPanel jPanel3; 
    private javax.swing.JScrollPane jScrollPane1; 
    // End of variables declaration 
} 
+0

제발/질문/s입니다 – mKorbel

+0

내 질문은 두 개의 이미지, 하나의 포인터 이미지를 다른 빈 이미지가 있습니다. Jtable을 클릭하는 동안 포인터 이미지는 첫 번째 행에 있어야합니다. 그 후 7 행을 클릭하면 빈 행 (세트)이 첫 번째 행에서 대체되고 포인터 이미지는 7 행에서 설정됩니다. – starjava

+0

JTable 및 HomeWork 태그를 추가했습니다. 그렇지 않은 경우 되돌려주십시오. – mKorbel

답변

3

당신은, 셀에 직접 Icon/ImageIcon를 넣을 수 있습니다

+0

을 사용하십시오. 하지만 그것은 이미지 경로를 보여주는 대신 이미지를 보여주지 않습니다. 사용 가능한 DefaultTableCellRenderer 사용할 수 있습니다. 그것이 어떻게 일할 수 있는지. – starjava

+0

예제 코드는 [파일 브라우저 GUI] (http://codereview.stackexchange.com/questions/4446/file-browser-gui)를 참조하십시오. –

+0

Andrew는 코드 작성자로서 최고의 코드를 사용합니다. – mKorbel

관련 문제