На самом деле у меня есть JTable
, в котором один Column
имеет ComboBox
, я хочу изменить значения JTable
ComboBox
во время выполнения на событии CheckBox
изменение значения,Я вызываю функцию, которая возвращает мне новые значения для комбо, но значения не меняются.util.RefreshReplicatedDataAndHeader(true,objVector,-1,this, jScroll_ProductStone.getName());
- это функция, которая возвращает мне JTable
данные.Он звонит AddComboBoxForJTable
.Я предоставляю ту часть кода, которую я использую для изменения значений комбо и фактическую функцию, которая дает мне комбо JTable с измененным значением.Заранее большое спасибо за решение проблемы.
if (thaiFlag)
{
combo_Id_Name_tbl.add("Setting");// Table Name
combo_Id_Name_tbl.add("SetID"); //Combo Id
combo_Id_Name_tbl.add("SetThaiName");// Combo Val
combo_Id_Name_tbl.add("Setting"); // Identifer Of Table For Two Combo FromSameTable
combo_Id_Name_tbl.add("Please select required Setting For Selected Lot");
combo_Id_Name_tbl.add("SetID");// ColId For Selected Combo
combo_Id_Name_tbl.add("SetName"); // Col Val For Selected Combo
combo_Id_Name_tbl.add("N/A"); // Col Id For Non JTable Selected Cobo
combo_Id_Name_tbl.add("N/A"); // Combo Filter Col Name
combo_Id_Name_tbl.add("N/A"); // Combo Filter Col Value
ColId_Val_Identifier_TableName_ForCombo.add(combo_Id_Name_tbl);
}
else
{
combo_Id_Name_tbl.add("Setting");// Table Name
combo_Id_Name_tbl.add("SetID"); //Combo Id
combo_Id_Name_tbl.add("SetName");// Combo Val
combo_Id_Name_tbl.add("Setting"); // Identifer Of Table For Two Combo From Same Table
combo_Id_Name_tbl.add("Please select required Setting For Selected Lot");
combo_Id_Name_tbl.add("SetID");// ColId For Selected Combo
combo_Id_Name_tbl.add("SetName"); // Col Val For Selected Combo
combo_Id_Name_tbl.add("N/A"); // Col Id For Non JTable Selected Cobo
combo_Id_Name_tbl.add("N/A"); // Combo Filter Col Name
combo_Id_Name_tbl.add("N/A"); // Combo Filter Col Value
ColId_Val_Identifier_TableName_ForCombo.add(combo_Id_Name_tbl);
}
TableColumnModel tcm = jtblSizeInfo.getColumnModel();
objVector=null;
objVector=new Vector<Object>();
objVector.add(data_SizeInfo);
objVector.add(header_SizeInfo);
objVector.add(data_ForSave_SizeInfo);
objVector.add(colHeader_ForSave_SizeInfo);
objVector.add(AddedCols_Name_Pos);
objVector.add(ColId_Val_Identifier_TableName_ForCombo);
objVector.add(tcm);
Vector<Object> objResultVector = util.RefreshReplicatedDataAndHeader(true, objVector,-1, this, jScroll_ProductStone.getName());
data_SizeInfo =(Vector<Vector<String>>)objResultVector.get(0) ;
header_SizeInfo=(Vector<String>)objResultVector.get(1) ;
data_ForSave_SizeInfo =(Vector<Vector<String>>)objResultVector.get(2) ;
colHeader_ForSave_SizeInfo=(Vector<String>)objResultVector.get(3) ;
TableColumnModel tcm1 = (TableColumnModel)objResultVector.get(4);
// Column Model Is used to get the Columns And Action Listnner Added In Utility Form
Vector<TableColumn> vtc = new Vector<TableColumn>();
int colCount_Ref = tcm.getColumnCount();
for (int i=0;i<colCount_Ref;i++ )
{
vtc.add(tcm.getColumn(i));
}
for (int i=0;i<vtc.size();i++ )
{
tcm.removeColumn(vtc.get(i) );
}
for (int i=0;i<tcm1.getColumnCount();i++ )
{
tcm.addColumn(tcm1.getColumn(i));
}
jtblSizeInfo.setColumnModel(tcm);
jtblSizeInfo.repaint();
jtblSizeInfo.revalidate();
}
Код для добавления поля со списком для JTable выглядит следующим образом:
public void AddComboBoxForJTable( int colIndex,Vector<String>vectTable_JtblColIdVal_ComboIdentify, int selectedRow,Object currentFormObj,String currentJScrollPane )
{
////// JComboBox comboBox=null;
try
{
String tableName =vectTable_JtblColIdVal_ComboIdentify.get(0);
String comboId =vectTable_JtblColIdVal_ComboIdentify.get(1);
String comboValue =vectTable_JtblColIdVal_ComboIdentify.get(2);
String comboIdentifier =vectTable_JtblColIdVal_ComboIdentify.get(3);
String comboFilterColName =vectTable_JtblColIdVal_ComboIdentify.get(8);
String comboFilterColValue =vectTable_JtblColIdVal_ComboIdentify.get(9);
Vector<String> comboFilter =new Vector<String>();
comboFilter.add(comboFilterColName);
comboFilter.add(comboFilterColValue);
Vector<Vector<String>> comboData=new Vector<Vector<String>>();
//JComboBox comboBox;
DBEngine dbe = new DBEngine();
if (comboFilterColName.equals("N/A"))
{
comboData = dbe.getComboData(tableName, comboId, comboValue,comboValue);
}
else
{
comboData = dbe.getComboData(tableName, comboId, comboValue,comboValue,comboFilter);
}
Vector model = new Vector();
for (int i =0;i<comboData.size();i ++)
{
// model.addElement( new CustomizedComboBox(3, "train" ) );
String id =comboData.get(i).elementAt(0).toString();
String data= comboData.get(i).elementAt(1).toString();
Item_ it= new Item_(id,data );
model.addElement( it );
}
JComboBox comboBox = new JComboBox( model );
MyActionListenerForJtableCombo_Utility actionListener = new MyActionListenerForJtableCombo_Utility(
vectTable_JtblColIdVal_ComboIdentify, selectedRow, currentFormObj, currentJScrollPane);
actionListener.util=this;
actionListener.tableName=tableName;
comboBox.addActionListener(actionListener);
// DefaultTableModel tblModel = (DefaultTableModel)jtblUtilities.getModel();
TableColumn column= jtbl_General.getColumnModel().getColumn(colIndex);
column.setCellEditor(new javax.swing.DefaultCellEditor(comboBox));
}
catch (Exception ex)
{
ex.printStackTrace();
// Logger.getLogger(ComboBoxEditor.class.getName()).log(Level.SEVERE, null, ex);
}
}