2012-01-30 63 views
0

我已經創建了JTable。我從數據庫獲取值到JTable。我有問題,而點擊行時,它顯示圖像圖標路徑。無法顯示圖像。我如何設置圖像。如何在JTable中獲取圖像圖標

還有一件事我有兩個圖像1.指針圖像2.空白圖像在運行時指針圖像在第一行默認情況下,然後我點擊第5行,第一行應設置空白圖像,第5行應該設置指針圖像。我不知道它在DefaultCellRender中的可能性。

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

請問你的問題是什麼/ – mKorbel 2012-01-30 11:00:38

+0

我的問題是我有兩個圖像,一個指針圖像另一個空白圖像。同時點擊Jtable指針圖像應該在第一行。之後,我點擊第7行,空白圖像(集)替換第一行,指針圖像設置在第7行。 – starjava 2012-01-30 11:04:37

+0

我添加了JTable和HomeWork標籤,請回復如果不是... – mKorbel 2012-01-30 11:08:35

回答

3

你可以把Icon/ImageIcon直接到小區,因爲JTable知道這Object's typeColumnClass,一樣String, Number, Boolean和E.I.

+0

如果我直接放入單元格。但它不顯示圖像,而不顯示圖像路徑。是否可以使用DefaultTableCellRenderer可以工作。它是如何工作的。 – starjava 2012-01-30 11:32:07

+0

有關示例代碼,請參見[文件瀏覽器GUI](http://codereview.stackexchange.com/questions/4446/file-browser-gui)。 – 2012-01-30 11:52:34

+0

感謝Andrew作爲代碼作者的最佳代碼之一 – mKorbel 2012-01-30 11:56:46