wood burning stoves 2.0*
The moose likes Swing / AWT / SWT and the fly likes Jtable Cell and ENTER key Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Jtable Cell and ENTER key" Watch "Jtable Cell and ENTER key" New topic
Author

Jtable Cell and ENTER key

vinaya kumar
Ranch Hand

Joined: Jan 20, 2002
Posts: 70
Hello All,
i have a table with three columns and three rows
if i have selected 0,0 cell and now i press enter
next cell that gets selected is 1,0... but
what i want is 0,1.. although i try to do this
by editCellAt.. i am not able to do this..
i have the code below....
can anyone tell how to override this behaviour
Thanks
vinaya

import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
class testTable extends JPanel
{
JTable table;
DefaultTableModel tableModel;
int selectedRow=0;
int selectedCol=0;

String columnNames[]=
{
"Name","Type","Value"
};

String arr[]=
{
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"
};

Object data[][]=
{
{
"abc","1","123"
},
{
"xyz","2","789"
},
{
"pqr","3","456"
}
};

JComboBox combo=new JComboBox(arr);


public testTable()
{
tableModel=new DefaultTableModel(data,columnNames);

table=new JTable(tableModel);


table.setPreferredScrollableViewportSize(new Dimension(200,200));

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

table.addKeyListener(new TableKeyListener());
//table.addMouseListener(new TableMouseListener());

table.scrollRectToVisible(table.getCellRect(table.getSelectedRow
(),0,true));
ListSelectionModel rowSM = table.getSelectionModel();

rowSM.addListSelectionListener(new RowSelectionListener());

ListSelectionModel colSM = table.getColumnModel().getSelectionModel();

colSM.addListSelectionListener(new ColumnSelectionListener());

//setting cell editor to textEditor for column with Name
TableColumn typeColumn= table.getColumnModel().getColumn(0);
typeColumn.setCellEditor(new DefaultCellEditor(new JTextField()));

//setting cell editor to textEditor for column with Value
typeColumn= table.getColumnModel().getColumn(2);
typeColumn.setCellEditor(new DefaultCellEditor(new JTextField()));

//setting cell editor to combo for column with Type
typeColumn= table.getColumnModel().getColumn(1);
typeColumn.setCellEditor(new DefaultCellEditor(combo));

add(table);
}


void tabKeyfunc(int row,int col)
{
;
}

void enterKeyfunc(int row,int col)
{

if (col < 2)
{
col++;

}else{
if (table.getRowCount() < row)
{
row++;
col=0;
}
}

System.out.println("row::"+row+"col::"+col);
table.setRowSelectionInterval(row,row);
table.editCellAt(row,col,null);
}

class TableKeyListener implements KeyListener
{
public void keyPressed(KeyEvent e)
{
int keyVal= e.getKeyCode();

switch (keyVal)
{
case KeyEvent.VK_ENTER:
enterKeyfunc(selectedRow,selectedCol);
break;

case KeyEvent.VK_TAB:
tabKeyfunc(selectedRow,selectedCol);
break;
}//end of switch

}

public void keyTyped(KeyEvent e)
{
}

public void keyReleased(KeyEvent evt)
{
}
}

class RowSelectionListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting()) return;
ListSelectionModel lsm = (ListSelectionModel)e.getSource();

if (!lsm.isSelectionEmpty())
{
selectedRow = lsm.getMinSelectionIndex();
}
}
}

class ColumnSelectionListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting()) return;
ListSelectionModel lsm = (ListSelectionModel)e.getSource();

if (!lsm.isSelectionEmpty()){
selectedCol = lsm.getMinSelectionIndex();
}
}
}


public static void main(String args[])
{
testTable tab=new testTable();

JFrame test=new JFrame("Test Table");

test.getContentPane().add(tab);

test.show();
test.pack();
}

}
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Jtable Cell and ENTER key
 
Similar Threads
Jtable Event Handling
updating JProgressBar
ListSelectionListener and double clicks
making JTable appear after initial load
JTable ListSelection problem