나는 JTable을 만들었습니다. 나는 DB에서 JTable로 값을 얻는다. 행을 클릭하면 이미지 아이콘 경로를 표시하는 동안 문제가 발생합니다. 이미지를 표시 할 수 없습니다. 어떻게 내가 이미지를 설정할 수 있습니다.JTable에서 이미지 아이콘을 얻는 방법
두 가지 이미지가 하나 더 있습니다. 포인터 이미지 2. 빈 이미지 런타임에 포인터가 기본적으로 첫 번째 행의 포인터 이미지에서 5 번째 행을 클릭하면 첫 번째 행이 빈 이미지로 설정되어야합니다. , 다섯 번째 행은 포인터 이미지로 설정되어야합니다. 그리고 DefaultCellRender에서 가능한지 모르겠습니다. JTable이 String, Number, Boolean
및 E.I.과 동일한 ColumnClass
이 Object'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
}
제발/질문/s입니다 – mKorbel
내 질문은 두 개의 이미지, 하나의 포인터 이미지를 다른 빈 이미지가 있습니다. Jtable을 클릭하는 동안 포인터 이미지는 첫 번째 행에 있어야합니다. 그 후 7 행을 클릭하면 빈 행 (세트)이 첫 번째 행에서 대체되고 포인터 이미지는 7 행에서 설정됩니다. – starjava
JTable 및 HomeWork 태그를 추가했습니다. 그렇지 않은 경우 되돌려주십시오. – mKorbel