Disabling a single Column in JTable

I want to disable just one column on my JTable so that the user is not able to sort on that column. Has anyone done this?
Thanks,
S

It's difficult to give a definitive answer when you don't explain how you are sorting but most JTable sorting is done by detecting a mouse click and determining which column the click location corresponds to. Just add some logic to recognize you disabled column and bypass sorting code.
Cheers
DB

Similar Messages

  • How to disable JTable Column Dragging (only single column)

    How could i disable a single column from being dragged in JTable?
    I need to fix the first column from being dragged in JTable and all other columns except the first can be dragged. how would i accomplish this task ?
    well, i know how to fix all column in jtable from being dragged using
    table.getTableHeader().setReorderingAllowed(false);But dont know how to fix only a single column. is there any method for doing this. or i have to implement any other logic?
    Please help me !
    Thanks

    The question is why do you have this requirement. I figure if the user wants to reorder the colum, let them, the table won't break.
    Maybe something like this would be acceptable:
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.table.*;
    public class FixedColumnScrollPane extends JScrollPane
        public FixedColumnScrollPane(JTable main, int fixedColumns)
            super( main );
            //  Use the table to create a new table sharing
            //  the DataModel and ListSelectionModel
            JTable fixed = new JTable( main.getModel() );
            fixed.setFocusable( false );
            fixed.setSelectionModel( main.getSelectionModel() );
            fixed.getTableHeader().setReorderingAllowed( false );
    //        fixed.getTableHeader().setResizingAllowed( false );
            fixed.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
            main.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
            //  Remove the fixed columns from the main table
            for (int i = 0; i < fixedColumns; i++)
                TableColumnModel columnModel = main.getColumnModel();
                columnModel.removeColumn( columnModel.getColumn( 0 ) );
            //  Remove the non-fixed columns from the fixed table
            while (fixed.getColumnCount() > fixedColumns)
                TableColumnModel columnModel = fixed.getColumnModel();
                columnModel.removeColumn( columnModel.getColumn( fixedColumns ) );
            //  Add the fixed table to the scroll pane
            fixed.setPreferredScrollableViewportSize(fixed.getPreferredSize());
            setRowHeaderView( fixed );
            setCorner(JScrollPane.UPPER_LEFT_CORNER, fixed.getTableHeader());
        public static void main(String[] args)
            //  Build your table normally
            JTable table = new JTable(10, 8);
            table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            JScrollPane scrollPane= new FixedColumnScrollPane(table, 1 );
            JFrame frame = new JFrame("Table Fixed Column Demo");
            frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            frame.getContentPane().add( scrollPane );
            frame.setSize(400, 300);
            frame.setVisible(true);
    }Or maybe you should be using a Row Header. A row header is like the column header of JTable. It remains fixed on the left side of the scroll pane. Search the forum for examples using "setrowheaderview".

  • Disabling auto-complete in a single column or cell

    Dear All, I find the auto-complete feature in Numbers to be both time-saving but also dangerously stupid. Why should the default option be that when only one auto-complete entry is available, continuing to type your entry and pressing the return key automatically selects that entry? I would like to be able to turn off the auto-complete for a single column, but not for the rest, in which it works very well. So far I have not found any way to do this. It seems logical enough; we ought to be able to control which columns offer the auto-complete function and which don't.
    --Kevin

    R C-R wrote:
    It would be fine if a modifier key was able to disable the feature 'locally'.
    Perhaps Control-Return would work
    Control-Return is not a modifier key, it is an entry.
    I was thinking to the ability to press a modifier key when entering the first character in the cell. Pressing this key would tell to the entry parser: don't use the auto-completion.
    For my own use, I apply a drastic formula: the auto-completion feature is disabled.
    You are satisfied with the delete feature.
    I may understand that but the OP is not.
    So I try to imagine a possible enhancement.
    What I describe may help.
    For me it changes nothing.
    For you, it let you use the delete key.
    For the OP it would give him a neat answer.
    Yvan KOENIG (from FRANCE vendredi 8 août 2008 18:49:32)

  • JTable - Column swap disabling for selected columns

    Hi,
    In my JTable i want to disable the swapping of selected columns, table.getTableHeader().setReorderingAllowed(false); this disables the whole table swapping.
    Is there anyway to disable only selected column swapping?
    Thanks in advance.
    Yours,
    Arun

    I was able to disable the column swapping in all the ways, i.e. i've solved the problem that i've said in my previous post.
    The following are the scenario'scovered, if the user wants to disable swapping of 1st and 2nd column of a JTable
    1. Donot allow dragging of the 1st and 2nd column and
    2. If the user drag-drop 3 or 4 th column in place of 1st or 2nd column, then undo the swap operation by re-swapping the columns.
    Try the following example
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.event.MouseInputListener;
    import javax.swing.plaf.basic.BasicTableHeaderUI;
    import javax.swing.table.JTableHeader;
    import javax.swing.table.TableColumnModel;
    public class FixedTableColumnsExample
        FixedTableColumnsExample()
            String[] columnNames = {"First","Last Name","Sport","# of Years","Vegetarian"};
              Object[][] data = {
              {"Mary", "Campione","Snowboarding", new Integer(5), new Boolean(false)},
              {"Alison", "Huml","Rowing", new Integer(3), new Boolean(true)},
              {"Kathy", "Walrath","Knitting", new Integer(2), new Boolean(false)},
              {"Sharon", "Zakhour","Speed reading", new Integer(20), new Boolean(true)},
              {"Philip", "Milne","Pool", new Integer(10), new Boolean(false)}
              JTable table = new JTable(data, columnNames);
            TableColumnModel columnModel = table.getColumnModel();
            EditableHeader test = new EditableHeader(columnModel);
            table.setTableHeader(test);  
            JFrame frame = new JFrame("Table Fixed Column Demo");
            frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            JScrollPane scrollPane = new JScrollPane(table);
            frame.getContentPane().add( scrollPane );
            frame.setSize(400, 300);
            frame.setVisible(true);
        public static void main(String[] args)
            new FixedTableColumnsExample();
    class EditableHeader extends JTableHeader
        public EditableHeader(TableColumnModel columnModel)
            super(columnModel);
        public void updateUI()
            setUI(new EditableHeaderUI());
    class EditableHeaderUI extends BasicTableHeaderUI
        boolean is1and2Swapped  = true;
        protected MouseInputListener createMouseInputListener()
            return new MouseInputHandler((EditableHeader) header);
        class MouseInputHandler extends BasicTableHeaderUI.MouseInputHandler
            protected EditableHeader header;
             public MouseInputHandler(EditableHeader header)
                 this.header = header;
             public void mouseDragged(MouseEvent e)
                 int draggedColumnIndex = ((EditableHeader)e.getSource()).getDraggedColumn().getModelIndex();
                 if(draggedColumnIndex != 0 && draggedColumnIndex != 1 )
                     super.mouseDragged(e);
                     is1and2Swapped = true;
                 else
                     is1and2Swapped = false;
             public void mouseReleased(MouseEvent e)
                 int draggedColumnIndex = ((EditableHeader)e.getSource()).getDraggedColumn().getModelIndex();
                 Point p = e.getPoint();
                 TableColumnModel columnModel = header.getColumnModel();
                 if(p.x < 0)
                     p.x = 0;
                 int index = columnModel.getColumnIndexAtX(p.x);
                 super.mouseReleased(e);
                 if((index == 0 || index == 1) && is1and2Swapped)
                   header.getColumnModel().moveColumn(index,draggedColumnIndex);
    }Is there anyother better way to do the swap disabling? If so please suggest me.
    This solution is having one disadvantage.
    Consider the following scenario,
    a) 1 and 2 are fixed columns.
    b) Move column 4 to 3rd position
    c) Move new 3rd column to 1st or 2nd column's position
    d) the new 3rd column is moving to position 4(its original position when the model was created) instead of position 3.
    This is because the TableColumModel is not updated properly. I'm working on that. Any Suggestions?
    Thanks
    Arun.

  • Select single column but multiple rows in JTable

    Hi
    I have a jTable and want to be able to select multiple rows but only in a single column.
    I've set these properties which makes selection almost the way I would like it.
    table1.setCellSelectionEnabled(true);
    table1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);the only problem now is that the user can select multiple columns.
    Is there a simple way to restrict selection to single column?
    regards
    abq

    table.setCellSelectionEnabled(true);
    table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    DefaultListSelectionModel model =
         (DefaultListSelectionModel)table.getColumnModel().getSelectionModel();
    model.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

  • Making a single column horizontally scrollable for JTable

    Hello Everyone and thank you for reading my post.
    I have been trying for the last 3 days to make a single column horizontally scrollable on my JTable but for some reason I can not get it to work.
    I simplyfied my example to 2 columns and 5 rows where
    the rows in the first column have long text and it will have a horizontal scroll bar to scroll to the end of the text, similiar to split in Excel.
    The second column it doesn't matter
    Thanks again and have a great time,
    Al

    Friend you use table cell renderer for your problem.
    The solution would be like:
    1. Write cell renderer that displays textfield contained in scrollpane.
    2. Apply cell renderer to separate column where you require horizontal scroller.

  • How to disable a single cell in a table (and not the whole column)

    Hi there,
    I've got a webdynpro table with a few columns, rows can be created dynamically through a button in the table toolbar.
    Depending on the value of a certain cell I have to disable another cell (in the same row).
    I tried to manipulate the view in the modifyview but no joy. I also tried to manipulate the attribute property through the coding below:
      DATA lv_knttp TYPE knttp.
      lo_nd_kostl = wd_context->path_get_node( path = `MULTIVALUES.KOSTL` ).
      lo_el_kostl = lo_nd_kostl->get_element( ).
      lo_el_kostl->set_attribute_property(
      attribute_name = 'LTEXT'
              property       = lo_el_kostl->e_property-enabled
              value          = ''
    but it disables the whole column!!!! I just need the cell to be disabled (I thought the code above, through the lead selection, would affect a certain cell only - but I was wrong).
    Any ideas?
    Thanks!!!

    Hi,
    using cell variants you can do this.,
    check this article: [Cell Variants in WDA|http://wiki.sdn.sap.com/wiki/display/WDABAP/WebDynproforABAPCellVariants]
    Instead of binding the read only property of table as a whole , just bind the read only property of column group of table., You can do this bu drill down the table and select the required column and bind the read only column.,
    then In onAction Event of button .,
    loop the table, if condition satisfied set the read only property to true else false.,!!
    hope this helps u.,
    Thanks & regards,
    Kiran

  • Disable single Column of a ListView

    Hello,
    I want to disable/hide the Column Time worked of the ListView inside the
    Resolution Tab. I know I can disable/hide the whole ListView but if possible I would like to keep the Columns
    Analyst and Last updated. Is this possible with the Authoring Tool/XML Editing or do I need to start coding with C#?

    Hi,You have to disable SortableGridViewColumn in the SortableGridView on the tab page using a custom control. This custom control has to execute the code that will search for this SortableGridView and disable the required SortableGridViewColumn of that.
    It's easy to say and not so easy to implement but doable.
    Cheers,
    Marat
    Site: www.scutils.com  Twitter:
      LinkedIn:
      Facebook:

  • Setting different editors in different cells in a single column

    Hi,
    My approach to setting different editors like JTextField,JComboBox etc to different cells in a single column is not upto fully satisfactory. As compiling the same code lower than 1.5 gives error in that line. My approach is as follows:
    ..................// other implementations
    DefaultCellEditor comboeditor,texteditor;
    JTextField tf=new JTextField();
    texteditor=new DefaultCellEditor(tf);
    texteditor.setClickCountToStart(2);
    JComboBox cb=new JComboBox("its_value_is_already_set");
    comboeditor=new DefaultCellEditor(cb);
    comboeditor.setClickCountToStart(2);
    DefaultTableModel model=new DefaultTableModel(datas,colNames);
    JTable table=new JTable(model){
      public DefaultCellEditor getCellEditor(int row,int col)
         if ((row==0) && (col==1))
            setCellEditor(texteditor);
            return texteditor;
         else if ((row==1) && (col==1))
             setCellEditor(comboeditor);
             return comboeditor;
    };The thing wat shows error while compiling in version lesser than 1.5 is in the getCellEditor(int row,int col) return type as it should be TableCellEditor not the DefaultCellEditor. But anyhow it works with 1.5 but show error in lesser version as I already said. So, wat can be the perfect code for it please help me fix it.
    regards,
    Jay

    Sorry, I forgot to mention the return statement if neither of the conditions r met in the if..else clause. I've written return (DefaultCellEditor)super.getCellEditor(). Now wats the difference in using super.getCellEditor() & super.getCellEditor(row,col). Excluding the setCellEditor(...) method is my code fine. I mean is it acceptable for other versions as I'm still confused with the return type that I have included instead of the required one... like DefaultCellEditor instead of TableCellEditor.
    regards,
    Jay

  • How to add multiple columns to single column header

    hi,
    i wans to add two columns under a single column header in jtable how can i do this.

    By following some of these clever samples:
    http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html
    Lots of different ideas on manipulating headers and columns there and on the proceeding pages.

  • How To Concatenate Column Values from Multiple Rows into a Single Column?

    How do I create a SQL query that will concatenate column values from multiple rows into a single column?
    Last First Code
    Lesand Danny 1
    Lesand Danny 2
    Lesand Danny 3
    Benedi Eric 7
    Benedi Eric 14
    Result should look like:
    Last First Codes
    Lesand Danny 1,2,3
    Benedi Eric 7,14
    Thanks,
    David Johnson

    Starting with Oracle 9i
    select last, first, substr(max(sys_connect_by_path(code,',')),2) codes
    from
    (select last, first, code, row_number() over(partition by last, first order by code) rn
    from a)
    connect by last = prior last and first = prior first and prior rn = rn -1
    start with rn = 1
    group by last, first
    LAST       FIRST      CODES                                                                                                                                                                                                  
    Lesand         Danny          1,2,3
    Benedi         Eric           7,14Regards
    Dmytro

  • Display two heading in single column using ALV report

    Hi Experts,
    I got a requirement for displaying 2 rows heading in a single column report. Is it possible that I can perform this task using ALV. How to get this 2 rows in ALV.
    This is a criteria that need to be output in ALV REPORT.
    MATERIAL CODE--MATERIAL NUMBERSTORAGE LOC----SLOC1     SLOC2
    --DATE--DATE1      DATE2
    123445--TEST MATERIAL22--
    3
    As mentioned above storage loc and date will be changing with respect to data dynamically and under this double heading qty will be displayed.
    Just want to know how to get double heading. It is clear that how to display dynamically but unaware of double heading using fieldcatalog.
    Regards,
    Yahya

    Hi Yahya,
    Please pass row position in fieldcatalogue for the respective columns.
    E.g  MOVE '2' to w_fieldcat-row_pos.  " This will display the field in 2nd row.
    Thanks,
    Rupali

  • How to display two or more links in a single column

    Hi,
    Is there a way to display two links in a single column in a sql query report . I am able to specify one but I am not able to add links to the same column . I want to take the same column id and redirect the user to different pages based on the values selected .
    Thanks

    There is no way to this declaratively that I know of. Some alternatives...
    1. Put the conditional branching logic in the report SQL itself. e.g. case when ... then '< a href=..' else '< a href=...' end and make sure the column display type is Standard Report column
    2. Have the declarative column link go to a dummy/intermediate page and setup On Load: Before-Header branches on that page to redirect to the desired page based on the item value(s) passed in to the intermediate page.

  • How to use single column in a group by clause

    hi frs
    i hve used sum function in a sql how to use a single column in a query.
    for ex
    select sum(sal),ename,job,deptno,empno from emp
    group by deptnowhether its possible to use single column in a group by class.
    i want like this because in my custom report i need it. Report query has more than 30 column so its not possible to use 30 columns in a group by.
    pls help.
    Thanks
    Rajesh

    Maybe something like this -
    Select ename, job, deptno, empno, sal, col1, col2, col3, col4 ......, coln
    From
    Select SUM(sal) sal, deptno deptno_i
    From Emp
    Group By deptno
    ,Emp
    Where deptno = deptno_i
    Shailender Mehta

  • Multiple Hotspots in a ALV Grid single column

    Hi Experts,
    My ALV Grid report output looks like below....
    If you observe below output, column 3 has multiple documents each one separated by ' ; '. Now, I would like to assign hotspot on each documents like DOC1, DOC2, DOC3, etc.
    Heading#:          COL1 | COL2 | COL3 |
    Records1:              1      |  xxxxx  | _DOC1_ ; DOC2 ; *DOC3*
    Records2:              2      |  xxxxx  | _DOC1_ ; DOC5 ;
    I know, we can assign hotspot for entire column. but my requirement is multiple hot spots in a single column.
    Please help me on this?
    Thanks in Advance
    Raghu

    As I mentioned earlier,
    My ALV Grid report output looks like below....
    Heading#: FIELD1 | FIELD2 | FIELD3 |
    Records1: 1 | xxxxx | DOC1 ; DOC2 ; DOC3
    Records2: 2 | xxxxx | DOC1 ; DOC5 ;
    If you observe above output, field 3 has multiple documents each one separated by ' ; '.
    When I click on DOC1, it supposed to display related picture on the POP-Up Screen. Similarly when I click on DOC2, it supposed to display that document picture on POP-up screen.
    Before going to do this, first I need to assign hotspots on each documents like DOC1, DOC2, DOC3, etc.
    Please help me.

Maybe you are looking for

  • Writing to File wrong

    Ok, I'm trying to write kind of a calendar program to practice on what I have learned so far. Everything compiles correctly, but the data that is stored to my Schedule.dat file is wrong :-/ For instance, I have my schedule class ask: How many days ar

  • Update terminated, DBIF_RSQL_SQL_ERROR

    Dear all,       Updatation terminated and error generated was DBIF_RSQL_SQL_ERROR. The details are: Details      Recording at local and central time........................ 02.10.2006 10:21:13 Task................ 04452  /  V1 Update Task No. 10 Tran

  • NAVS DOCUMENT TYPE

    HELLO EXPERTS, I have following issue with NAVS condition type my pricing procedure is ok, tax code is working properly.. but NAVS is maintained in step 60 in my pricing procedue, others charge are maintained in step 100. when I given some value in s

  • Optimal Configuration for WebLogic

    I've already installed weblogic but recently appears some problems of connections that I created. The problems are: 1.- My links do not work even when they are created and configured. 2.- WebLogic gets slow there any optimal settings? Thanks Edmar

  • Scratched my black iPhone 5 only  a wee one but any ideas how to remove

    I scratched my black iPhone 5 when I dropped it its new so I'm gutted. It's only a wee scratch but any hints for removing this