JSPinner in a JTable Cell
Plz let me know how to add a JSpinner component in a JTable cell.I was able to add JCOmbo and Jtextfield,,but i need to add a JSpinner...how to do that...
regds
Subhash.K
thank you for responce
Object[][] data1 = {
{"Datum", new Spinner(new SpinnerNumberModel(200,1,255,1)),""}, //this sets the innitial value to 200
{"ActiveAntenna", new Boolean(true),""}
String[] colname1 = {"Variable","Value","Unit"};do you have an idea how to set the value, min, and step in my Spinner class
regards
gebi
Similar Messages
-
Can not show the JCheckBox in JTable cell
I want to place a JCheckBox in one JTable cell, i do as below:
i want the column "d" be a check box which indicates "true" or "false".
String[] columnNames = {"a","b","c","d"};
Object[][] rowData = {{"", "", "", Boolean.FALSE}};
tableModel = new DefaultTableModel(rowData, columnNames);
dataTable = new JTable(tableModel);
dataTable.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(new JCheckBox()));
But when i run it, the "d" column show the string "false" or "true", not the check box i wanted.
I do not understand it, can you help me?
Thank you very much!
coral9527Do not use DefaultTableModel, create your own table model and you should implement the method
getColumnClass to display the boolean as checkbox ...
I hope the following colde snippet helps you :
class MyModel extends AbstractTableModel {
private String[] columnNames = {"c1",
"c2"};
public Object[][] data ={{Boolean.valueOf(true),"c1d1"}};
public int getColumnCount() {
//System.out.println("Calling getColumnCount");
return columnNames.length;
public int getRowCount() {
//System.out.println("Calling row count");
return data.length;
public String getColumnName(int col) {
return columnNames[col];
public Object getValueAt(int row, int col) {
return data[row][col];
* 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) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
return true;
* Don't need to implement this method unless your table's
* data can change.
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col); -
Shading part of a JTable Cell dependent upon the value of the cell
Hi
Was hoping some one woudl be able to provide some help with this. I'm trying to create a renderer that will "shade" part of a JTable cell's background depending upon the value in the cell as a percentage (E.g. if the cell contains 0.25 then a quarter of the cell background will be shaded)
What I've got so far is a renderer which will draw a rectangle whose width is the relevant percentage of the cell's width. (i.e. the width of the column) based on something similar I found in the forum but the part I'm struggling with is getting it to draw this rectangle in any cell other than the first cell. I've tried using .getCellRect(...) to get the x and y position of the cell to draw the rectangle but I still can't make it work.
The code for my renderer as it stands is:
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class PercentageRepresentationRenderer extends JLabel implements TableCellRenderer{
double percentageValue;
double rectWidth;
double rectHeight;
JTable table;
int row;
int column;
int x;
int y;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value instanceof Number)
this.table = table;
this.row = row;
this.column = column;
Number numValue = (Number)value;
percentageValue = numValue.doubleValue();
rectHeight = table.getRowHeight(row);
rectWidth = percentageValue * table.getColumnModel().getColumn(column).getWidth();
return this;
public void paintComponent(Graphics g) {
x = table.getCellRect(row, column, false).x;
y = table.getCellRect(row, column, false).y;
setOpaque(false);
Graphics2D g2d = (Graphics2D)g;
g2d.fillRect(x,y, new Double(rectWidth).intValue(), new Double(rectHeight).intValue());
super.paintComponent(g);
}and the following code produces a runnable example:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class PercentageTestTable extends JFrame {
public PercentageTestTable()
Object[] columnNames = new Object[]{"A","B"};
Object[][] tableData = new Object[][]{{0.25,0.5},{0.75,1.0}};
DefaultTableModel testModel = new DefaultTableModel(tableData,columnNames);
JTable test = new JTable(testModel);
test.setDefaultRenderer(Object.class, new PercentageRepresentationRenderer());
JScrollPane scroll = new JScrollPane();
scroll.getViewport().add(test);
add(scroll);
public static void main(String[] args)
PercentageTestTable testTable = new PercentageTestTable();
testTable.pack();
testTable.setVisible(true);
testTable.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}If anyone could help or point me in the right direction, I'd appreciate it.
RuanaeThis is an example I published some while ago -
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class Fred120 extends JPanel
static final Object[][] tableData =
{1, new Double(10.0)},
{2, new Double(20.0)},
{3, new Double(50.0)},
{4, new Double(10.0)},
{5, new Double(95.0)},
{6, new Double(60.0)},
static final Object[] headers =
"One",
"Two",
public Fred120() throws Exception
super(new BorderLayout());
final DefaultTableModel model = new DefaultTableModel(tableData, headers);
final JTable table = new JTable(model);
table.getColumnModel().getColumn(1).setCellRenderer( new LocalCellRenderer(120.0));
add(table);
add(table.getTableHeader(), BorderLayout.NORTH);
public class LocalCellRenderer extends DefaultTableCellRenderer
private double v = 0.0;
private double maxV;
private final JPanel renderer = new JPanel(new GridLayout(1,0))
public void paintComponent(Graphics g)
super.paintComponent(g);
g.setColor(Color.CYAN);
int w = (int)(getWidth() * v / maxV + 0.5);
int h = getHeight();
g.fillRect(0, 0, w, h);
g.drawRect(0, 0, w, h);
private LocalCellRenderer(double maxV)
this.maxV = maxV;
renderer.add(this);
renderer.setOpaque(true);
renderer.setBackground(Color.YELLOW);
renderer.setBorder(null);
setOpaque(false);
setHorizontalAlignment(JLabel.CENTER);
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col)
final JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
if (value instanceof Double)
v = ((Double)value).doubleValue();
return renderer;
public static void main(String[] args) throws Exception
final JFrame frame = new JFrame("Fred120");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new Fred120());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} -
How to write an element in a JTable Cell
Probably it's a stupid question but I have this problem:
I have a the necessity to build a JTable in which, when I edit a cell and I push a keyboard button, a new Frame opens to edit the content of the cell.
But the problem is how to write something in the JTable cell, before setting its model. Because, I know, setCellAT() method of JTree inserts the value in the model and not in the table view. And repainting doesn't function!
What to do??
ThanksHi there
Depending on your table model you should normally change the "cell value" of the tablemodel.
This could look like:
JTable table = new JTable();
TableModel model = table.getModel();
int rowIndex = 0, columnIndex = 0;
model.setValueAt("This is a test", rowIndex, columnIndex);
The tablemodel should then fire an event to the view (i.e. JTable) and the table should be updated.
Hope this helps you -
How to select rows in the inner JTable rendered in an outer JTable cell
I have wrriten the following code for creating cell specific renderer - JTable rendered in a cell of a JTable.
table=new JTable(data,columnNames)
public TableCellRenderer getCellRenderer(int row, int column)
if ((row == 0) && (column == 0))
return new ColorRenderer();
else if((row == 1) && (column == 0))
return new ColorRenderer1();
else
return super.getCellRenderer(row, column);
ColorRenderer and ColorRenderer1 are two inner classes, which implement TableCellRenderer to draw inner JTable on the outer JTable cell, having 2 rows and 1 column each.
Now what is happening the above code keeps executing continously, that is the classes are being initialised continously, inner JTables are rendered (drawn) continously, and this makes the application slow after some time. It throws java.lang.OutOfMemoryException.
WHY IS IT SO??? I can't understand where's the bug..
Any advice please???
Moreover i want selections in inner tables and not on outer table, how can this be possible.
I am working on this since a long time but have not yet found a way out...With your help i have overcome the problem of continous repeatition.
The major problem which I am facing is, in selecting rows in the inner rendered JTables.
I have added listener on outer JTable which select rows on the outer JTable, hence the complete inner JTable which being treated as a row, gets selected.
The thing is i need to select the rows of inner rendered JTables,not the outer JTable.
How to go about it??
I have even added listener to inner rendered JTables, but only first row of every table gets selected.
Please help....
Thanks in advance. -
How to display images in a Jtable cell-Urgent
Hay all,
Can anybody tell me that can we display images to JTable' cell,If yes the how do we do that(with some code snippet)? Its very urgent .Plz reply as soon as possible.Here is an example
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
class SimpleTableExample extends JFrame
private JPanel topPanel;
private JTable table;
private JScrollPane scrollPane;
public SimpleTableExample()
setTitle( "Table With Image" );
setSize( 300, 200 );
setBackground( Color.gray );
topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
// Create columns names
String columnNames[] = { "Col1", "Col2", "Col3" };
// Create some data
Object data[][] =
{ (ImageIcon) new ImageIcon("User.Gif"), (String) "100", (String)"101" },
{ (String)"102", (String)"103", (String)"104" },
{ (String)"105", (String)"106", (String)"107" },
{ (String)"108", (String)"109", (String)"110" },
// Create a new table instance
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable( model )
public Class getColumnClass(int column)
return getValueAt(0, column).getClass();
}; // Add the table to a scrolling pane
scrollPane = new JScrollPane( table );
topPanel.add( scrollPane, BorderLayout.CENTER );
public static void main( String args[] )
SimpleTableExample mainFrame = new SimpleTableExample();
mainFrame.setVisible( true );
} -
How can I put ImageIcon object in a JTable cell?
yes, I'mm trying :
ImageIcon icon = new ImageIcon("something.gif")
DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
Object[] newRow = new Object[5];
newRow[1] = "I don't";
newRow[2] = "know, what";
newRow[3] = "I am doing"
newRow[4] = "wrong"
newRow[0] = icon;
model.addRow(newRow);
but icon doesn't show -
Hi
I am facing one problem. there is some data should be displayed in Jtable cell.
The thing is that the whole data shall be visible in the cell.. for this I am writing one renderer.. but I could not find the desire solution.. please check it out
class Item_Details extends JFrame {
ApsJTable itemTable = null;
ApsJTable imageTable = null;
ArrayList data = new ArrayList();
String[] columns = new String[2];
ArrayList data1 = new ArrayList();
String[] columns1 = new String[2];
ItemTableModel itemTableModel = null;
ItemTableModel itemTableModel1 = null;
public Item_Details()
super("Item Details");
this.setSize(600,100);
this.setVisible(true);
init();
private void init(){
////////////// Get data for first Table Model ////////////////////////////
data = getRowData();
columns = getColData();
System.out.println(columns[0]);
itemTableModel = new ItemTableModel(data,columns);
/////////////Get Data for Second Table Model //////////////////////////////
try{
data1 = getRowData1();
}catch(Exception e){}
columns1 = getColumns1();
itemTableModel1 = new ItemTableModel(data1,columns1);
///////////// Set Data In Both Table Model //////////////////////////////////
itemTable = new ApsJTable(itemTableModel);
imageTable = new ApsJTable(itemTableModel1);
this.itemTable.setShowGrid(false);
this.imageTable.setShowGrid(false);
this.itemTable.setColumnSelectionAllowed(false);
this.imageTable.setColumnSelectionAllowed(false);
System.out.println(itemTable.getColumnCount());
this.imageTable.setRowHeight(getImageHeight()+3);
JScrollPane tableScrollPane = new JScrollPane(this.imageTable,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableScrollPane.setRowHeaderView(this.itemTable);
tableScrollPane.getRowHeader().setPreferredSize(new Dimension(800, 0));
itemTable.getTableHeader().setReorderingAllowed(false);
itemTable.setColumnSelectionAllowed(false);
//itemTable.setRowHeight(25);
itemTable.setCellSelectionEnabled(false);
itemTable.setFocusable(false);
imageTable.getTableHeader().setReorderingAllowed(false);
imageTable.setFocusable(false);
imageTable.setCellSelectionEnabled(false);
//tableScrollPane.setOpaque(false);
itemTable.setAutoCreateColumnsFromModel(false);
int columnCount = itemTable.getColumnCount();
for(int k=0;k<columnCount;k++)
/* TableCellRenderer renderer = null;
TableCellEditor editor = null;
renderer = new TextAreaCellRenderer(); // NEW
editor = new TextAreaCellEditor();
TableColumn column = new TableColumn(k,itemTable.getColumnModel().getColumn(k).getWidth(),renderer, editor);
itemTable.addColumn(column);*/
itemTable.getColumnModel().getColumn(k).setCellRenderer(new MultiLineCellRenderer());
//itemTable.getColumnModel().getColumn(k).setCellEditor(new TextAreaCellEditor());
////////////---------------------- Here background color is being set--------------//////////////////
this.imageTable.getParent().setBackground(Color.WHITE);
this.itemTable.getParent().setBackground(Color.WHITE);
tableScrollPane.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER,this.itemTable.getTableHeader());
getContentPane().add(tableScrollPane,BorderLayout.CENTER);
getContentPane().setVisible(true);
public static void main(String[] str){
com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode", "2005/05/28#[email protected]#1v2pej6#1986ew");
try {
javax.swing.LookAndFeel alloyLnF = new com.incors.plaf.alloy.AlloyLookAndFeel();
javax.swing.UIManager.setLookAndFeel(alloyLnF);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
Item_Details ID = new Item_Details();
ID.setVisible(true);
public ArrayList getRowData()
ArrayList rowData=new ArrayList();
Hashtable item = new Hashtable();
item.put(new Long(0),new String("Item No:"));
item.put(new Long(1),new String("RED-1050"));
rowData.add(0,item);
item = new Hashtable();
item.put(new Long(0),new String("Description:"));
item.put(new Long(1),new String("SYSTEM 18 mbh COOLING 13 mbh HEATING 230/208 v POWER AIRE "));
rowData.add(1,item);
item = new Hashtable();
item.put(new Long(0),new String("Stage:"));
item.put(new Long(1),new String("Draft"));
rowData.add(2,item);
item = new Hashtable();
item.put(new Long(0),new String("Price: "));
item.put(new Long(1),new String(" 999.00"));
rowData.add(3,item);
item = new Hashtable();
item.put(new Long(0),new String("Features:"));
item.put(new Long(1),new String("SYSTEM COOLING & HEATING 12 mbh 230/208 v POWER AIRE SYSTEM1234 COOLING & HEATING 12 mbh 230/208 v POWER AIRE "));
rowData.add(4,item);
/*item.put(new Long(0),new String("Family Sequence"));
item.put(new Long(1),new String("8.00"));
rowData.add(5,item);
item.put(new Long(0),new String("Family Sequence"));
item.put(new Long(1),new String("8.00"));
rowData.add(6,item);
item.put(new Long(0),new String("Family Sequence"));
item.put(new Long(1),new String("8.00"));
rowData.add(7,item);
return rowData;
public String[] getColData()
String[] colData = new String[]{"Attribute","Value"};
return colData;
public ArrayList getRowData1()throws MalformedURLException{
ArrayList rowData = new ArrayList();
Hashtable item = new Hashtable();
String str = new String("http://biis:8080/assets/PRIMPRIM/Adj_BeacM_Small.jpg");
URL url = new URL(str);
ImageIcon ic = new ImageIcon(url);
ImageIcon scaledImage = new ImageIcon(ic.getImage().getScaledInstance(getImageHeight(), -1,Image.SCALE_SMOOTH));
item.put(new Long(0), scaledImage);
rowData.add(0,item);
String str1 = new String("http://biis:8080/assets/PRIMPRIM/Adj_BeacM_Small.jpg");
URL url1 = new URL(str1);
ImageIcon ic1 = new ImageIcon(url1);
ImageIcon scaledImage1 = new ImageIcon(ic1.getImage().getScaledInstance(120, -1,Image.SCALE_DEFAULT));
item.put(new Long(0),scaledImage1);
rowData.add(1,item);
return rowData;
public String[] getColumns1(){
String[] colData = new String[]{"Image"};
return colData;
public int getImageHeight(){
ImageIcon ic = new ImageIcon("c:\\image\\ImageNotFound.gif");
return ic.getIconHeight();
class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
public MultiLineCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
JScrollPane m_scroll = new JScrollPane(this,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
setOpaque(true);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
/*if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
// setFont(table.getFont());
/* if (hasFocus) {
setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
if (table.isCellEditable(row, column)) {
setForeground( UIManager.getColor("Table.focusCellForeground") );
setBackground( UIManager.getColor("Table.focusCellBackground") );
} else {
setBorder(new EmptyBorder(1, 2, 1, 2));
int width = table.getColumnModel().getColumn(column).getWidth();
//setSize(width, 1000);
int rowHeight = getPreferredSize().height;
if (table.getRowHeight(row) != rowHeight)
table.setRowHeight(row, rowHeight);
setText((value == null) ? "" : value.toString());
return this;
}what wrong with this code..
ThanksIn summary, you have one or more columns for which the data must be wholly visible - correct? If you need all the columns to show the whole of their data, you are goinf to have to expand the table, otherwise you can expand a column with something like
myTable.getColumnModel().getColumn(whichever).setPreferredWidth(whatever); -
Problem in JTable cell renderer
Hi
One problem in JTable cell. Actually I am using two tables while I am writing renderer for word raping in first table .. but it is affected in last column only remain is not being effected�. Please chaek it out what is exact I am missing�
Thanks
package com.apsiva.tryrowmerge;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.Hashtable;
import java.net.*;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.event.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
class Item_Details extends JFrame {
ApsJTable itemTable = null;
ApsJTable imageTable = null;
ArrayList data = new ArrayList();
String[] columns = new String[2];
ArrayList data1 = new ArrayList();
String[] columns1 = new String[2];
ItemTableModel itemTableModel = null;
ItemTableModel itemTableModel1 = null;
public Item_Details()
super("Item Details");
this.setSize(600,100);
this.setBackground(Color.WHITE);
this.setVisible(true);
init();
private void init(){
////////////// Get data for first Table Model ////////////////////////////
data = getRowData();
columns = getColData();
System.out.println(columns[0]);
itemTableModel = new ItemTableModel(data,columns);
/////////////Get Data for Second Table Model //////////////////////////////
try{
data1 = getRowData1();
}catch(Exception e){}
columns1 = getColumns1();
itemTableModel1 = new ItemTableModel(data1,columns1);
///////////// Set Data In Both Table Model //////////////////////////////////
itemTable = new ApsJTable(itemTableModel);
imageTable = new ApsJTable(itemTableModel1);
this.itemTable.setShowGrid(false);
this.imageTable.setShowGrid(false);
this.itemTable.setColumnSelectionAllowed(false);
this.imageTable.setColumnSelectionAllowed(false);
System.out.println(itemTable.getColumnCount());
this.imageTable.setRowHeight(getImageHeight()+3);
JScrollPane tableScrollPane = new JScrollPane(this.imageTable,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableScrollPane.setRowHeaderView(this.itemTable);
//itemTable.getColumnModel().getColumn(0).setMaxWidth(200);
itemTable.getColumnModel().getColumn(0).setPreferredWidth(200);
itemTable.getColumnModel().getColumn(1).setPreferredWidth(600);
tableScrollPane.getRowHeader().setPreferredSize(new Dimension(800, 0));
itemTable.getTableHeader().setResizingAllowed(false);
itemTable.getTableHeader().setReorderingAllowed(false);
itemTable.setColumnSelectionAllowed(false);
//itemTable.setRowHeight(25);
itemTable.setCellSelectionEnabled(false);
itemTable.setFocusable(false);
imageTable.getTableHeader().setReorderingAllowed(false);
imageTable.setFocusable(false);
imageTable.setCellSelectionEnabled(false);
//tableScrollPane.setOpaque(false);
itemTable.setAutoCreateColumnsFromModel(false);
int columnCount = itemTable.getColumnCount();
for(int k=0;k<columnCount;k++)
TableCellRenderer renderer = null;
TableCellEditor editor = null;
renderer = new TextAreaCellRenderer(); // NEW
// editor = new TextAreaCellEditor();
// TableColumn column = new TableColumn(k,itemTable.getColumnModel().getColumn(k).getWidth(),renderer, editor);
System.out.println(k);
itemTable.getColumnModel().getColumn(k).setCellRenderer(renderer);
//itemTable.getColumnModel().getColumn(k).setCellEditor(editor);
/*itemTable.getColumnModel().getColumn(1).setCellRenderer(new TextAreaCellRenderer());
itemTable.getColumnModel().getColumn(1).setCellEditor(new TextAreaCellEditor());*/
// itemTable.setShowGrid(false);
//itemTable.addColumn(column);
//itemTable.getColumnModel().getColumn(k).setCellRenderer(new MultiLineCellRenderer());
//itemTable.getColumnModel().getColumn(k).setCellEditor(new TextAreaCellEditor());
////////////---------------------- Here background color is being set--------------//////////////////
this.imageTable.getParent().setBackground(Color.WHITE);
this.itemTable.getParent().setBackground(Color.WHITE);
tableScrollPane.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER,this.itemTable.getTableHeader());
getContentPane().add(tableScrollPane,BorderLayout.CENTER);
getContentPane().setVisible(true);
public static void main(String[] str){
com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode", "2005/05/28#[email protected]#1v2pej6#1986ew");
try {
javax.swing.LookAndFeel alloyLnF = new com.incors.plaf.alloy.AlloyLookAndFeel();
javax.swing.UIManager.setLookAndFeel(alloyLnF);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
Item_Details ID = new Item_Details();
ID.setVisible(true);
public ArrayList getRowData()
ArrayList rowData=new ArrayList();
Hashtable item = new Hashtable();
item.put(new Long(0),new String("Item No:aaaaaaa aaaaaaaa aaaaaaaaa aaaaaa"));
item.put(new Long(1),new String("RED-1050"));
rowData.add(0,item);
item = new Hashtable();
item.put(new Long(0),new String("Description:rt r trtrt rttrytrr tytry trytry tr tr rty thyjyhjhnhnhgg hhjhgjh"));
item.put(new Long(1),new String("SYSTEM 18 mbh COOLING 13 mbh HEATING 230/208 v POWER AIRE "));
rowData.add(1,item);
item = new Hashtable();
item.put(new Long(0),new String("Stage:"));
item.put(new Long(1),new String("Draft"));
rowData.add(2,item);
item = new Hashtable();
item.put(new Long(0),new String("Price: "));
item.put(new Long(1),new String("999.00"));
rowData.add(3,item);
item = new Hashtable();
item.put(new Long(0),new String("Features:"));
item.put(new Long(1),new String("SYSTEM COOLING & HEATING 12 mbh 230/208 v POWER AIRE SYSTEM1234 COOLING & HEATING 12 mbh 230/208 v POWER AIRE "));
rowData.add(4,item);
item = new Hashtable();
item.put(new Long(0),new String("Features:"));
item.put(new Long(1),new String("SYSTEM COOLING & HEATING 12 mbh 230/208 v POWER AIRE SYSTEM1234 COOLING & HEATING 12 mbh 230/208 v POWER AIRE "));
rowData.add(5,item);
item = new Hashtable();
item.put(new Long(0),new String("Features:"));
item.put(new Long(1),new String("SYSTEM COOLING & HEATING 12 mbh 230/208 v POWER AIRE SYSTEM1234 COOLING & HEATING 12 mbh 230/208 v POWER AIRE "));
rowData.add(6,item);
/*item.put(new Long(0),new String("Family Sequence"));
item.put(new Long(1),new String("8.00"));
rowData.add(5,item);
item.put(new Long(0),new String("Family Sequence"));
item.put(new Long(1),new String("8.00"));
rowData.add(6,item);
item.put(new Long(0),new String("Family Sequence"));
item.put(new Long(1),new String("8.00"));
rowData.add(7,item);
return rowData;
public String[] getColData()
String[] colData = new String[]{"Attribute","Value"};
return colData;
public ArrayList getRowData1()throws MalformedURLException{
ArrayList rowData = new ArrayList();
Hashtable item = new Hashtable();
String str = new String("http://biis:8080/assets/PRIMPRIM/Adj_BeacM_Small.jpg");
URL url = new URL(str);
ImageIcon ic = new ImageIcon(url);
ImageIcon scaledImage = new ImageIcon(ic.getImage().getScaledInstance(getImageHeight(), -1,Image.SCALE_SMOOTH));
item.put(new Long(0), scaledImage);
rowData.add(0,item);
String str1 = new String("http://biis:8080/assets/PRIMPRIM/Adj_BeacM_Small.jpg");
URL url1 = new URL(str1);
ImageIcon ic1 = new ImageIcon(url1);
ImageIcon scaledImage1 = new ImageIcon(ic1.getImage().getScaledInstance(120, -1,Image.SCALE_DEFAULT));
item.put(new Long(0),scaledImage1);
rowData.add(1,item);
return rowData;
public String[] getColumns1(){
String[] colData = new String[]{"Image"};
return colData;
public int getImageHeight(){
ImageIcon ic = new ImageIcon("c:\\image\\ImageNotFound.gif");
return ic.getIconHeight();
class TextAreaCellRenderer extends JTextArea implements TableCellRenderer
public TextAreaCellRenderer() {
setEditable(false);
setLineWrap(true);
setWrapStyleWord(true);
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int nRow, int nCol)
if (value instanceof String)
setText((String)value);
// Adjust row's height
int width = table.getColumnModel().getColumn(nCol).getWidth();
setSize(width, 1000);
int rowHeight = getPreferredSize().height;
if (table.getRowHeight(nRow) != rowHeight)
table.setRowHeight(nRow, rowHeight);
this.setBackground(Color.WHITE);
return this;I think Problem is between these code only
for(int k=0;k<columnCount;k++)
TableCellRenderer renderer = null;
TableCellEditor editor = null;
renderer = new TextAreaCellRenderer();
itemTable.getColumnModel().getColumn(k).setCellRenderer(renderer);or in this renderer
class TextAreaCellRenderer extends JTextArea implements TableCellRenderer
public TextAreaCellRenderer() {
setEditable(false);
setLineWrap(true);
setWrapStyleWord(true);
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int nRow, int nCol)
if (value instanceof String)
setText((String)value);
// Adjust row's height
int width = table.getColumnModel().getColumn(nCol).getWidth();
setSize(width, 1000);
int rowHeight = getPreferredSize().height;
if (table.getRowHeight(nRow) != rowHeight)
table.setRowHeight(nRow, rowHeight);
this.setBackground(Color.WHITE);
return this;
} -
Problem in event handling of combo box in JTable cell
Hi,
I have a combo box as an editor for a column cells in JTable. I have a event listener for this combo box. When ever I click on the JTable cell whose editor is combo box,
I get the following exception,
Exception occurred during event dispatching:
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.setDispatchComponent(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Can any one tell me how to over come this problem.
Thanks,
RaghuHere's an example of the model I used in my JTable. I've placed 2 comboBoxes with no problems.
Hope this helps.
public class FileModel5 extends AbstractTableModel
public boolean isEditable = false;
protected static int NUM_COLUMNS = 3;
// initialize number of rows to start out with ...
protected static int START_NUM_ROWS = 0;
protected int nextEmptyRow = 0;
protected int numRows = 0;
static final public String file = "File";
static final public String mailName = "Mail Id";
static final public String postName = "Post Office Id";
static final public String columnNames[] = {"File", "Mail Id", "Post Office Id"};
// List of data
protected Vector data = null;
public FileModel5()
data = new Vector();
public boolean isCellEditable(int rowIndex, int columnIndex)
// The 2nd & 3rd column or Value field is editable
if(isEditable)
if(columnIndex > 0)
return true;
return false;
* 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();
* Retrieves number of columns
public synchronized int getColumnCount()
return NUM_COLUMNS;
* Get a column name
public String getColumnName(int col)
return columnNames[col];
* Retrieves number of records
public synchronized int getRowCount()
if (numRows < START_NUM_ROWS)
return START_NUM_ROWS;
else
return numRows;
* Returns cell information of a record at location row,column
public synchronized Object getValueAt(int row, int column)
try
FileRecord5 p = (FileRecord5)data.elementAt(row);
switch (column)
case 0:
return (String)p.file;
case 1:
return (String)p.mailName;
case 2:
return (String)p.postName;
catch (Exception e)
return "";
public void setValueAt(Object aValue, int row, int column)
FileRecord5 arow = (FileRecord5)data.elementAt(row);
arow.setElementAt((String)aValue, column);
fireTableCellUpdated(row, column);
* Returns information of an entire record at location row
public synchronized FileRecord5 getRecordAt(int row) throws Exception
try
return (FileRecord5)data.elementAt(row);
catch (Exception e)
throw new Exception("Record not found");
* Used to add or update a record
* @param tableRecord
public synchronized void updateRecord(FileRecord5 tableRecord)
String file = tableRecord.file;
FileRecord5 p = null;
int index = -1;
boolean found = false;
boolean addedRow = false;
int i = 0;
while (!found && (i < nextEmptyRow))
p = (FileRecord5)data.elementAt(i);
if (p.file.equals(file))
found = true;
index = i;
} else
i++;
if (found)
{ //update
data.setElementAt(tableRecord, index);
else
if (numRows <= nextEmptyRow)
//add a row
numRows++;
addedRow = true;
index = nextEmptyRow;
data.addElement(tableRecord);
//Notify listeners that the data changed.
if (addedRow)
nextEmptyRow++;
fireTableRowsInserted(index, index);
else
fireTableRowsUpdated(index, index);
* Used to delete a record
public synchronized void deleteRecord(String file)
FileRecord5 p = null;
int index = -1;
boolean found = false;
int i = 0;
while (!found && (i < nextEmptyRow))
p = (FileRecord5)data.elementAt(i);
if (p.file.equals(file))
found = true;
index = i;
} else
i++;
if (found)
data.removeElementAt(i);
nextEmptyRow--;
numRows--;
fireTableRowsDeleted(START_NUM_ROWS, numRows);
* Clears all records
public synchronized void clear()
int oldNumRows = numRows;
numRows = START_NUM_ROWS;
data.removeAllElements();
nextEmptyRow = 0;
if (oldNumRows > START_NUM_ROWS)
fireTableRowsDeleted(START_NUM_ROWS, oldNumRows - 1);
fireTableRowsUpdated(0, START_NUM_ROWS - 1);
* Loads the values into the combo box within the table for mail id
public void setUpMailColumn(JTable mapTable, ArrayList mailList)
TableColumn col = mapTable.getColumnModel().getColumn(1);
javax.swing.JComboBox comboMail = new javax.swing.JComboBox();
int s = mailList.size();
for(int i=0; i<s; i++)
comboMail.addItem(mailList.get(i));
col.setCellEditor(new DefaultCellEditor(comboMail));
//Set up tool tips.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Click for mail Id list");
col.setCellRenderer(renderer);
//Set up tool tip for the mailName column header.
TableCellRenderer headerRenderer = col.getHeaderRenderer();
if (headerRenderer instanceof DefaultTableCellRenderer)
((DefaultTableCellRenderer)headerRenderer).setToolTipText(
"Click the Mail Id to see a list of choices");
* Loads the values into the combo box within the table for post office id
public void setUpPostColumn(JTable mapTable, ArrayList postList)
TableColumn col = mapTable.getColumnModel().getColumn(2);
javax.swing.JComboBox combo = new javax.swing.JComboBox();
int s = postList.size();
for(int i=0; i<s; i++)
combo.addItem(postList.get(i));
col.setCellEditor(new DefaultCellEditor(combo));
//Set up tool tips.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Click for post office Id list");
col.setCellRenderer(renderer);
//Set up tool tip for the mailName column header.
TableCellRenderer headerRenderer = col.getHeaderRenderer();
if (headerRenderer instanceof DefaultTableCellRenderer)
((DefaultTableCellRenderer)headerRenderer).setToolTipText(
"Click the Post Office Id to see a list of choices");
} -
JTable = Cell Alignment
Is it possible to centre align data in a JTable cell? If possible, where can I see how to do so.
ThxHere's an article that should help:
http://www-106.ibm.com/developerworks/java/library/j-jtable/index.html?dwzone=java -
Update jtable cell via numeric keypad
Hi,
I have a problem, trying to figure out how to input numbers in a jtextfield in a jtable cell, from a group of jbuttons (rendered as a numeric keypad). I can get the cell to focus, but when I click on one of the jbuttons in the keypad, the cell loses focus and nothing is printed. I can update the cell by directly typing from the keyboard; that works fine. But I'm lost when trying to do it from the touch-screen keypad. Can anyone point me in the right direction. I assume I need to attach additional listeners somewhere.
Thanks in-advance.
LeeI can get the cell to focus, Then the code for you button would need to be something like:
String text = (String)table.getValueAt(...);
String updated = text + button.getText();
table.setValueAt(updated, ...); -
Update JTable cells via setValueAt
Hello all,
I'm trying to implement a setValueAt method using an arrayList.....no success.What listeners should I have set up(For JTable or my table model)? I am new at this and I'm trying to update the JTable cells after a query from some db. Could anyone help?
When trying to change the a value in the table I get these errors:
"Exception occurred during event dispatching:
java.lang.ClassCastException: java.lang.String
at CachingResultSetTableModel.getValueAt(CachingResultSetTableModel.java:37)
at javax.swing.JTable.getValueAt(JTable.java:1711)
at javax.swing.JTable.prepareRenderer(JTable.java:3530)"
public void setValueAt(Object avalue, int r, int c){
if(r < cache.size()){
row[c] = (Object[])cache.set(r, avalue);
fireTableCellUpdated(r, c);
}//setValueAt
*********For reference here's the getValueAt method*************************
public Object getValueAt(int r, int c){
if(r < cache.size()){
row = (Object[])cache.get(r);
return row[c];
else
return null;
}//getValueAtI would think that everone who starts off with JTable will have a couple of concept problems. I am also going thru this learnig curve. It looks to me ( the blind leading the blind etc) like your basic table has strange data in it. The problem is occuring when the JTable is trying to setup the data from the table model.
I don't think its anything to do with setValueAt.
I kept going back to TableMap, TableSorter and JDBCAdaptor examples and copying the code from them to come right.> I debug by putting a System.out .... in all the methods until I get to where the code is giving trouble.
Good luck [email protected]
Hello all,
>
I'm trying to implement a setValueAt method using an
arrayList.....no success.What listeners should I have
set up(For JTable or my table model)? I am new at
this and I'm trying to update the JTable cells after a
query from some db. Could anyone help?
When trying to change the a value in the table I get
these errors:
"Exception occurred during event dispatching:
java.lang.ClassCastException: java.lang.String
at
CachingResultSetTableModel.getValueAt(CachingResultSetT
bIleModel.java:37)
at javax.swing.JTable.getValueAt(JTable.java:1711)
at
javax.swing.JTable.prepareRenderer(JTable.java:3530)"
public void setValueAt(Object avalue, int r, int c){
if(r < cache.size()){
row[c] = (Object[])cache.set(r, avalue);
fireTableCellUpdated(r, c);
}//setValueAt
*********For reference here's the getValueAt
method*************************
public Object getValueAt(int r, int c){
if(r < cache.size()){
row = (Object[])cache.get(r);
return row[c];
else
return null;
}//getValueAt -
Hi,
I have just started coding in Swings and would like to find out ways by which I can add JtextField in a JTable cell. Is there any?
Thanks in Advance.
CheenaThere sure is. The thing you're looking for is the cells TableCellEditor. Check out this tutorial, it will explain how to use CellEditors, you should have no diffculties adapting the example to your needs (otherwise just post again :-)
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html -
Way to listen for change in JTable cell?
I am having troubles trying to catch a key event while the user is entering text inside a given JTable cell (x/y location). The JTable only seems to manage String objects in it's cells so I can't place a JTextField in there with a KeyListener on it.
Currently, I can only get control of the application once the user has left the cell they are editing.
Does anyone have an example of a JTable 'cell KeyListener' scenario? At this point I want to see if I can print 'hello world' each time I type a character within a cell. Then I'll go from there....If you want to know when the contents of a cell have been updated you should use a TableModelListener.
If you want to know when a character is added/removed from the cell editor then you need to first understand how this works with a simple text field.
Typically you would use a DocumentListener to receive notifies of a change to the text field. However, within the DocumentEvent you wouldn't be able to change the text field as this notification comes after the text field has already been updated.
If you need to ability to intercept changes to the text field before they happen, then you would need to use a DocumentFilter. An example of using a DocumentFilter is given in the Swing tutorial on [url http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#filter]Text Component Features.
Once you get your regular text field working the way you want, the next step to create a DefaultCellEditor using this JTextField and use this editor in your JTable. The above tutorial also has a section on using editors in a table.
Maybe you are looking for
-
File association keeps on reverting to old settings
Hi I have a problem with file association. We have both Adobe Indesign CS3 and Adobe Indesign CS4 installed in one of the macs. By default, all indesign files are opened in CS4. What I wanted to do is have all the indesign files opened in CS3 instead
-
Camera quality of my nokia 5800
i have nokia 5800 quality of cam is 3.2 megapixel resolution 2048 * 1536 when i entered nokia website and compared it with nokia e66 i found that they have the same camera quality but in fact 5800 camera quality is very very bad in compare to nokia e
-
Condition with mulitple Expressions
I have the following file structure of an ORDERS05 Idoc and I need to setup conditions in the Receiver Determination to find the correct Interface Determination and Receiver Agreement. sample File: - <E1EDK14 SEGMENT="1"> <QUALF>006</QUALF> <ORGI
-
CD/DVD Not Working After Windows 8 Upgrade
I have an old Pavilion dv6917nr laptop. After upgrade to Win 8, CD/DVD drive is not shown in device manager or computer folder. Noticed problem when Windows Media Player would not play CD
-
ITunes crashes when I try to turn Genius on?
I'm using iTunes 10.5.2 and whenever I try to turn Genius on, iTunes quit and i receive and error message telling me that a report was sent to apple and asking me to reopen iTunes. It takes me through the steps to turn on Genius, and then once i clic