Error in JTable Row Header

in my program i am displaying a row header in my JTable it is displaying no problem in these the real problem is that the row header extends to the end of the frame .. is that happen or i made any mistake
here is my code
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class RowHeaderExample1    extends JFrame
JTable table;
public RowHeaderExample1()
super("Row Header Example1"); 
  setSize(300, 150);
    ListModel listModel = new AbstractListModel()
  String headers[] =
"Row 1", "Row 2", "Row 3", "Row 4", "Row 5", "Row 6"}; 
    public int getSize()
return headers.length;   
  public Object getElementAt(int index)
{        return headers[index];  
DefaultTableModel defaultModel = new DefaultTableModel(listModel.getSize(),        10); 
  table = new JTable(defaultModel);  
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
  // Create single component to add to scrollpane 
  final JList rowHeader = new JList(listModel);  
rowHeader.setFixedCellWidth(40);  
rowHeader.setFixedCellHeight(table.getRowHeight());  
rowHeader.setCellRenderer(new RowHeaderRenderer1(table)); 
  JScrollPane scroll = new JScrollPane(table); 
  scroll.setRowHeaderView(rowHeader);   
// Adds row-list left of the table 
  getContentPane().add(scroll, BorderLayout.CENTER); 
  rowHeader.addMouseListener(new MouseAdapter()
  public void mouseClicked(MouseEvent e) {   
    System.out.println("click Here 1");   
    int index = rowHeader.locationToIndex(e.getPoint());  
     table.setRowSelectionInterval(index, index);   
    table.requestFocus();   
  public static void main(String[] args)
RowHeaderExample1 frame = new RowHeaderExample1();   
frame.addWindowListener(new WindowAdapter()
   public void windowClosing(WindowEvent e)
{        System.exit(0);    
  frame.setVisible(true);
class RowHeaderRenderer1 extends JButton implements ListCellRenderer{ 
  JTable table; 
  public RowHeaderRenderer1(JTable table)
this.table = table; 
    setFont(new Font("Dialog",0,11));   
  setMargin(new Insets(0,0,0,0));  
public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean hasFocus)
list.setBackground(getBackground());  
   this.setText(value.toString());   
  return this;   
public Component getListCellRendererComponent(JList list, Object value, boolean isSelected, boolean hasFocus){   
list.setBackground(getBackground());    
this.setText(value.toString());   
  return this; 
}}

try this
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class RowHeaderExample2
    extends JFrame {
  JTable table;
  DefaultListModel lstModel;
  DefaultTableModel defaultModel;
  public RowHeaderExample2() {
    super("Row Header Example");
    setSize(300, 150);
    lstModel = new DefaultListModel();
    lstModel.addElement("Row 1");
    lstModel.addElement("Row 2");
    lstModel.addElement("Row 3");
    lstModel.addElement("Row 4");
    defaultModel = new DefaultTableModel(lstModel.getSize(), 6);
    table = new JTable(defaultModel);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    // Create single component to add to scrollpane
    final JList rowHeader = new JList(lstModel);
    rowHeader.setFixedCellWidth(40);
    rowHeader.setFixedCellHeight(table.getRowHeight());
    rowHeader.setCellRenderer(new RowHeaderRenderer2(table));
    JButton btnAdd = new JButton("Add");
    btnAdd.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        lstModel.addElement("Row "+lstModel.getSize()+1);
        defaultModel.addRow(new Object[]{"","","","","",""});
    JPanel panel = new JPanel();
    panel.add(btnAdd);
    JScrollPane scroll = new JScrollPane(table);
    scroll.setRowHeaderView(rowHeader); // Adds row-list left of the table
    getContentPane().add(panel, BorderLayout.NORTH);
    getContentPane().add(scroll, BorderLayout.CENTER);
    rowHeader.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        System.out.println("click Here 1");
        int index = rowHeader.locationToIndex(e.getPoint());
        table.setRowSelectionInterval(index, index);
        table.requestFocus();
  public static void main(String[] args) {
    RowHeaderExample2 frame = new RowHeaderExample2();
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
    frame.setVisible(true);
* Define the look/content for a cell in the row header
* In this instance uses the JTables header properties
class RowHeaderRenderer2
    extends JLabel
    implements ListCellRenderer {
   * Constructor creates all cells the same
   * To change look for individual cells put code in
   * getListCellRendererComponent method
  JTable table;
  RowHeaderRenderer2(JTable table) {
    this.table = table;
    JTableHeader header = table.getTableHeader();
    setOpaque(true);
    setBorder(UIManager.getBorder("TableHeader.cellBorder"));
    setHorizontalAlignment(CENTER);
    setForeground(header.getForeground());
    setBackground(header.getBackground());
    setFont(header.getFont());
   * Returns the JLabel after setting the text of the cell
  public Component getListCellRendererComponent(JList list,
                                                Object value, int index,
                                                boolean isSelected,
                                                boolean cellHasFocus) {
    list.setBackground(table.getTableHeader().getBackground());
    setText( (value == null) ? "" : value.toString());
    return this;
}

Similar Messages

  • JTable with row header plus value extraction from headers

    Hi, I am trying to do the following:
    Short Version-
    1. Create a table that has both row and column headers
    2. Allow the user to mouse over any of these headers such that doing so will display an image I have produced on a panel. (I already know how to create the image and how to display it, I'm just not sure how to associate it with a particular row or column header)
    3. Make the row headers look as much as possible like the column headers.
    Slightly Longer Version-
    Column headers will be labled A-H (maximum) while row headers will be labled 1-12 (maximum). Either can be less, however, depending on user input. After the table has been realized, the user will move the mouse over say, header 'H' and when they do, a JPEG image will appear on another panel and a tooltip will appear above the cell showing a formula. This happens when either row or column headers are moused over.
    Currently, I am using the following code from the O'reilly Swing book as a baseline for experimentation but any help you can offer will be appreciated. I'm fairly new to the JTable world... :-(
    TableModel tm = new AbstractTableModel(){
                   String data[] = {"", "a", "b", "c", "d", "e"};
                   String headers [] = {"Row #", "Column1", "Column2", "Column3", "Column4", "Column5"};
                   public int getColumnCount(){ return data.length;}
                   public int getRowCount() { return 1000;}
                   public String getColumnName(int col){ return headers[col];}
                   public Object getValueAt(int row, int col){
                        return data[col] + row;
              //creates a column model for the main table. This model ignores the first
              //column added and sets a minimum width of 150 pixels for all others
              TableColumnModel cm = new DefaultTableColumnModel(){
                   boolean first = true;
                   public void addColumn(TableColumn tc){
                        if(first) {first = false; return;}
                        tc.setMinWidth(150);
                        super.addColumn(tc);
              //Creates a column model that will serve as the row header table. This model
              //picks a maxium width and stores only the first column
              TableColumnModel rowHeaderModel = new DefaultTableColumnModel(){
                   boolean first = true;
                   public void addColumn(TableColumn tc){
                        if(first) {
                             tc.setMaxWidth(tc.getPreferredWidth());
                             super.addColumn(tc);
                             first = false;
              JTable grid = new JTable(tm, cm);
              //set up the header column and hook it up to everything
              JTable headerColumn = new JTable(tm, rowHeaderModel);
              grid.createDefaultColumnsFromModel();
              headerColumn.createDefaultColumnsFromModel();
              //make sure the selection between the main table and the header stay in sync
              grid.setSelectionModel(headerColumn.getSelectionModel());
              headerColumn.setBorder(BorderFactory.createEtchedBorder());
              headerColumn.setBackground(Color.lightGray);
              headerColumn.setColumnSelectionAllowed(false);
              headerColumn.setCellSelectionEnabled(false);
              JViewport jv = new JViewport();
              jv.setView(headerColumn);
              jv.setPreferredSize(headerColumn.getMaximumSize());
              //to make the table scroll properly
              grid.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
              //have to manually attach row headers but after that, the scroll pane
              //keeps them in sync
              JScrollPane jsp = new JScrollPane(grid);
              jsp.setRowHeader(jv);
              jsp.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER, headerColumn.getTableHeader());
              gridPanel.add(jsp, BorderLayout.NORTH);

    There a number of nice examples on JTable: http://www.senun.com/Left/Programming/Java_old/Examples_swing/SwingExamples.html
    Hope you could find something suitable ...
    Regards,
    Anton.

  • JTable: Resizable Row Header

    Hi,
    Did anyone implement a row header class for JTable that allows to resize rows (the height of rows) like JTableHeader does for columns?

    Take a look at the link shown below:
    http://forum.java.sun.com/thread.jsp?forum=57&thread=252175
    ;o)
    V.V.

  • How to make the row header of the JTable respond to mouse events?

    Is there an easy way to enable the row header of a JTable so it listens to mouse events? I have put a button in the first cell of the row header but I can't click in it.
    I'm asking for an easy way because I've seen some fairly complicated examples on the web that seem close to what I want but I was hoping something simple like getRowHeader().setEnabled(true) would do the trick for my case...

    What's your row header, another JTable or something else? Check out camickr's [url http://tips4java.wordpress.com/2009/07/12/table-button-column/]Table Button Column.
    db
    edit Or to get better help sooner, post a [url http://mindprod.com/jgloss/sscce.html]SSCCE (Short, Self Contained, Compilable and Executable) example that demonstrates the problem.
    Edited by: Darryl Burke

  • JTable with Multiple Row Header

    well, Im do an application thats need formated ISOS Sheets, and most of them have a Table with Multiple Row Header , and Groupable Header, and both of them. I have the .java and in the class MultipleRowHeaderExample calls a class AttributiveCellTableModel for setColumnIdentifiers() and setDataVector() the cue is why this print stack :
    Exception in thread "main" java.lang.StackOverflowError
         at java.util.Vector.<init>(Unknown Source)
         at java.util.Vector.<init>(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:54)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
         at jp.gr.java_conf.tame.swing.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
         at javax.swing.table.DefaultTableModel.setColumnIdentifiers(Unknown Source)
    .if in main class, have initialized the data, and column vars
    public class MultipleRowHeaderExample extends JFrame {
      Object[][] data;
      Object[] column;
      JTable table;
      MultiSpanCellTable fixedTable;
      public MultipleRowHeaderExample() {
        super( "Multiple Row Header Example" );
        setSize( 400, 150 );
        data =  new Object[][]{
            {"SNo."    ,"" },
            {"Name"    ,"1"},
            {""        ,"2"},
            {"Language","1"},
            {""        ,"2"},
            {""        ,"3"}};
        column = new Object[]{"",""};
        AttributiveCellTableModel fixedModel = new AttributiveCellTableModel(data, column) {
          public boolean CellEditable(int row, int col) {
            return false;
        };

    What's the code in AttributiveCellTableModel?
    * (swing1.1beta3)
    package jp.gr.java_conf.tame.swing.table;
    import java.util.*;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    * @version 1.0 11/22/98
    public class AttributiveCellTableModel extends DefaultTableModel {
      protected CellAttribute cellAtt;
      public AttributiveCellTableModel() {
        this((Vector)null, 0);
      public AttributiveCellTableModel(int numRows, int numColumns) {
        Vector names = new Vector(numColumns);
        names.setSize(numColumns);
        setColumnIdentifiers(names);
        dataVector = new Vector();
        setNumRows(numRows);
        cellAtt = new DefaultCellAttribute(numRows,numColumns);
      public AttributiveCellTableModel(Vector columnNames, int numRows) {
        setColumnIdentifiers(columnNames);
        dataVector = new Vector();
        setNumRows(numRows);
        cellAtt = new DefaultCellAttribute(numRows,columnNames.size());
      public AttributiveCellTableModel(Object[] columnNames, int numRows) {
        this(convertToVector(columnNames), numRows);
      public AttributiveCellTableModel(Vector data, Vector columnNames) {
        setDataVector(data, columnNames);
      public AttributiveCellTableModel(Object[][] data, Object[] columnNames) {
        setDataVector(data, columnNames);
      public void setDataVector(Vector newData, Vector columnNames) {
        if (newData == null)
          throw new IllegalArgumentException("setDataVector() - Null parameter");
        dataVector = new Vector();
        setColumnIdentifiers(columnNames);
        dataVector = newData;
        cellAtt = new DefaultCellAttribute(dataVector.size(),
                                           columnIdentifiers.size());
        newRowsAdded(new TableModelEvent(this, 0, getRowCount()-1,
               TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
      @Override
      public void setColumnIdentifiers(Vector arg0) {
              // TODO Auto-generated method stub
              super.setColumnIdentifiers(arg0);
      public void addColumn(Object columnName, Vector columnData) {
        if (columnName == null)
          throw new IllegalArgumentException("addColumn() - null parameter");
        columnIdentifiers.addElement(columnName);
        int index = 0;
        Enumeration enumeration = dataVector.elements();
        while (enumeration.hasMoreElements()) {
          Object value;
          if ((columnData != null) && (index < columnData.size()))
           value = columnData.elementAt(index);
          else
         value = null;
          ((Vector)enumeration.nextElement()).addElement(value);
          index++;
        cellAtt.addColumn();
        fireTableStructureChanged();
      public void addRow(Vector rowData) {
        Vector newData = null;
        if (rowData == null) {
          newData = new Vector(getColumnCount());
        else {
          rowData.setSize(getColumnCount());
        dataVector.addElement(newData);
        cellAtt.addRow();
        newRowsAdded(new TableModelEvent(this, getRowCount()-1, getRowCount()-1,
           TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
      public void insertRow(int row, Vector rowData) {
        if (rowData == null) {
          rowData = new Vector(getColumnCount());
        else {
          rowData.setSize(getColumnCount());
        dataVector.insertElementAt(rowData, row);
        cellAtt.insertRow(row);
        newRowsAdded(new TableModelEvent(this, row, row,
           TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
      public CellAttribute getCellAttribute() {
        return cellAtt;
      public void setCellAttribute(CellAttribute newCellAtt) {
        int numColumns = getColumnCount();
        int numRows    = getRowCount();
        if ((newCellAtt.getSize().width  != numColumns) ||
            (newCellAtt.getSize().height != numRows)) {
          newCellAtt.setSize(new Dimension(numRows, numColumns));
        cellAtt = newCellAtt;
        fireTableDataChanged();
      public void changeCellAttribute(int row, int column, Object command) {
        cellAtt.changeAttribute(row, column, command);
      public void changeCellAttribute(int[] rows, int[] columns, Object command) {
        cellAtt.changeAttribute(rows, columns, command);
    }that's it

  • Resizing row header of jtable

    hi,
    Is there any way to resize row header column of a jtable just as other columns of jtable. i searched in forums and google but couldnt find any article with resizing row header.
    thanx

    If you want help in the future I suggest you remain a little more patient. It's the weekend. People don't hang around waiting for you to post a question. We answer questions if and when we have time and we know the answer.
    The general answer is yes, of course, it can be done. But we can't give you a specifice answer since you question is so general.
    For example, take a look at my code in this posting:
    http://forum.java.sun.com/thread.jspa?forumID=57&threadID=639189
    I made the following changes:
    //          addColumn( new TableColumn() );
              TableColumn column = new TableColumn();
              column.setHeaderValue(" ");
              addColumn( column );And then I overrode the following method of the table:
    public void columnMarginChanged(ChangeEvent e)
         super.columnMarginChanged(e);
         TableColumn resizingColumn = getTableHeader().getResizingColumn();
         if (resizingColumn != null)
              Dimension d = getPreferredSize();
              d.width = resizingColumn.getWidth();
              setPreferredScrollableViewportSize(d);
    }and finally
    scrollPane.setRowHeaderView( lineTable );
    scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, lineTable.getTableHeader()); // newOf course we have no idea what component you are using for your row header so we can't give a detailed solution, but I suspect you would need to do something like the following:
    a) add a mouseListener to your component
    b) calculate the change in size of the component using the mouse location changes
    c) set the preferred size of your component
    d) notify the scroll pane of the change in size. I would look at the setPreferredScrollableViewportSize method of JTable to see what it does.

  • How do I make a JTable's header sorting actually change the actual table?

    How do I make a JTable's header sorting actually change the actual table?
    Currently, I'm using
    table.setAutoCreateRowSorter(true);to allow the user to sort the table.
    However, I want to be able to load something based on the selected row's index. The problem is that when the table is rearranged, the change appears to only be local, in other words, the actual table isn't changing.
    For instance:
    index 0 "A"
    index 1 "B"
    index 2 "C"
    Sorted in reverse gives me
    "C"
    "B"
    "A"
    But C is still index 2 (instead of 0).
    Thanks in advance.

    Cross posted and answered in the Swing forum.
    [http://forums.sun.com/thread.jspa?threadID=5353865]
    I see this is not your first incidence of cross posting. In future, please post a question once only.
    db

  • Add JTable Row Headers At The End Of The Rows(At Right)?

    hi all
    i got this example for adding JTable Row Headers,but it adds the headers at the left(beginning of the row)
    and i want to add the headers at the end of the row(at right),any ideas how to do that?
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.AbstractListModel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListCellRenderer;
    import javax.swing.ListModel;
    import javax.swing.UIManager;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.JTableHeader;
    * @version 1.0 11/09/98
    class RowHeaderRenderer extends JLabel implements ListCellRenderer {
      RowHeaderRenderer(JTable table) {
        JTableHeader header = table.getTableHeader();
        setOpaque(true);
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(CENTER);
        setForeground(header.getForeground());
        setBackground(header.getBackground());
        setFont(header.getFont());
      public Component getListCellRendererComponent(JList list, Object value,
          int index, boolean isSelected, boolean cellHasFocus) {
        setText((value == null) ? "" : value.toString());
        return this;
    class RowHeaderExample extends JFrame {
      public RowHeaderExample() {
        super("Row Header Example");
        setSize(370, 150);
        ListModel lm = new AbstractListModel() {
          String headers[] = { "Row1", "Row2", "Row3", "Row4"};
          public int getSize() {
            return headers.length;
          public Object getElementAt(int index) {
            return headers[index];
        DefaultTableModel dm = new DefaultTableModel(lm.getSize(), 4);
        JTable table = new JTable(dm);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setRowHeight(18);
        JList rowHeader = new JList(lm);
        rowHeader.setFixedCellWidth(50);
        rowHeader.setFixedCellHeight(18);
        rowHeader.setCellRenderer(new RowHeaderRenderer(table));
        JScrollPane scroll = new JScrollPane(table);
        scroll.setRowHeaderView(rowHeader);
        getContentPane().add(scroll, BorderLayout.CENTER);
      public static void main(String[] args) {
        RowHeaderExample frame = new RowHeaderExample();
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
        frame.setVisible(true);
    }

    fixed by:
    list.setBackground(table.getTableHeader().getBackground());here's the full code:
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.ComponentOrientation;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.DefaultListModel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListCellRenderer;
    import javax.swing.UIManager;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.JTableHeader;
    * @version 1.0 11/09/98
    class RowHeaderRenderer extends JLabel implements ListCellRenderer {
      JTable table;
      RowHeaderRenderer(JTable table) {
        this.table = table;
        JTableHeader header = table.getTableHeader();
        setOpaque(true);
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(CENTER);
        setForeground(header.getForeground());
        setBackground(header.getBackground());
        setFont(header.getFont());
      public Component getListCellRendererComponent(JList list, Object value,
          int index, boolean isSelected, boolean cellHasFocus) {
        list.setBackground(table.getTableHeader().getBackground());
        setText((value == null) ? "" : value.toString());
        return this;
    class RowHeaderExample extends JFrame {
      public RowHeaderExample() {
        super("Row Header Example");
        setSize(370, 150);
        setLocationRelativeTo(null);
        DefaultListModel lstModel = new DefaultListModel();
        lstModel.addElement("Row 1");
        lstModel.addElement("Row 2");
        lstModel.addElement("Row 3");
        lstModel.addElement("Row 4");
        DefaultTableModel dm = new DefaultTableModel(lstModel.getSize(), 4);
        JTable table = new JTable(dm);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setRowHeight(18);
        JList rowHeader = new JList(lstModel);
        rowHeader.setFixedCellWidth(50);
        rowHeader.setFixedCellHeight(18);
        rowHeader.setCellRenderer(new RowHeaderRenderer(table));
        JScrollPane scroll = new JScrollPane(table);
        scroll.setRowHeaderView(rowHeader);
        table.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        scroll.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        getContentPane().add(scroll, BorderLayout.CENTER);
      public static void main(String[] args) {
        RowHeaderExample frame = new RowHeaderExample();
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
        frame.setVisible(true);
    }

  • Jbo 25017 error while create row

    Hi ,
    jbo 25017 error while creating row
    Getting The above error message which updating Master Detail Page
    Krishna

    Hi Ajay ,
    Posting the EOImpl File
    Method specified in bold is greturning line number as 0..Please check
    public class AplShipmentsEOImpl extends OAEntityImpl {
    /**Gets the attribute value for OtherShipReason, using the alias name OtherShipReason
    public String getOtherShipReason() {
    return (String)getAttributeInternal(OTHERSHIPREASON);
    /**Sets <code>value</code> as the attribute value for OtherShipReason
    public void setOtherShipReason(String value) {
    setAttributeInternal(OTHERSHIPREASON, value);
    /**Gets the attribute value for ForeignShipment, using the alias name ForeignShipment
    public String getForeignShipment() {
    return (String)getAttributeInternal(FOREIGNSHIPMENT);
    /**Sets <code>value</code> as the attribute value for ForeignShipment
    public void setForeignShipment(String value) {
    setAttributeInternal(FOREIGNSHIPMENT, value);
    /**Gets the attribute value for ZoneName, using the alias name ZoneName
    public String getZoneName() {
    return (String)getAttributeInternal(ZONENAME);
    /**Sets <code>value</code> as the attribute value for ZoneName
    public void setZoneName(String value) {
    setAttributeInternal(ZONENAME, value);
    /**Gets the attribute value for PrimeContractNumber, using the alias name PrimeContractNumber
    public String getPrimeContractNumber() {
    return (String)getAttributeInternal(PRIMECONTRACTNUMBER);
    /**Sets <code>value</code> as the attribute value for PrimeContractNumber
    public void setPrimeContractNumber(String value) {
    setAttributeInternal(PRIMECONTRACTNUMBER, value);
    /**getAttrInvokeAccessor: generated method. Do not modify.
    protected Object getAttrInvokeAccessor(int index,
    AttributeDefImpl attrDef) throws Exception {
    switch (index) {
    case SHIPMENTID:
    return getShipmentId();
    case LASTUPDATEDATE:
    return getLastUpdateDate();
    case LASTUPDATEDBY:
    return getLastUpdatedBy();
    case CREATIONDATE:
    return getCreationDate();
    case CREATEDBY:
    return getCreatedBy();
    case LASTUPDATELOGIN:
    return getLastUpdateLogin();
    case APPROVALSTATUS:
    return getApprovalStatus();
    case PROJECTID:
    return getProjectId();
    case TASKID:
    return getTaskId();
    case EXPORGID:
    return getExpOrgId();
    case EXPTYPEID:
    return getExpTypeId();
    case APPROVERID:
    return getApproverId();
    case APPROVEDDATE:
    return getApprovedDate();
    case REJECTIONCOMMENTS:
    return getRejectionComments();
    case EXPCTRLAPPRVID:
    return getExpCtrlApprvId();
    case EXPCTRLAPPRVDATE:
    return getExpCtrlApprvDate();
    case EXPREJECTCOMMENTS:
    return getExpRejectComments();
    case SHIPMENTREASON:
    return getShipmentReason();
    case CLASSIFICATION:
    return getClassification();
    case HAZARDMATLIND:
    return getHazardMatlInd();
    case DCN:
    return getDcn();
    case SHIPTOADDRID:
    return getShipToAddrId();
    case SHIPTOATTN:
    return getShipToAttn();
    case SHIPTOATTNPHONE:
    return getShipToAttnPhone();
    case PUBLICDOMAININD:
    return getPublicDomainInd();
    case ENDUSERADDRID:
    return getEndUserAddrId();
    case PARTYSCREENFLAG:
    return getPartyScreenFlag();
    case PROGNAME:
    return getProgName();
    case PROGMGRID:
    return getProgMgrId();
    case EXPORTPURPDESC:
    return getExportPurpDesc();
    case EXPORTAUTHCODE:
    return getExportAuthCode();
    case DESTCTRLSTMT:
    return getDestCtrlStmt();
    case RMANBR:
    return getRmaNbr();
    case PRIMECONTRACTNBR:
    return getPrimeContractNbr();
    case DESTINATIONDATE:
    return getDestinationDate();
    case SHIPMENTWEIGHT:
    return getShipmentWeight();
    case EXPECTEDRETURNDATE:
    return getExpectedReturnDate();
    case RETURNPAPERWORKIND:
    return getReturnPaperworkInd();
    case PICKUPBUILDING:
    return getPickupBuilding();
    case ROOMNUMBER:
    return getRoomNumber();
    case PICKUPAVAILABILITYTIME:
    return getPickupAvailabilityTime();
    case PRIMARYPOCID:
    return getPrimaryPocId();
    case SPECIALINSTRUCTIONS:
    return getSpecialInstructions();
    case RECEIPTBACKOUTIND:
    return getReceiptBackoutInd();
    case SHIPMENTCOST:
    return getShipmentCost();
    case SHIPCLERKID:
    return getShipClerkId();
    case PACKINGCLERKID:
    return getPackingClerkId();
    case DATESHIPPED:
    return getDateShipped();
    case UNNUMBER:
    return getUnNumber();
    case SHIPDESCRIPTION:
    return getShipDescription();
    case PACKCLERKNOTES:
    return getPackClerkNotes();
    case GOVTBOL:
    return getGovtBol();
    case TOTALNOOFPIECES:
    return getTotalNoOfPieces();
    case IATAHAZARDCODE:
    return getIataHazardCode();
    case SHIPCARRIER:
    return getShipCarrier();
    case PROPVARIFICATIONBY:
    return getPropVarificationBy();
    case SHIPCARRIERSRVLVL:
    return getShipCarrierSrvLvl();
    case OTHERSHIPREASON:
    return getOtherShipReason();
    case FOREIGNSHIPMENT:
    return getForeignShipment();
    case ZONENAME:
    return getZoneName();
    case PRIMECONTRACTNUMBER:
    return getPrimeContractNumber();
    case MAXLINENUM:
    return getMaxLineNum();
    case APLAPPROVERSEO1:
    return getAplApproversEO1();
    case APLSHIPDETAILSEO:
    return getAplShipDetailsEO();
    case APLAPPROVERSEO:
    return getAplApproversEO();
    case APLSHIPLINESEO:
    return getAplShipLinesEO();
    case HRALLORGANIZATIONUNITSEO:
    return getHrAllOrganizationUnitsEO();
    case APLPOCEO:
    return getAplPocEO();
    case POPROJECTSEO:
    return getPoProjectsEO();
    default:
    return super.getAttrInvokeAccessor(index, attrDef);
    /**setAttrInvokeAccessor: generated method. Do not modify.
    protected void setAttrInvokeAccessor(int index, Object value,
    AttributeDefImpl attrDef) throws Exception {
    switch (index) {
    case SHIPMENTID:
    setShipmentId((Number)value);
    return;
    case LASTUPDATEDATE:
    setLastUpdateDate((Date)value);
    return;
    case LASTUPDATEDBY:
    setLastUpdatedBy((Number)value);
    return;
    case CREATIONDATE:
    setCreationDate((Date)value);
    return;
    case CREATEDBY:
    setCreatedBy((Number)value);
    return;
    case LASTUPDATELOGIN:
    setLastUpdateLogin((Number)value);
    return;
    case APPROVALSTATUS:
    setApprovalStatus((String)value);
    return;
    case PROJECTID:
    setProjectId((Number)value);
    return;
    case TASKID:
    setTaskId((Number)value);
    return;
    case EXPORGID:
    setExpOrgId((Number)value);
    return;
    case EXPTYPEID:
    setExpTypeId((Number)value);
    return;
    case APPROVERID:
    setApproverId((Number)value);
    return;
    case APPROVEDDATE:
    setApprovedDate((Date)value);
    return;
    case REJECTIONCOMMENTS:
    setRejectionComments((String)value);
    return;
    case EXPCTRLAPPRVID:
    setExpCtrlApprvId((Number)value);
    return;
    case EXPCTRLAPPRVDATE:
    setExpCtrlApprvDate((Date)value);
    return;
    case EXPREJECTCOMMENTS:
    setExpRejectComments((String)value);
    return;
    case SHIPMENTREASON:
    setShipmentReason((String)value);
    return;
    case CLASSIFICATION:
    setClassification((String)value);
    return;
    case HAZARDMATLIND:
    setHazardMatlInd((String)value);
    return;
    case DCN:
    setDcn((String)value);
    return;
    case SHIPTOADDRID:
    setShipToAddrId((Number)value);
    return;
    case SHIPTOATTN:
    setShipToAttn((String)value);
    return;
    case SHIPTOATTNPHONE:
    setShipToAttnPhone((String)value);
    return;
    case PUBLICDOMAININD:
    setPublicDomainInd((String)value);
    return;
    case ENDUSERADDRID:
    setEndUserAddrId((Number)value);
    return;
    case PARTYSCREENFLAG:
    setPartyScreenFlag((String)value);
    return;
    case PROGNAME:
    setProgName((String)value);
    return;
    case PROGMGRID:
    setProgMgrId((Number)value);
    return;
    case EXPORTPURPDESC:
    setExportPurpDesc((String)value);
    return;
    case EXPORTAUTHCODE:
    setExportAuthCode((String)value);
    return;
    case DESTCTRLSTMT:
    setDestCtrlStmt((String)value);
    return;
    case RMANBR:
    setRmaNbr((String)value);
    return;
    case PRIMECONTRACTNBR:
    setPrimeContractNbr((String)value);
    return;
    case DESTINATIONDATE:
    setDestinationDate((Date)value);
    return;
    case SHIPMENTWEIGHT:
    setShipmentWeight((Number)value);
    return;
    case EXPECTEDRETURNDATE:
    setExpectedReturnDate((Date)value);
    return;
    case RETURNPAPERWORKIND:
    setReturnPaperworkInd((String)value);
    return;
    case PICKUPBUILDING:
    setPickupBuilding((String)value);
    return;
    case ROOMNUMBER:
    setRoomNumber((String)value);
    return;
    case PICKUPAVAILABILITYTIME:
    setPickupAvailabilityTime((Date)value);
    return;
    case PRIMARYPOCID:
    setPrimaryPocId((Number)value);
    return;
    case SPECIALINSTRUCTIONS:
    setSpecialInstructions((String)value);
    return;
    case RECEIPTBACKOUTIND:
    setReceiptBackoutInd((String)value);
    return;
    case SHIPMENTCOST:
    setShipmentCost((Number)value);
    return;
    case SHIPCLERKID:
    setShipClerkId((Number)value);
    return;
    case PACKINGCLERKID:
    setPackingClerkId((Number)value);
    return;
    case DATESHIPPED:
    setDateShipped((Date)value);
    return;
    case UNNUMBER:
    setUnNumber((String)value);
    return;
    case SHIPDESCRIPTION:
    setShipDescription((String)value);
    return;
    case PACKCLERKNOTES:
    setPackClerkNotes((String)value);
    return;
    case GOVTBOL:
    setGovtBol((String)value);
    return;
    case TOTALNOOFPIECES:
    setTotalNoOfPieces((Number)value);
    return;
    case IATAHAZARDCODE:
    setIataHazardCode((String)value);
    return;
    case SHIPCARRIER:
    setShipCarrier((String)value);
    return;
    case PROPVARIFICATIONBY:
    setPropVarificationBy((Number)value);
    return;
    case SHIPCARRIERSRVLVL:
    setShipCarrierSrvLvl((String)value);
    return;
    case OTHERSHIPREASON:
    setOtherShipReason((String)value);
    return;
    case FOREIGNSHIPMENT:
    setForeignShipment((String)value);
    return;
    case ZONENAME:
    setZoneName((String)value);
    return;
    case PRIMECONTRACTNUMBER:
    setPrimeContractNumber((String)value);
    return;
    case MAXLINENUM:
    setMaxLineNum((Number)value);
    return;
    default:
    super.setAttrInvokeAccessor(index, value, attrDef);
    return;
    /**Gets the associated entity PoProjectsEOImpl
    public PoProjectsEOImpl getPoProjectsEO() {
    return (PoProjectsEOImpl)getAttributeInternal(POPROJECTSEO);
    /**Sets <code>value</code> as the associated entity PoProjectsEOImpl
    public void setPoProjectsEO(PoProjectsEOImpl value) {
    setAttributeInternal(POPROJECTSEO, value);
    /**Gets the associated entity AplApproversEOImpl
    public AplApproversEOImpl getAplApproversEO() {
    return (AplApproversEOImpl)getAttributeInternal(APLAPPROVERSEO);
    /**Sets <code>value</code> as the associated entity AplApproversEOImpl
    public void setAplApproversEO(AplApproversEOImpl value) {
    setAttributeInternal(APLAPPROVERSEO, value);
    /**Gets the associated entity HrAllOrganizationUnitsEOImpl
    public HrAllOrganizationUnitsEOImpl getHrAllOrganizationUnitsEO() {
    return (HrAllOrganizationUnitsEOImpl)getAttributeInternal(HRALLORGANIZATIONUNITSEO);
    /**Sets <code>value</code> as the associated entity HrAllOrganizationUnitsEOImpl
    public void setHrAllOrganizationUnitsEO(HrAllOrganizationUnitsEOImpl value) {
    setAttributeInternal(HRALLORGANIZATIONUNITSEO, value);
    /**Gets the associated entity AplPocEOImpl
    public AplPocEOImpl getAplPocEO() {
    return (AplPocEOImpl)getAttributeInternal(APLPOCEO);
    /**Sets <code>value</code> as the associated entity AplPocEOImpl
    public void setAplPocEO(AplPocEOImpl value) {
    setAttributeInternal(APLPOCEO, value);
    /**Gets the associated entity AplApproversEOImpl
    public AplApproversEOImpl getAplApproversEO1() {
    return (AplApproversEOImpl)getAttributeInternal(APLAPPROVERSEO1);
    /**Sets <code>value</code> as the associated entity AplApproversEOImpl
    public void setAplApproversEO1(AplApproversEOImpl value) {
    setAttributeInternal(APLAPPROVERSEO1, value);
    /**Gets the associated entity oracle.jbo.RowIterator
    public RowIterator getAplShipDetailsEO() {
    return (RowIterator)getAttributeInternal(APLSHIPDETAILSEO);
    /**Gets the associated entity oracle.jbo.RowIterator
    public RowIterator getAplShipLinesEO() {
    return (RowIterator)getAttributeInternal(APLSHIPLINESEO);
    public static ShipmentEntityExpert getShipmentEntityExpert (OADBTransaction txn)
    return (ShipmentEntityExpert)txn.getExpert(AplShipmentsEOImpl.getDefinitionObject());
    } // end getShipmentEntityExpert()
    /**Gets the attribute value for MaxLineNum, using the alias name MaxLineNum
    public Number getMaxLineNum()
    OADBTransaction transaction = (OADBTransaction)getOADBTransaction();
    *// mMaxLineNum is in its initial state, so we need to check and*
    *// see if we have lines in both the entity cache and in the*
    *// database to find the current maximum.*
    System.out.println("Inside max line");
    *//Number mMaxLineNum = (Number)getAttributeInternal(MAXLINENUM);*
    System.out.println("Inside max line with line "+mMaxLineNum);
    if (mMaxLineNum == null || mMaxLineNum.equals(new Number(-1)))
    System.out.println("line number is null or negative");
    Number tempNum = new Number(0);
    com.sun.java.util.collections.Iterator fastCacheIterator =
    AplShipLinesEOImpl.getDefinitionObject().getAllEntityInstancesIterator(getDBTransaction());
    System.out.println("line EO "+tempNum);
    while (fastCacheIterator.hasNext())
    System.out.println("inside while loop");
    AplShipLinesEOImpl cachedLine = (AplShipLinesEOImpl)fastCacheIterator.next();
    Number currentShipmentId = getShipmentId();
    Number cachedShipmentId = cachedLine.getShipmentId();
    System.out.println("shipment id is "+currentShipmentId+ "cached id "+cachedShipmentId);
    *// If we find a match for this line, check the shipment number. Remember*
    *// that the cache includes shipments for many lines.*
    if ((cachedShipmentId != null) && (cachedShipmentId.compareTo(currentShipmentId) == 0 ))
    System.out.println("cached is not null inside if ");
    tempNum = cachedLine.getLineNbr();
    System.out.println("gettin line number temp num "+tempNum);
    *// resetLineNum( ) will test the value to see if it's the current max,*
    *// and if it is, set it on our private EO transient attribute.*
    if (tempNum != null)
    System.out.println("reset temp num");
    resetLineNum(tempNum);
    System.out.println("checking Entiry State "+getEntityState());
    *// Now check the database if the header EO isn't new (if it is, we haven't*
    *// saved it so we can't have a line in the database)*
    if (getEntityState() != STATUS_NEW)
    System.out.println("inside entity state");
    ShipmentEntityExpert poExpert = getShipmentEntityExpert(transaction);
    System.out.println("taken Entiry Expert Class");
    AplMaxPoLineVVOImpl maxLineVO =
    *(AplMaxPoLineVVOImpl)poExpert.findValidationViewObject("AplMaxPoLineVVO1");*
    System.out.println("getting Line instance");
    maxLineVO.initQuery(getShipmentId());
    System.out.println("line query initialised");
    if (maxLineVO != null)
    System.out.println("line VO is not null");
    tempNum = (Number)maxLineVO.first().getAttribute(0);
    System.out.println("line tempNum"+tempNum);
    if (tempNum != null)
    System.out.println("line tempNum1"+tempNum);
    resetLineNum(tempNum);
    System.out.println("returing max line num");
    return mMaxLineNum;//(Number)getAttributeInternal(MAXLINENUM);
    *} // end getMaxLineNum()*
    * Increments the maximum lineNum.
    * <p>
    * @return current maximum lineNum + 1
    public Number getNextLineNum()
    System.out.println("In header New Line");
    Number currentMaxLineNum = getMaxLineNum();
    System.out.println("current max line num is "+currentMaxLineNum);
    resetLineNum(currentMaxLineNum.add(new Number(1)));
    System.out.println("returning max number");
    return getMaxLineNum();
    } // end getNextLineNum()
    * Resets the maximum line number whenever newLineNum > mMaxLineNum.
    * <p>
    * @param newLineNum the value to be compared against the current
    * mMaxLineNum for this purchase order.
    public void resetLineNum(Number newLineNum)
    // Number mMaxLineNum = (Number)getAttributeInternal(MAXLINENUM);
    System.out.println("inside reset LIne wiht "+newLineNum);
    if (newLineNum.compareTo(mMaxLineNum) == 1)
    System.out.println("setting to new "+newLineNum);
    setMaxLineNum(newLineNum);
    } // end resetLineNum()
    private void setMaxLineNum(Number lineNum)
    setAttributeInternal(MAXLINENUM, lineNum);
    } // end setMaxLineNum()
    krishna

  • Remove JTable row and column in one event

    Hello,
    I 've using matrix table in one application.
    i need to remove both column and row in single event.
    For this i construct
    JTable(data[][], header[]);
    because dynamically increase data's and header's
    What can i do for this?

    Create a method that does:
    DefaultTableModel model = (DefaultTableModel)table.getModel();
    model.removeRow(...)
    model.setRowCount(...)
    Read the DefaultTableModel API for more information.

  • JTable  - modify header...

    Hi! Have very HARD problem...
    Please copy following code in to your IDE and run.
    You see table, with customized header (with check box)
    But this header don't look native... It look's horrible
    Solutions? (JDK 5)
    package testlayouts;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    public class JTableHeaderCheckBox
      Object colNames[] = {"", "String", "String"};
      Object[][] data = {};
      DefaultTableModel dtm;
      JTable table;
      public void buildGUI()
          try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }
          catch (ClassNotFoundException e) { /* Do nothing */ }
          catch (InstantiationException e) { /* Do nothing */ }
          catch (IllegalAccessException e) { /* Do nothing */ }
          catch (UnsupportedLookAndFeelException e) { /* Do nothing */  }
          Toolkit.getDefaultToolkit().setDynamicLayout(true);
        dtm = new DefaultTableModel(data,colNames);
        table = new JTable(dtm);
        for(int x = 0; x < 5; x++)
          dtm.addRow(new Object[]{new Boolean(false),"Row "+(x+1)+" Col 2","Row "+(x+1)+" Col 3"});
        JScrollPane sp = new JScrollPane(table);
        TableColumn tc = table.getColumnModel().getColumn(0);
        tc.setCellEditor(table.getDefaultEditor(Boolean.class));
        tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
        tc.setHeaderRenderer(new CheckBoxHeader(new MyItemListener()));
        JFrame f = new JFrame();
        f.getContentPane().add(sp);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
      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);
      public static void main (String[] args)
        SwingUtilities.invokeLater(new Runnable(){
          public void run(){
            new JTableHeaderCheckBox().buildGUI();
    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(header.getFont());
            header.addMouseListener(rendererComponent);
        setColumn(column);
        rendererComponent.setText("Check All");
        this.setBorderPainted(true);
        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) {
    }

    Hi! Have very HARD problem...
    Please copy following code in to your IDE and run.
    You see table, with customized header (with check box)
    But this header don't look native... It look's horrible
    Solutions? (JDK 5)
    package testlayouts;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    public class JTableHeaderCheckBox
      Object colNames[] = {"", "String", "String"};
      Object[][] data = {};
      DefaultTableModel dtm;
      JTable table;
      public void buildGUI()
          try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }
          catch (ClassNotFoundException e) { /* Do nothing */ }
          catch (InstantiationException e) { /* Do nothing */ }
          catch (IllegalAccessException e) { /* Do nothing */ }
          catch (UnsupportedLookAndFeelException e) { /* Do nothing */  }
          Toolkit.getDefaultToolkit().setDynamicLayout(true);
        dtm = new DefaultTableModel(data,colNames);
        table = new JTable(dtm);
        for(int x = 0; x < 5; x++)
          dtm.addRow(new Object[]{new Boolean(false),"Row "+(x+1)+" Col 2","Row "+(x+1)+" Col 3"});
        JScrollPane sp = new JScrollPane(table);
        TableColumn tc = table.getColumnModel().getColumn(0);
        tc.setCellEditor(table.getDefaultEditor(Boolean.class));
        tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
        tc.setHeaderRenderer(new CheckBoxHeader(new MyItemListener()));
        JFrame f = new JFrame();
        f.getContentPane().add(sp);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
      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);
      public static void main (String[] args)
        SwingUtilities.invokeLater(new Runnable(){
          public void run(){
            new JTableHeaderCheckBox().buildGUI();
    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(header.getFont());
            header.addMouseListener(rendererComponent);
        setColumn(column);
        rendererComponent.setText("Check All");
        this.setBorderPainted(true);
        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) {
    }

  • Getting ClassCastException When Trying To Color JTable Row?

    hi there
    i'm trying to set color for JTable Rows Using the method prepareRenderer
    and get the values of the second column which contains integer values
    and if it contain 0 integer value set the color row as red
    its already works and the row with 0 is set to red but when i try to select any cell in the table
    i'm getting
    java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integerat prepareRenderer
    although the second row which i'm trying to test it's values is Integer not String????????????
    here's the code:
    import javax.swing.border.*;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    import javax.swing.JFrame;
    public class Column_Filter {
      static JTable table;
    static DefaultTableModel dtm;  
        public static void main(String[] args) {
             String[]columns={"Name","Number","Price"};
             Object[][]data={  {"a",new Integer(5),new Integer(200)}
             ,{"b",new Integer(7),new Integer(400)}
             ,{"c",new Integer(0),new Integer(100)}
             ,{"d",new Integer(8),new Integer(800)}
             ,{"e",new Integer(3),new Integer(300)}         
             dtm=new DefaultTableModel(data,columns);
                        table=new JTable(dtm){
                      public Class getColumnClass(int column)
                        return getValueAt(0, column).getClass();
                             public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
                        Component c = super.prepareRenderer(renderer, row, column);
                        if (!c.getBackground().equals(getSelectionBackground()))
                             Integer type = (Integer)getModel().getValueAt(row, 1);
                             if(type!=null)                                                            
                             c.setBackground(type==0 ? Color.RED : Color.WHITE );
                        else
                        c.setBackground(Color.white);
                        return c;
             TableColumnModel columnModel = table.getColumnModel();
             TableColumn col1 = columnModel.getColumn(1);         
             col1.setCellEditor(new TableEditor());
             TableColumn col2 = columnModel.getColumn(2);
             col2.setCellEditor(new TableEditor());
             table.setPreferredScrollableViewportSize(new Dimension(280,160));
             JScrollPane scroll=new JScrollPane(table);
             JLabel label=new JLabel("Column Stuff",JLabel.CENTER);
             JPanel panel=new JPanel();
             panel.add(scroll);
            JFrame frame=new JFrame("Column Stuff");
            frame.add(label,BorderLayout.NORTH);
            frame.add(panel,BorderLayout.CENTER);
            frame.setSize(300,300);
            frame.setResizable(false);
            frame.setVisible(true);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 table=new JTable();     
                   table.setModel(new DefaultTableModel(new Object [][][] {},new String [] {"Name", "Number","Price"}) {
                Class[] types = new Class [] {
                    java.lang.String.class, java.lang.String.class,java.lang.String.class
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
          class TableEditor extends DefaultCellEditor
              TableEditor()
                   super( new JTextField() );               
                setClickCountToStart(0);
              public boolean stopCellEditing()
                        String editingValue = (String)getCellEditorValue();
                    if(!editingValue.equals("")){
                 try
                int i = Integer.parseInt(editingValue);
                catch(NumberFormatException nfe)
                ((JComponent)getComponent()).setBorder(new LineBorder(Color.red));       
                getComponent().requestFocusInWindow();      
                JOptionPane.showMessageDialog(null,"Data Input Error","Error",JOptionPane.ERROR_MESSAGE);
                return false;          
                    else{                                             
                     getComponent().requestFocusInWindow();
                     fireEditingCanceled();
                     JOptionPane.showMessageDialog(null,"Data Input Error","Error",JOptionPane.ERROR_MESSAGE);
                  return false;              
                   return super.stopCellEditing();
                   public Component getTableCellEditorComponent(
                   JTable table, Object value, boolean isSelected, int row, int column)
                   Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column);
                   ((JComponent)c).setBorder(new LineBorder(Color.BLACK));
                   return c;
         }

    hi again camickr
    i changed the stopCellEditing as you mentioned
    changed the getCellEditorValue to return an integer
    and give exception and error message if the value can't be converted into integer(non numeric)
    but the problem is when i run the program and change the value in any cell with numeric values
    or with non numeric or not changing the value and press enter
    it give the error message meaning it cannot convert the value to integer
    even if enter an int or don't change the value ????????
    here's what i did
    import javax.swing.border.*;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    import javax.swing.JFrame;
    public class Column_Filter {
      static JTable table;
    static DefaultTableModel dtm;  
        public static void main(String[] args) {
             String[]columns={"Name","Number","Price"};
             Object[][]data={  {"a",new Integer(5),new Integer(200)}
             ,{"b",new Integer(7),new Integer(400)}
             ,{"c",new Integer(0),new Integer(100)}
             ,{"d",new Integer(8),new Integer(800)}
             ,{"e",new Integer(3),new Integer(300)}         
             dtm=new DefaultTableModel(data,columns);
                        table=new JTable(dtm){
                      public Class getColumnClass(int column)
                        return getValueAt(0, column).getClass();
                             public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
                        Component c = super.prepareRenderer(renderer, row, column);
                        if (!c.getBackground().equals(getSelectionBackground()))
                             Integer type = (Integer)getModel().getValueAt(row, 1);                                                            
                             c.setBackground(type==0 ? Color.RED : Color.WHITE );
                        return c;
             TableColumnModel columnModel = table.getColumnModel();
             TableColumn col1 = columnModel.getColumn(1);         
             col1.setCellEditor(new TableEditor());
             TableColumn col2 = columnModel.getColumn(2);
             col2.setCellEditor(new TableEditor());
             table.setPreferredScrollableViewportSize(new Dimension(280,160));
             JScrollPane scroll=new JScrollPane(table);
             JLabel label=new JLabel("Column Stuff",JLabel.CENTER);
             JPanel panel=new JPanel();
             panel.add(scroll);
            JFrame frame=new JFrame("Column Stuff");
            frame.add(label,BorderLayout.NORTH);
            frame.add(panel,BorderLayout.CENTER);
            frame.setSize(300,300);
            frame.setResizable(false);
            frame.setVisible(true);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 table=new JTable();     
                   table.setModel(new DefaultTableModel(new Object [][][] {},new String [] {"Name", "Number","Price"}) {
                Class[] types = new Class [] {
                    java.lang.String.class, java.lang.Integer.class,java.lang.Integer.class
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
          class TableEditor extends DefaultCellEditor
              TableEditor()
                   super( new JTextField() );               
                setClickCountToStart(0);
              public boolean stopCellEditing()
                   try
                        Integer editingValue = (Integer)getCellEditorValue();
                   catch(ClassCastException exception)
               //when i enter any value in any cell this code is executed even i enter an int or don't change the value
                ((JComponent)getComponent()).setBorder(new LineBorder(Color.red));       
                getComponent().requestFocusInWindow();      
                JOptionPane.showMessageDialog(null,"Data Input Error","Error",JOptionPane.ERROR_MESSAGE);
                return false;
                   return super.stopCellEditing();
                   public Component getTableCellEditorComponent(
                   JTable table, Object value, boolean isSelected, int row, int column)
                   Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column);
                   ((JComponent)c).setBorder(new LineBorder(Color.BLACK));
                   return c;
         }

  • Adiing row header to J Table

    i want to add my row header dynamically when i am add a row by pressing the add button it is possible..
    and thr problem iam facing in this program is that the row header is there but along with row header a label like shade visible upto the end of frame.
    Any help over these
    And this is my code
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    ]import javax.swing.table.*;
    public class RowHeaderExample extends JFrame {JTable table;  
    public RowHeaderExample()
    {        super( "Row Header Example" );    
       setSize( 300, 150 );    
       ListModel listModel = new AbstractListModel() {   
            String headers[] = {"","","","","","" };        
       public int getSize() { return headers.length; }    
           public Object getElementAt(int index) { return headers[index];
         DefaultTableModel defaultModel =            new DefaultTableModel(listModel.getSize(),10);  
          table = new JTable( defaultModel );   
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);    
       // Create single component to add to scrollpane  
    final JList rowHeader = new JList(listModel);    
       rowHeader.setFixedCellWidth(40);    
       rowHeader.setFixedCellHeight(table.getRowHeight());      
    rowHeader.setCellRenderer(new RowHeaderRenderer(table));   
        JScrollPane scroll = new JScrollPane( table ); 
          scroll.setRowHeaderView(rowHeader);
    // Adds row-list left of the table      
    getContentPane().add(scroll, BorderLayout.CENTER);   
       rowHeader.addMouseListener(new MouseAdapter() {     
         public void mouseClicked(MouseEvent e) {     
         System.out.println("click Here 1");          
    int index = rowHeader.locationToIndex(e.getPoint());
    table.setRowSelectionInterval(index,index);          
    table.requestFocus();     
    public static void main(String[] args) {     
      RowHeaderExample frame = new RowHeaderExample();      
    frame.addWindowListener( new WindowAdapter() {    
           public void windowClosing( WindowEvent e ) {       
            System.exit(0);            }        });    
       frame.setVisible(true); 

    actually i dont quite understand your problem, dont know whether this one solve your problem, i guess may be the problem come from your renderer
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class RowHeaderExample
        extends JFrame {
      JTable table;
      public RowHeaderExample() {
        super("Row Header Example");
        setSize(300, 150);
        ListModel listModel = new AbstractListModel() {
          String headers[] = {
              "Row 1", "Row 2", "Row 3", "Row 4", "Row 5", "Row 6"};
          public int getSize() {
            return headers.length;
          public Object getElementAt(int index) {
            return headers[index];
        DefaultTableModel defaultModel = new DefaultTableModel(listModel.getSize(),
            10);
        table = new JTable(defaultModel);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        // Create single component to add to scrollpane
        final JList rowHeader = new JList(listModel);
        rowHeader.setFixedCellWidth(40);
        rowHeader.setFixedCellHeight(table.getRowHeight());
        rowHeader.setCellRenderer(new RowHeaderRenderer(table));
        JScrollPane scroll = new JScrollPane(table);
        scroll.setRowHeaderView(rowHeader);
        // Adds row-list left of the table
        getContentPane().add(scroll, BorderLayout.CENTER);
        rowHeader.addMouseListener(new MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
            System.out.println("click Here 1");
            int index = rowHeader.locationToIndex(e.getPoint());
            table.setRowSelectionInterval(index, index);
            table.requestFocus();
      public static void main(String[] args) {
        RowHeaderExample frame = new RowHeaderExample();
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
        frame.setVisible(true);
      class RowHeaderRenderer extends JButton implements ListCellRenderer{
        JTable table;
        public RowHeaderRenderer(JTable table){
          this.table = table;
          setFont(new Font("Dialog",0,11));
          setMargin(new Insets(0,0,0,0));
        public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean hasFocus){
          list.setBackground(getBackground());
          this.setText(value.toString());
          return this;
        public Component getListCellRendererComponent(JList list, Object value, boolean isSelected, boolean hasFocus){
          list.setBackground(getBackground());
          this.setText(value.toString());
          return this;
    }

  • Multi-colored JTable column heading?  How?

    Hi,
    I'm looking for a way to have JTable column heading text
    that can be displayed in multiple colors, so one string
    in one column header, might have each letter a different
    color.
    My application requires highlighting some of the letters
    of a word as red, while others are normal text (black).
    I've been using multi-line strings to simulate vertical
    naming for my column header, for example:
    PPP
    I I I
    N N N
    1 2 3
    for PIN1, PIN2, PIN3. The column data has a binary
    one or zero for each pin, grouped together in one JTable
    column. In my application, if there is an error, I want to
    color just the text representing, say PIN2 red and leave
    the surrounding PIN1 and PIN3 black.
    What approach should I take for doing this with JTable?
    Thanks!
    John Roberts
    [email protected]

    You should override the default cell renderer used by Java
    - JTable.getTableHeader().setDefaultRenderer(yourRenderer)
    Extend yourRenderer from JLabel and use HTML tags to change the color.
    - setText on JLabel with the HTML code like "<HTML> <BODY> <FONT COLOR="red"> A </FONT> <FONT COLOR="green"> B </FONT></BODY> </HTML>"

  • There was an error while updating row count for "SH".."SH".CHANNELS

    Hi All,
    Am new to OBIEE.Pls help in this regard.
    Am building the physical layer as per Repository guide.When am importing the data in to this,am getting the below error.
    *"There was an error while updating row count for "SH".."SH".CHANNELS" :"*
    channles is the table name and having 5 rows.
    but am able to see the data in the sql prompt. like SELECT * FROM SH.CHANNELS then 5 rows data would be displaying..
    pls help in this regard and where is the excat problem?
    Thanks,

    what is the error?
    Make sure that your connection pool settings are okay..
    Make sure that, you are using correct driver in case of if you are using ODBC dsn..
    Also make sure that, your oracle server is running... TNS and Oracle server services

Maybe you are looking for