one colum is a combobox and the secons column is editable too
i want to get the value of that second column and the value of combobox
and sent that to another application
i have setValueAt(Object value,int row, int col) but it works only for combobox
when i enter some data in the second editable column the value i entered disappears
rows are a list data = new ArrayList<OrderClientProducent>();
thank you
Expand|Select|Wrap|Line Numbers
- import javax.swing.DefaultCellEditor;
- import javax.swing.JComboBox;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.event.TableModelEvent;
- import javax.swing.event.TableModelListener;
- import javax.swing.table.AbstractTableModel;
- import javax.swing.table.DefaultTableCellRenderer;
- import javax.swing.table.TableCellRenderer;
- import javax.swing.table.TableColumn;
- import com.db4o.Db4o;
- import com.db4o.ObjectContainer;
- import com.db4o.ObjectSet;
- import javax.naming.*;
- import javax.jms.*;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * TableRenderDemo is just like TableDemo, except that it
- * explicitly initializes column sizes and it uses a combo box
- * as an editor for the Sport column.
- */
- public class TableClientProducer extends JPanel implements TableModelListener{
- private boolean DEBUG = false;
- private JPanel thePanel;
- List<OrderClientProducent> data;
- private MyTableModel model;
- JComboBox comboBox;
- JTable table;
- Context context = null;
- ConnectionFactory factory = null;
- Connection connection = null;
- String factoryName = "ConnectionFactory";
- String destName = "queue1";
- Destination dest = null;
- Session session = null;
- MessageProducer sender = null;
- String text = "Message ";
- public TableClientProducer() {
- data = new ArrayList<OrderClientProducent>();
- //super(new GridLayout(1,0));
- thePanel = new JPanel(new BorderLayout());
- model = new MyTableModel();
- table = new JTable(new MyTableModel());
- table.setPreferredScrollableViewportSize(new Dimension(800, 70));
- table.setFillsViewportHeight(true);
- table.getModel().addTableModelListener(this);
- //Create the scroll pane and add the table to it.
- JScrollPane scrollPane = new JScrollPane(table);
- //Set up column sizes.
- ////initColumnSizes(table);
- //Fiddle with the Sport column's cell editors/renderers.
- setUpStatusColumn(table, table.getColumnModel().getColumn(6));
- //Add the scroll pane to this panel.
- thePanel.add(scrollPane, BorderLayout.CENTER);
- }
- public JPanel getPanel() {
- return thePanel;
- }
- public void addData(OrderClientProducent ocp){
- data.add(ocp);
- int size = data.size();
- model.fireTableRowsInserted(size, size);
- }
- public void tableChanged(TableModelEvent e) {
- int row = e.getFirstRow();
- int column = e.getColumn();
- MyTableModel model = (MyTableModel)e.getSource();
- String columnName = model.getColumnName(column);
- Object data = model.getValueAt(row, column);
- // Do something with the data...
- }
- public void setComoboxSelectedIndex(String value) {
- if(value.equals("Nie potwierdzono"))
- comboBox.setSelectedIndex(0);
- else if (value.equals("Potwierdzono"))
- comboBox.setSelectedIndex(1);
- else if (value.equals("Dostarczono"))
- comboBox.setSelectedIndex(2);
- else if (value.equals("Nie dostarczono"))
- comboBox.setSelectedIndex(3);
- else if (value.equals("Zamkniete"))
- comboBox.setSelectedIndex(4);
- else comboBox.setSelectedIndex(5);
- }
- public int GetIndexRowSelected(){return table.getSelectedRow();}
- /*
- * This method picks good column sizes.
- * If all column heads are wider than the column's cells'
- * contents, then you can just use column.sizeWidthToFit().
- */
- public void clearRows(){
- System.out.println(data.size());
- //theTableModel.fireTableRowsDeleted(0,theRows.size()-1);
- //for(int i=0;i<theRows.size();i++){
- ///theRows.remove(i);}
- int numRows = data.size()-1;
- for (int i=numRows;i>=0;i--) {
- data.remove(i);
- model.fireTableRowsDeleted(i,i);
- }
- }
- public void setUpStatusColumn(JTable table,
- TableColumn statusColumn) {
- //Set up the editor for the sport cells.
- comboBox = new JComboBox();
- comboBox.addItem("Nie potwierdzono");
- comboBox.addItem("Potwierdzono");
- comboBox.addItem("Dostarczono");
- comboBox.addItem("Nie dostarczono");
- comboBox.addItem("Zamkniete");
- comboBox.addItem("Anulowane");
- statusColumn.setCellEditor(new DefaultCellEditor(comboBox));
- //Set up tool tips for the sport cells.
- DefaultTableCellRenderer renderer =
- new DefaultTableCellRenderer();
- renderer.setToolTipText("Kliknij aby ukazal sie combo box");
- statusColumn.setCellRenderer(renderer);
- }
- public int getID(int row){
- OrderClientProducent orderclientproducer = (OrderClientProducent) data.get(row);
- return orderclientproducer.getID();}
- public String getStatus(int row){
- OrderClientProducent orderclientproducer = (OrderClientProducent) data.get(row);
- return orderclientproducer.getStatus();}
- public String getIlosc(int row){
- OrderClientProducent orderclientproducer = (OrderClientProducent) data.get(row);
- return orderclientproducer.getQuantity();
- }
- public int getNumerZamowienia(int row){
- OrderClientProducent orderclientproducer = (OrderClientProducent) data.get(row);
- return orderclientproducer.getOrderNumber();
- }
- public String getDateSent(int row){
- OrderClientProducent orderclientproducer = (OrderClientProducent) data.get(row);
- return orderclientproducer.getDateSent();
- }
- public String getDateDeadline(int row) {
- OrderClientProducent orderclientproducer = (OrderClientProducent) data.get(row);
- return orderclientproducer.getDateReceived();
- }
- class MyTableModel extends AbstractTableModel {
- String[] columnNames = {"ID","Nazwa klienta","Ilosc",
- "Numer Zamowienia","Data orzymania zamowienia","Termin dostawy","Status"};
- public int getColumnCount() {
- return columnNames.length;
- }
- public int getRowCount() {
- return data.size();
- }
- public String getColumnName(int col) {
- return columnNames[col];
- }
- public Object getValueAt(int row, int col) {
- OrderClientProducent orderclientproducer = data.get(row);
- if(col==0)return orderclientproducer.getID();
- else if (col==1) return orderclientproducer.getClientName();
- else if (col==2) return orderclientproducer.getQuantity();
- else if(col==3) return orderclientproducer.getOrderNumber();
- else if(col==4) return orderclientproducer.getDateSent();
- else if(col==5){
- return orderclientproducer.getDateReceived();
- }
- else return orderclientproducer.getStatus();
- }
- /*
- * JTable uses this method to determine the default renderer/
- * editor for each cell. If we didn't implement this method,
- * then the last column would contain text ("true"/"false"),
- * rather than a check box.
- */
- public Class getColumnClass(int c) {
- return getValueAt(0, c).getClass();
- }
- /*
- * Don't need to implement this method unless your table's
- * editable.
- */
- public boolean isCellEditable(int row, int col) {
- if (col == 5 || col==6 ) {
- return true;
- } else {
- return false;
- }
- }
- public void setValueAt(Object value,int row, int col) {
- OrderClientProducent orderclientproducer = data.get(row);
- int id=orderclientproducer.getID();
- int n=orderclientproducer.getOrderNumber();
- String q=orderclientproducer.getQuantity();
- String d_s=orderclientproducer.getDateSent();
- String d_r=getDateDeadline(row);
- String s=orderclientproducer.getStatus();
- ObjectContainer db = Db4o.openFile("ordersProducer.yap");
- try{
- ObjectSet result = db.get(new OrderClientProducent(id,"Client",q,n,d_s,d_r,s));
- OrderClientProducent ocp = (OrderClientProducent)result.next();
- ocp.setStatus(value);
- db.set(ocp);
- }
- finally {db.close();}
- orderclientproducer.setStatus(value);
- fireTableCellUpdated(row, col);
- try {
- // create the JNDI initial context.
- context = new InitialContext();
- // look up the ConnectionFactory
- factory = (ConnectionFactory) context.lookup(factoryName);
- // look up the Destination
- dest = (Destination) context.lookup(destName);
- // create the connection
- connection = factory.createConnection();
- // create the session
- session = connection.createSession(
- false, Session.AUTO_ACKNOWLEDGE);
- // create the sender
- sender = session.createProducer(dest);
- // start the connection, to enable message sends
- connection.start();
- System.out.println("Sender sending to client!");
- TextMessage message = session.createTextMessage();
- message.setText(id+":"+q+":"+n+":"+d_r);
- sender.send(message);
- System.out.println("Sent: " + message.getText());
- } catch (JMSException exception) {
- exception.printStackTrace();
- } catch (NamingException exception) {
- exception.printStackTrace();
- } catch (NumberFormatException exception){
- //the string could not be converted to Int.
- exception.printStackTrace();
- System.out.println("Nie wybrano zadnego wiersza!");
- } finally {
- // close the context
- if (context != null) {
- try {
- context.close();
- } catch (NamingException exception) {
- exception.printStackTrace();
- }
- }
- // close the connection
- if (connection != null) {
- try {
- connection.close();
- } catch (JMSException exception) {
- exception.printStackTrace();
- }
- }
- }//finally
- }}}