JTable with JComboBox
Hi friends,
I am adding JComboBox in JTable its working properly
But data is not adding dynamically to JComboBox
I am Sending my Code plz give me reply
I am Struggleing from 1 week on wards
package com.dnt.autopopulation;
import javax.swing.*;
import java.awt.*;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import java.awt.event.*;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.TableModelEvent;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Locale;
import java.text.SimpleDateFormat;
import java.util.Vector;
import javax.swing.border.*;
import com.dnt.eaip.Connectmagr;
import com.dnt.eaip.*;
import com.dnt.util.*;
import javax.swing.plaf.ButtonUI;
import com.dnt.admin.EndStartDateCheck;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
public class AutoPopRollBack extends JPanel {
boolean selection = false;
public static final int HAND_CURSOR = 12;
Cursor cursor = new Cursor(HAND_CURSOR);
int selectedRow = -1;
ImageIcon headertop1 = new ImageIcon("./images/k2topbar.gif");
JLabel HeaderLabe = new JLabel(headertop1);
Border border1 = new EtchedBorder(EtchedBorder.RAISED, Color.white, Color.blue);
Border border2 = BorderFactory.createBevelBorder(BevelBorder.RAISED,
new Color(154, 254, 211), new Color(108, 178, 148),
new Color(37, 60, 50), new Color(53, 87, 72));
DefaultTableModel dm = new DefaultTableModel();
Vector searchlist = new Vector();
Vector rows = new Vector();
Vector returnList;
Connectmagr objConnectmagr = new Connectmagr();
JFrame frame = new JFrame();
JLabel headlab = new JLabel();
JCalendarComboBox EndDateTxt;
JLabel HawbLab = new JLabel();
JTextField HawbTxt = new JTextField();
JLabel AgentLab = new JLabel();
JLabel StartDateLab = new JLabel();
JCalendarComboBox StartDateTxt;
JComboBox AgentLBox = new JComboBox();
JLabel EnddateLab = new JLabel();
JPanel ReviewJobsPane = new JPanel();
JButton SearchBtn = new JButton();
ButtonUI ui = new com.sun.java.swing.plaf.motif.MotifButtonUI();
ArrayList AgentList = new ArrayList();
JComboBox DocTypeLBox = new JComboBox();
JLabel doctypelab = new JLabel();
JPanel displayPanel = new JPanel();
ButtonGroup group1;
JRadioButton rb;
JTable table;
public ArrayList jobList = new ArrayList();
public AutoPopRollBack(JFrame frame, ArrayList agentArrayList) {
this.frame = frame;
this.AgentList = agentArrayList;
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
public void jbInit() throws Exception {
Calendar cal = Calendar.getInstance();
Locale loc = new Locale("");
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
EndDateTxt = new JCalendarComboBox(cal, loc, dateformat);
StartDateTxt = new JCalendarComboBox(cal, loc, dateformat);
HeaderLabe.setBackground(new Color(250, 233, 216));
HeaderLabe.setBounds(new Rectangle(0, 0, 830, 33));
this.setLayout(null);
this.setBackground(SystemColor.control);
headlab.setBackground(new Color(250, 233, 216));
headlab.setFont(new java.awt.Font("Verdana", 1, 12));
headlab.setForeground(Color.blue);
headlab.setHorizontalAlignment(SwingConstants.CENTER);
headlab.setText(" :: Auto Population Rollback");
headlab.setBounds(new Rectangle(39, 2, 247, 25));
EndDateTxt.setBounds(new Rectangle(474, 36, 116, 18));
EndDateTxt.setBackground(Color.white);
EndDateTxt.setFont(new java.awt.Font("Times New Roman", 1, 10));
EndDateTxt.setForeground(Color.blue);
EndDateTxt.setBorder(null);
HawbLab.setFont(new java.awt.Font("Dialog", 0, 13));
HawbLab.setForeground(Color.blue);
HawbLab.setHorizontalAlignment(SwingConstants.RIGHT);
HawbLab.setText("Job No/Airway Bill No:");
HawbLab.setBounds(new Rectangle(326, 14, 146, 18));
HawbTxt.setBounds(new Rectangle(474, 14, 125, 18));
HawbTxt.setText("");
HawbTxt.setFont(new java.awt.Font("Times New Roman", 1, 10));
HawbTxt.setForeground(Color.blue);
HawbTxt.setBorder(border1);
AgentLab.setFont(new java.awt.Font("Dialog", 0, 13));
AgentLab.setForeground(Color.blue);
AgentLab.setHorizontalAlignment(SwingConstants.RIGHT);
AgentLab.setText("<html>Agent:<font size=\'4\' color=\"#993333\">*</font></html>");
AgentLab.setBounds(new Rectangle(31, 14, 97, 18));
StartDateLab.setFont(new java.awt.Font("Dialog", 0, 13));
StartDateLab.setForeground(Color.blue);
StartDateLab.setHorizontalAlignment(SwingConstants.RIGHT);
StartDateLab.setText("Start Date:");
StartDateLab.setBounds(new Rectangle(23, 36, 105, 18));
StartDateTxt.setBounds(new Rectangle(129, 36, 116, 18));
StartDateTxt.setBackground(Color.white);
StartDateTxt.setFont(new java.awt.Font("Times New Roman", 1, 10));
StartDateTxt.setForeground(Color.blue);
StartDateTxt.setBorder(null);
AgentLBox.setBackground(Color.white);
AgentLBox.setFont(new java.awt.Font("Verdana", 0, 13));
AgentLBox.setForeground(Color.blue);
AgentLBox.setBounds(new Rectangle(129, 14, 178, 18));
AgentLBox.setFont(new java.awt.Font("Times New Roman", 1, 10));
EnddateLab.setFont(new java.awt.Font("Dialog", 0, 13));
EnddateLab.setForeground(Color.blue);
EnddateLab.setHorizontalAlignment(SwingConstants.RIGHT);
EnddateLab.setText("End Date:");
EnddateLab.setBounds(new Rectangle(391, 36, 81, 18));
ReviewJobsPane.setBackground(new Color(240, 233, 216));
ReviewJobsPane.setBorder(BorderFactory.createLineBorder(Color.black));
ReviewJobsPane.setBounds(new Rectangle(69, 47, 705, 96));
ReviewJobsPane.setLayout(null);
SearchBtn.setUI(ui);
SearchBtn.setCursor(cursor);
SearchBtn.setBackground(new Color(76, 125, 104));
SearchBtn.setBounds(new Rectangle(377, 153, 89, 19));
SearchBtn.setFont(new java.awt.Font("Tahoma", 1, 10));
SearchBtn.setForeground(Color.white);
SearchBtn.setBorder(border2);
SearchBtn.setOpaque(true);
SearchBtn.setFocusPainted(false);
SearchBtn.setText("Search");
SearchBtn.addActionListener(new AutoPopRollBack_SearchBtn_actionAdapter(this));
for (int i = 0; i < AgentList.size(); i++)
AgentLBox.addItem( (String) AgentList.get(i));
DocTypeLBox.setFont(new java.awt.Font("Verdana", 0, 13));
DocTypeLBox.setForeground(Color.blue);
DocTypeLBox.setMinimumSize(new Dimension(22, 19));
DocTypeLBox.setBounds(new Rectangle(129, 58, 179, 18));
DocTypeLBox.setFont(new java.awt.Font("Times New Roman", 1, 10));
DocTypeLBox.addItem("New Jobs");
DocTypeLBox.addItem("Draft jobs");
DocTypeLBox.addItem("Finished jobs");
doctypelab.setBounds(new Rectangle(7, 58, 121, 18));
doctypelab.setText("<html>Document Type:<font size=\'4\' color=\"#993333\">*</font></html>");
doctypelab.setHorizontalAlignment(SwingConstants.RIGHT);
doctypelab.setForeground(Color.blue);
doctypelab.setFont(new java.awt.Font("Dialog", 0, 13));
displayPanel.setBorder(BorderFactory.createLineBorder(Color.black));
displayPanel.setBounds(new Rectangle(69, 182, 705, 315));
this.add(headlab, null);
this.add(HeaderLabe, null);
this.add(ReviewJobsPane, null);
ReviewJobsPane.add(HawbLab, null);
ReviewJobsPane.add(AgentLab, null);
ReviewJobsPane.add(AgentLBox, null);
ReviewJobsPane.add(StartDateLab, null);
ReviewJobsPane.add(StartDateTxt, null);
ReviewJobsPane.add(HawbTxt, null);
ReviewJobsPane.add(EnddateLab, null);
ReviewJobsPane.add(EndDateTxt, null);
ReviewJobsPane.add(DocTypeLBox, null);
ReviewJobsPane.add(doctypelab, null);
this.add(SearchBtn, null);
this.add(displayPanel, null);
//this.add(scrollPaneView, null);
// scrollPaneView.getViewport().add(displayPanel, null);
this.setVisible(true);
}
void FieldEditable(boolean str) {
StartDateTxt.setEnabled(str);
EndDateTxt.setEnabled(str);
}
public static void main(String args[]) {
JFrame frame = new JFrame();
ArrayList agentlist = new ArrayList();
agentlist.add(0, "BF0651");
agentlist.add(1, "PF0010");
AutoPopRollBack objAutoPopRollBack = new AutoPopRollBack(frame, agentlist);
frame.getContentPane().add(objAutoPopRollBack);
frame.setBounds(new Rectangle(0, 0, 820, 593));
frame.setVisible(true);
}
void SearchBtn_actionPerformed(ActionEvent e) {
displayPanel.setVisible(false);
Vector data=new Vector();
rows.removeAllElements();
boolean flag = true;
String che = new EndStartDateCheck().crossCheck(StartDateTxt.getCalendar(), EndDateTxt.getCalendar());
try {
if(HawbTxt.getText().equalsIgnoreCase("")){
if (StartDateTxt._spinner.getText().equalsIgnoreCase("")) {
JOptionPane.showMessageDialog(this, "Please Select Start Date",
"Warning", JOptionPane.WARNING_MESSAGE);
flag = false;
}
else if (!che.equalsIgnoreCase("")) {
JOptionPane.showMessageDialog(frame, che, "Message Window", JOptionPane.INFORMATION_MESSAGE);
flag = false;
}
}else{
FieldEditable(true);
}
if (flag) {
try {
displayPanel.removeAll();
} catch (Exception ex) {
}
rows.removeAllElements();
data.removeAllElements();
SearchBtn.setEnabled(true);
searchlist.add(0, AgentLBox.getSelectedItem().toString().trim());
if (!HawbTxt.getText().trim().equalsIgnoreCase(""))
searchlist.add(1, HawbTxt.getText().toString().trim());
else
searchlist.add(1, "");
searchlist.add(2, new Integer(DocTypeLBox.getSelectedIndex() + 1));
String startDate = new ConvertDate().convertddMM_To_MMdd(StartDateTxt._spinner.getText());
String endDate = new ConvertDate().convertddMM_To_MMdd(EndDateTxt._spinner.getText());
Vector columns = new Vector();
columns.add(0, "");
columns.add(1, "JOB No");
columns.add(2, "Status");
columns.add(3, "Current Form Type");
columns.add(4, "New Form Type");
System.out.println("Before calling Data Base");
jobList = objConnectmagr.AutoRollBackSearch(searchlist, startDate, endDate, "AutoPopRollBack");
if (jobList.size() > 0) {
for (int i = 0; i < jobList.size(); i++) {
ArrayList temp = new ArrayList();
temp = (ArrayList) jobList.get(i);
Vector col = new Vector();
col.add(0, new Boolean(false));
col.add(1, temp.get(0).toString().trim());
col.add(2, temp.get(1).toString().trim());
col.add(3, temp.get(2).toString().trim());
Vector tempstr=new Vector();
String [] tem=temp.get(3).toString().trim().split("\\|");
tempstr.removeAllElements();
for(int k=0;k<tem.length;k++)
tempstr.add(k,tem[k]);
col.add(4, new JComboBox(tempstr));
data.add(col);
}
dm.setDataVector(data, columns);
table = new JTable(dm) {
public void tableChanged(TableModelEvent e) {
super.tableChanged(e);
}
public boolean isCellEditable(int rowIndex, int vColIndex) {
return true;
}
};
JScrollPane scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
table.setColumnSelectionAllowed(false);
table.setRowSelectionAllowed(false);
table.setCellSelectionEnabled(false);
table.setBackground(SystemColor.inactiveCaptionText);
table.setRowHeight(20);
JTableHeader head = table.getTableHeader();
head.setSize(850, 75);
table.setTableHeader(head);
table.getTableHeader().setFont(new Font("Verdana", Font.BOLD, 11));
table.getTableHeader().setBackground(new Color(130, 170, 150));
table.getTableHeader().setForeground(Color.BLUE);
table.getTableHeader().setReorderingAllowed(false);
table.getTableHeader().setResizingAllowed(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.setFont(new java.awt.Font("MS Sans Serif", 0, 13));
table.setForeground(new Color(125, 25, 0));
TableColumn col = table.getColumnModel().getColumn(0);
col.setMinWidth(75);
col.setMaxWidth(75);
TableColumn col1 = table.getColumnModel().getColumn(1);
col1.setMinWidth(150);
col1.setMaxWidth(150);
TableColumn col2 = table.getColumnModel().getColumn(2);
col2.setMinWidth(150);
col2.setMaxWidth(150);
TableColumn col3 = table.getColumnModel().getColumn(3);
col3.setMinWidth(150);
col3.setMaxWidth(150);
TableColumn col4 = table.getColumnModel().getColumn(4);
col4.setMinWidth(160);
col4.setMaxWidth(160);
TableColumn tc = table.getColumnModel().getColumn(0);
tc.setCellEditor(table.getDefaultEditor(Boolean.class));
tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc.setHeaderRenderer(new CheckBoxHeader(new MyItemListener()));
Vector tempstr=new Vector();
for(int j=0;j<jobList.size();j++){
ArrayList temlist=(ArrayList)jobList.get(j);
String [] tem=temlist.get(3).toString().trim().split("\\|");
tempstr.removeAllElements();
for(int k=0;k<tem.length;k++)
tempstr.add(k,tem[k]);
JComboBox portTypesCombo = new JComboBox(tempstr);
col4.setCellEditor(new DefaultCellEditor(portTypesCombo));
}
col4 = table.getColumnModel().getColumn(4);
col4.setCellEditor(new MyComboBoxEditor(tempstr));
// If the cell should appear like a combobox in its
// non-editing state, also set the combobox renderer
col4.setCellRenderer(new MyComboBoxRenderer(tempstr));
System.out.println(tempstr);
displayPanel.setLayout(new BorderLayout());
displayPanel.add(table.getTableHeader(), BorderLayout.PAGE_START);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
table.setEditingColumn(0);
int column = 0;
if (e.getClickCount() == 1) {
Point p = e.getPoint();
selectedRow = table.rowAtPoint(p);
column = table.columnAtPoint(p);
System.out.println(table.isCellEditable(selectedRow, column));
if (column != 0) {
selectedRow = -1;
returnList = new Vector();
returnList = (Vector) rows.get(selectedRow);
}
else if (column == 0) {
table.revalidate();
table.repaint();
}
}
}
});
scroll.getViewport().add(table);
displayPanel.add(scroll, BorderLayout.CENTER);
displayPanel.setVisible(true);
}
else {
JOptionPane.showMessageDialog(this, "No Data Available");
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
class MyItemListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
Object source = e.getSource();
if (source instanceof AbstractButton == false)return;
boolean checked = e.getStateChange() == ItemEvent.SELECTED;
for (int x = 0, y = table.getRowCount(); x >< y; x++) {
table.setValueAt(new Boolean(checked), x, 0);
}
}
}
}
class AutoPopRollBack_SearchBtn_actionAdapter implements java.awt.event.ActionListener {
AutoPopRollBack adaptee;
AutoPopRollBack_SearchBtn_actionAdapter(AutoPopRollBack adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.SearchBtn_actionPerformed(e);
}
}
class RadioButtonRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (value == null)return null;
return (Component) value;
}
}
class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
private JRadioButton button;
public RadioButtonEditor(JCheckBox checkBox) {
super(checkBox);
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row,
int column) {
if (value == null)return null;
button = (JRadioButton) value;
button.addItemListener(this);
return (Component) value;
}
public Object getCellEditorValue() {
button.removeItemListener(this);
return button;
}
public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();
}
}
class CheckCellRenderer extends JCheckBox implements TableCellRenderer {
protected static Border m_noFocusBorder;
public CheckCellRenderer() {
super();
m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
setOpaque(true);
setBorder(m_noFocusBorder);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (value instanceof Boolean) {
Boolean b = (Boolean) value;
setSelected(b.booleanValue());
}
setBackground(isSelected && !hasFocus ?
table.getSelectionBackground() : table.getBackground());
setForeground(isSelected && !hasFocus ?
table.getSelectionForeground() : table.getForeground());
setFont(table.getFont());
setBorder(hasFocus ? UIManager.getBorder(
"Table.focusCellHighlightBorder") : m_noFocusBorder);
return this;
}
}
class CheckBoxHeader extends JCheckBox implements TableCellRenderer, MouseListener {
protected CheckBoxHeader rendererComponent;
protected int column;
protected boolean mousePressed = false;
public CheckBoxHeader(ItemListener itemListener) {
rendererComponent = this;
rendererComponent.addItemListener(itemListener);
}
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (table != null) {
JTableHeader header = table.getTableHeader();
if (header != null) {
rendererComponent.setForeground(header.getForeground());
rendererComponent.setBackground(header.getBackground());
rendererComponent.setFont(new java.awt.Font("Verdana", 1, 10));
header.addMouseListener(rendererComponent);
}
}
setColumn(column);
rendererComponent.setText("Select All");
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return rendererComponent;
}
protected void setColumn(int column) {
this.column = column;
}
public int getColumn() {
return column;
}
protected void handleClickEvent(MouseEvent e) {
if (mousePressed) {
mousePressed = false;
JTableHeader header = (JTableHeader) (e.getSource());
JTable tableView = header.getTable();
TableColumnModel columnModel = tableView.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
int column = tableView.convertColumnIndexToModel(viewColumn);
if (viewColumn == this.column && e.getClickCount() == 1 && column != -1) {
doClick();
}
}
}
public void mouseClicked(MouseEvent e) {
handleClickEvent(e);
( (JTableHeader) e.getSource()).repaint();
}
public void mousePressed(MouseEvent e) {
mousePressed = true;
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
public MyComboBoxRenderer(Vector items) {
super(items);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
}
else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
// Select the current value
setSelectedItem(value);
return this;
}
}
class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(Vector items) {
super(new JComboBox(items));
}
}
and Bringing data from data base by using this method
if (i == 0) sqlString = "SELECT * FROM FLIGHTSEARCH WHERE AGENT_CODE='" + agentCode + "' and ISSUEDATE BETWEEN '" + startDate + "' and '" + endDate + "'";
else sqlString = "SELECT * FROM FLIGHTSEARCH WHERE AGENT_CODE='" + agentCode + "' and JOB_NO='" + JobNo + "%'";
st = con.createStatement();
System.out.println("new jobs search-->" + sqlString);
rs = st.executeQuery(sqlString);
while (rs.next()) {
retVector = new ArrayList();
retVector.add(0, rs.getString("JOBNO"));
retVector.add(1, "New Job");
retVector.add(2, rs.getString("DOC_TYPE"));
String temp="";
if(retVector.get(2).toString().trim().equalsIgnoreCase("K1")){
temp="K8I|K8T";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K2")){
temp="K8E";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K8I")){
//temp="K1|K8T";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K8T")){
temp="K1|K8I";
}else if(retVector.get(2).toString().trim().equalsIgnoreCase("K8E")){
temp="K2";
}
retVector.add(3,temp);
retVector.add(3, rs.getString("AGENT_CODE"));
retVectorlist.add(retVector);
}
}
i am sending data To ComboBox like this
if(retVector.get(2).toString().trim().equalsIgnoreCase("K1")){
K8I and K8T
if K2 adding k8E and for other types as mentioned above
But for ComboBoxes it is showing same Items not changing
Please any body can help to me
Thanks and Regards
Ravichandra

