JCheckBox in table header

Hi,
I have a JTable, and I would like to put a JCheckBox in one of the columns table headers. I have searched the forums, and I believe I need to have an editor and renderer (i think)...and I have seen links that ref. examples (such as http://www2.gol.com/users/tame/swing/examples/JTableExamples9.html but they don't work anymore.
can someone help explain how I would put a checkbox in the header? I understand the renderers and editors (for the most part)...but how do i put them on table header??
thanks

Here is what I have now....but if i click semi-quickly on the column header...its like it doesn't catch the event in time. I can click on a regular checkbox as fast as I want, and it obviously catches my clicks..b/c i can see it check/uncheck over and over. Is there some way to make this work better, act smoother?
public class MyCheckBoxHeader extends JCheckBox implements TableCellRenderer, MouseListener {
    private boolean mouseClicked;
    private int currentColumn;
    public MyCheckBoxHeader(JTable table) {
        setHorizontalAlignment(SwingConstants.CENTER);
        JTableHeader tableHeader = table.getTableHeader();
        setBackground(tableHeader.getBackground());
        setForeground(tableHeader.getForeground());
        tableHeader.addMouseListener(this);
    /* (non-Javadoc)
     * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
    public Component getTableCellRendererComponent(
            JTable table,
            Object value,
            boolean isSelected,
            boolean hasFocus,
            int row,
            int column) {
        currentColumn = column;
        return this;
     * Had to implement this so the cell would have the same border
     * as the rest of the JTableHeader cells
    /* (non-Javadoc)
     * @see javax.swing.JComponent#paintBorder(java.awt.Graphics)
    protected void paintBorder(Graphics g) {
        g.setColor(Color.WHITE);
        // top
        g.drawLine(0, 0, getWidth(), 0);
        // left
        g.drawLine(0, 0, 0, getHeight());
        g.setColor(Color.BLACK);
        // right
        g.fillRect(getWidth() - 1, 0, 2, getHeight());
        // bottom
        g.fillRect(0, getHeight() - 1, getWidth(), getHeight());
     * Calls doClick(), because the CheckBox doesn't receive any
     * mouseevents itself. (because it is in a CellRendererPane).
   protected void handleClickEvent(MouseEvent e) {
       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 == currentColumn && e.getClickCount() == 1) {
           doClick();
           repaint();
           int rowCount = tableView.getRowCount();
           for (int i = 0; i < rowCount; i++) {
               tableView.getModel().setValueAt(new Boolean(isSelected()), i, 0);
   public void mouseClicked(MouseEvent e) {
       handleClickEvent(e);
       // repaint the header to make sure the check is shown in the checkbox
       ((JTableHeader)e.getSource()).revalidate();
   public void mousePressed(MouseEvent e) {
   public void mouseReleased(MouseEvent e) {
   public void mouseEntered(MouseEvent e) {
       setCursor(Cursor.getDefaultCursor());
   public void mouseExited(MouseEvent e) {
}any suggestions would be helpful...thanks

Similar Messages

  • Using a JCheckBox in the header of a JTable

    I would like to know if it is possible to put a JCheckBox in the header of a column of a JTable.
    In fact my table has several columns and its first column uses checkboxes to signify the seleced items in the table. I would like to have a checkbox in the header of this column so when it is checked, I select all possible items from the table (not all rows are selectable).
    I have not seen any eample of putting something other than text in table headers. Does anyone know if this is possible and how to do it?

    I haven't tried check boxes but I use my own header renderers for other purposes. They are the same as cell renderers, so this sort of thing should work...
    TableColumn tc = myTable.getColumnModel().getColumn(0);
    tc.setHeaderRenderer(new CheckHeaderRenderer());
    class CheckHeaderRenderer extends JCheckBox implements TableCellRenderer
      public Component getTableCellRendererComponent(JTable table,
                                               Object  value,
                                               boolean isSelected,
                                               boolean hasFocus,
                                               int     row,
                                               int     column)
        // whatever
        return this;

  • Table header wrap text?

    Hi,
    Is it possible to wrap the text of a table heading? I have found this question in many places always with a negative answer. Althought they are old posts and in main thread of this forum [POLL: Web Dynpro UI elements - enhancement proposals; in the first response Armin says that header text wrapping is now supported. Anyone knows how? I am working with NW7.0
    Thanks,
    Gabriel.

    Hi Gabriel,
    The header text wrapping is now supported in the SAP CE 7.1 and SAP NW 7.0 EHP 1.
    This a table column property.
    For documentation on NW 7.0 EHP 1 please refer the following link:
    http://help.sap.com/saphelp_nw70ehp1/helpdata/en/c4/219041d3c72e7be10000000a1550b0/frameset.htm
    Regards,
    Kartikaye

  • In SSRS , after exporting report in excel,wrap text property for cell and freeze column for SSRS table header not working in Excel

    I am working no one SSRS my table headers are freeze cangrow property is false and my report is working perfect while rendering data on RDL and i want same report after exporting in Excel also , i want my table header to be freeze and wrap text property
    to work after exporting in my report in excel but its not working ,is there any solution ? any patch ? any other XML code for different rendering ? 

    Hi Amol,
    According to your description, you find the wrap text property and fix column is not working after exporting into Excel. Right?
    In Reporting Services, when exporting to excel file, it has limitation for textbox.
    Text boxes are rendered within one Excel cell. Font size, font face, decoration, and font style are the only formatting that is supported on individual text within an Excel cell.
    Excel adds a default padding of approximately 3.75 points to the left and right sides of cells. If a text box’s padding settings are less than 3.75 points and is just barely wide enough to accommodate the text, the text may wrap in Excel.
    In this scenario, it supposed to be wrap text unless you merge cells. If cells are merged, word-wrap does not work correctly. If any merged cells exist on a row where a text box is rendered with the
    AutoSize property, autosize will not work. For the Fix Data Property, it can't be working in Excel. These are features when exporting to Excel. We can't change it because it's by design.
    Reference:
    Exporting to Microsoft Excel (Report Builder and SSRS)
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou

  • How to hide the table header if no data present

    Hi
    I need to hide the table header if no data present. Table has 5 column. if no any clolumn has data then this table section should not be display.
    i am using <?if:count(Installation_Event_S19)= 0?> but this is not work for me.
    Could you please help me out.
    Thanks
    Indrajeet Kumar

    Hi Priya,
    Thank you very much !!! its work fine.
    Thanks
    Indrajeet Kumar

  • How to add the Row count(number of rows in table)  in  the table header?

    Hi,
    I'm having a table. This table is viewed when i click on a search button.
    <b>On the table header it should dynamically display the number of rows in the table, i.e., the row count.</b>
    How to do this? could any one explain me with the detailed procedure to achieve this.
    Thanks & Regards,
    Suresh

    If you want to show a localized text in the table header, you should use the <b>Message Pool</b> to create a (parameterized) message "tableHeaderText" like "There are table entries".
    Next, create a context attribute "tableHeaderText" of type "string" and bind the "text" property of the table header Caption UI element to this attribute.
    Whenever the table data has changed (e.g. at the end of the supply function for the table's data source node), update the header text:
    int numRows = wdContext.node<TableDataSourceNode>().size();
    String text = wdComponentAPI.getTextAccessor().getText
      IMessage<ComponentName>.TABLE_HEADER_TEXT,
      new Object[] { String.valueOf(numRows) }
    wdContext.currentContextElement().setTableHeaderText(text);
    Maybe you want to provide a separate message for the case that there are no entries.
    Alternatively, you can make the attribute calculated and return the header text in the attribute getter.
    Armin

  • Insert a new Dropdown UI-Element in a Table header

    Hello,
    i need to insert a Dropdown UI-element in a Table header, i was looking in the forum and the Web, BUT i didnt find anythinf that can help.
    please schow me how can I insert a DropDown UI-Element in the Header.
    thank you all

    Hello,
    You can normally create a table. Insert a table column and for the table column you need to give Dorpdown by Key / index as a cell editor.
    Thanks,
    Raju Bonagiri

  • Table Header in freezed pane when exporting SSRS report to Excel

    Hi,
    I want table Header in freezed pane when exporting SSRS report to Excel.
    Can I have the table header of tablix be present in freezed pane of excel.
    Thanks,
    Vivek Singh

    Hi Vivek,
    Please refer the following thread.
    may be u get the answer.
    How to freeze header pane in SSRS
    Regards
    msbilearning

  • How can I right-align a table header?

    Does anyone know a way to right-align a table header?
    For example, in the table below I want the word 'Price' to be right-aligned. I could set the table's 'header renderer' to be a right-aligned DefaultTableCellRenderer, but then the header would look like a cell, not a header. Why can't swing be simple, like table.getColumn(1).setAlignment(Column.RIGHT) ????
    public class TestTableHeader {
         public static void main(String[] args) throws Exception {
              JFrame frame = new JFrame("Test");
              Object[][] rowData = new Object[][] { { "General Electric", "$100.60" },
                        { "IBM", "$5.20" }, { "Wal-mart", "$17.00" } };
              JTable table = new JTable(rowData, new Object[] { "Name", "Price" });
              DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
              renderer.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);
              table.getColumnModel().getColumn(1).setCellRenderer(renderer);
              frame.getContentPane().add(new JScrollPane(table));
              frame.setSize(400, 300);
              frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              frame.setVisible(true);
    }

    I modified your code an came up with a solution to the problem.
    import java.awt.Component;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    public class TestTableHeader {     
         public static void main(String[] args) throws Exception {
              JFrame frame = new JFrame("Test");
              Object[][] rowData = new Object[][] {
                        { "General Electric", "$100.60" }, { "IBM", "$5.20" },
                        { "Wal-mart", "$17.00" } };
              JTable table = new JTable(rowData, new Object[] { "Name", "Price" });
              RightAlignRender right = new TestTableHeader().new RightAlignRender();
              table.getColumnModel().getColumn(0).setHeaderRenderer(right);
              table.getColumnModel().getColumn(1).setHeaderRenderer(right);
              frame.getContentPane().add(new JScrollPane(table));
              frame.setSize(400, 300);
              frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              frame.setVisible(true);
         public class RightAlignRender extends DefaultTableCellRenderer {
              public Component getTableCellRendererComponent(JTable table,
                        Object arg1, boolean arg2, boolean arg3, int arg4, int column) {
                   Component toReturn = table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table,
                             arg1, arg2, arg3, arg4, column);
                   switch (column) {
                   case 0:
                        ((JLabel) toReturn).setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
                        break;
                   case 1:
                        ((JLabel) toReturn).setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);
                        break;
                   return toReturn;
    }

  • Table Header not getting repeated in subsequent pages

    Hi,
    I have a table and i want to table header to be repeated in subsequent pages but only till 2nd page the table header is repeated from the 3rd page onwards the table header is not repeated.
    I have selected the Header Row in hierarchy and in Pagination tab for the header row i have checked the the check box Insert Header Row in Subsequent Pages.
    After selecting the checkbox also table header is repeated only in 2 pages and not repeated after the second page.
    My table hierarchy in form is :
    TableSubform
    ---Table
    HeaderRow
    Row1
    I am using Designer 8.0 and Acrobat Reader 8.1.2
    Can you please help me in solving this issue.
    Regards,
    Bala Baskaran.s

    Hi All,
    I have selected the the check box Insert Header Row in Subsequent Pages then also the header is not getting flowed in subsequent pages only till 2nd page its getting flowed.
    I have used table wizard to create table and i have made the table subform as flowed then also table header is not repeating in subsequent pages.
    MainForm (Flowed)
    TableSubform1(Flowed)
    Table1
    HeaderRow
    Row1
    TableSubform2(Flowed)
    Table2
    HeaderRow
    Row1
    I selected TableSubform1 and in Pagination tab OverFlow Leader dropdown i selected HeaderRow, the same i did for TableSubform2 also but the table header is not getting repeated in subsequent pages.
    Please help me in solving this problem.
    Regards,
    Bala Baskaran.S

  • Button not working in a table header

    I have a custom view that implements table header. I have buttons in that view. The buttons used to work fine in SDK prior to 5. I moved directly to SDK 7, and the buttons stopped working. The action is not called anymore.
    Any help will be appreciated.
    Thanks

    Well, you have me stumped. I just replicated your code and it works fine for me:
    - (void)doStuff:(id)sender
    NSLog(@"Logo Touched!");
    - (void)viewDidLoad {
    // loadingView is a UIView that becomes the tableHeaderView
    self.tableView.tableHeaderView = loadingView;
    [loadingActivity startAnimating];
    // setup a sample button (declared in header)
    logoButton = [[UIButton alloc] initWithFrame:CGRectZero];
    [logoButton setImage:[UIImage imageNamed:@"logo_webclip.png"] forState:UIControlStateNormal];
    [logoButton addTarget:self action:@selector(doStuff:) forControlEvents:UIControlEventTouchUpInside];
    logoButton.tag = 100;
    [loadingView addSubview:logoButton];
    - (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    logoButton.frame = CGRectMake(50., 50., 64., 64.);
    That calls my target everytime it's touched... are you remembering to call the superclass for each of your overrided methods in your custom UIView? The only difference between my quick test and yours is that I didn't subclass UIView -- I just used the UIView class directly.

  • Vertical text in table heading

    Hi,
    I would like to save some space in some reports and I would like to change orientation of text in table heading.
    Is it posible to have vertical text in table heading?
    What I want is showed on this picture: [Vertical text|¨http://img179.imageshack.us/img179/234/obiverticaltext.jpg]
    Thank you for some tips.

    Hi,
    Go through this...will help you solve your requirement....http://blog.trivadis.com/blogs/andreasnobbmann/archive/2009/07/17/vertical-text-in-obiee.aspx
    Use the same code Writing-mode: tb-rl; filter: flipv fliph; in custom css style of column heading.(column properties->column format->edit format icon beside column heading->css style)
    Regards,
    Srikanth

  • Is there a way to make a "table header" a column instead of a row?

    I am making a 508 compliant pdf from a predesigned indesign document that has many tables in it. The table that I am having problems with doesn't have it's table header as a Row at the top of the table but instead a Column that runs down the left side like this example:
    To be read correctly in the pdf by screen readers the header needs to be included in the table but I don't know how to make a column a header, I have only found the option of making a row a header. Is there a way to do this or will I just have to retag and reorder the tags in the pdf after?
    Thanks!

    @Joel – ah, now I begin to understand.
    Slapbet wants to change the reading order in a two column table from:
    Usually:
    1  2
    3  4
    5  6
    to:
    1  4
    2  5
    3  6
    If so, you need two separate tables:
    One for column 1, one for column 2.
    Grouped together, anchored in a text frame with the flowing text.
    Could the every column is a single table construct work for you?
    Or is it necessary for what ever reason (besides editing) to work with a single table?
    A script could help to split every  column to a single table, making a group and anchor it to the text flow.
    Or did I misunderstand what the problem here is?
    Uwe

  • Image in a table-header

    Hello,
    I don't know why but I cannot place an image in one specific table-header.
    It works fine in my table-cells but in the table-header only the text appears.
    I thought i could place an image in a header, just like a text-string but that is not possible.
    Does anyone know how to handle that problem???
    Thank you so much

    Hi,
    either you use table.getTableHeader().setDefaultRenderer(yourRenderer) to set one renderer for all columns or you use table.getColumnModel().getColumn(index).setHeaderRenderer(yourRenderer) to set a renderer for individual columns.

  • How to add One Button to the Table Header.

    Hi,
    I would like to have few Table Header columns as Button and Other Table Header Columns as String. And each Button should have separate action. Please let me know, how can i implement this one.
    Thanks
    Mohan

    do not cross post, this is a bad habit. now do you know about www.google.com. well this is a search engine, learn how to use it before you post. i got this link with this keyword search.
    http://www.exampledepot.com/egs/javax.swing.table/pkg.html
    http://forum.java.sun.com/thread.jspa?threadID=560605&tstart=15
    hope this helps you
    regards
    Aniruddha

Maybe you are looking for