Sorting highlighted rows in JTable

I have a sortable JTable. If a user selects a row (highlights it) and then sorts the table the wrong row is selected. After the sort the data in the row that was hightlighted is not the correct data. Basically the hightlighted selection does not follow the data to its new position. Is there a way to keep tract of the internal row indexs so that I can keep the correct rows highlited? Any ideas will be of much help.

I don't know if this is correct but if you are using TableSorter
Then you might need to access the int[] indices array that the Sorter uses to tell you where the row you had selected had moved to. To get all the rows that you had selected using
JTable a = new JTable();
a.getSelectedRows();...
I hope this helps...

Similar Messages

  • Moving Highlighted Row in JTable

    Hi All,
    I want to achieve the following. I am updating the currently selected row in a jtable from another panel. When this update occurs, i want the setSelectionInterval to next row down. I tried simply doing getSelectionModel().setSelectionInterval(currentRow+1,currentRow+1) after called my updateRow method, but its causes the update to be entered in the current row and the current row +1 and the selectioned row to become currentRow+2
    I guess this is because the fireTableChanged at that point has not been picked up by the table.
    Anyhow, how do ppl think this can be done?
    Adam

    It sounds like you may have a threading issue. I've recently started learning about the swing tables and models. I had a lot of problems with tables being updated and not being able to retain or change the selected row correctly. The problem seemed to be the order of events not being consistent. The solution was to run the tasks as Runnable objects on the event dispatcher thread. For example, the code I had for updating the table model would be something like
    javax.swing.SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                    // code to change table model
                    table.getModel().fireTableDataChanged();
    });Then, in another piece of code (in my case an open dialog that may be listening for table model changes), I would have another piece of code to re-set the selected row:
    javax.swing.SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                    table.getSelectionModel.setSelectionInterval(row, row);
    });This fixed all my problems, and on reviewing code i've written recently, a lot of other Swing related glitches I've been experiencing have now been fixed. It seems you have to be quite careful about how you handle Swing components in a threaded environment. Probably why most of the Swing classes are marked not thread safe in big letters.
    hope that helps.

  • Highlight Rows/Fields in Inetractive Report

    What is the best way to conditionally highlight rows/field in an Interactive Report? I don't want to create filters that the users can see/turn off

    Hello Bob,
    Before you have to think about what happens (or should happen) if a user creates his own highlighting. That will interfere with the highlighting you created....
    But you can set highlighting for a field in the select statement:
    select      "DEMO_ORDER_ITEMS"."ORDER_ITEM_ID" as "ORDER_ITEM_ID",
          "DEMO_ORDER_ITEMS"."ORDER_ID" as "ORDER_ID",
          "DEMO_ORDER_ITEMS"."PRODUCT_ID" as "PRODUCT_ID",
          CASE
             WHEN UNIT_PRICE < 200 THEN
             '<span style="display:block;width:30px;background-color:red;color:darkgreen;">'
             || unit_price
             || '</span>'
             ELSE to_char(unit_price)
             END UNIT_PRICE,
          "DEMO_ORDER_ITEMS"."QUANTITY" as "QUANTITY"
    from      "DEMO_ORDER_ITEMS" "DEMO_ORDER_ITEMS"But remember that the outcome of your query now changed. If you sort upon UNIT_PRICE the <span> tag also is taken into consideration.
    Greetings,
    Roel
    http://roelhartman.blogspot.com/
    You can reward this reply by marking it as either Helpful or Correct ;-)

  • Selecting Row in JTable

    Dear friends,
    When i select a whole row in JTable it gets selected but the background color of the row selected does not change. i.e. Its not highlighted as in MS-Excel.
    How can i overcome this problem?
    Kindly reply
    Thanks.

    Hi,
    Thanx for ur inputs. This is what the code i wrote. When u run this code,
    If we select row1 column1 the cells highlighted will be on row 2, 3 and 4. If we select row1 column 2 the selected cells will be on row 1, 3 and 4. I want the row to be selected fully when we select coumn 1 only.
    For eg. if i select row 200 from column 1 the 200 th row should only be fully highlighted
    Anyway i'll try the above code and check
    Here is the code
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class table1 extends JFrame
         // Variables declaration
         private JTable jTable1;
         private JScrollPane jScrollPane1;
         private JPanel contentPane;
         // End of variables declaration
         public table1()
              super();
                this.setVisible(true);
         private void initializeComponent()
              jTable1 = new JTable();
              jScrollPane1 = new JScrollPane();
              contentPane = (JPanel)this.getContentPane();
              jTable1.setModel(new DefaultTableModel(4, 4));
              jScrollPane1.setViewportView(jTable1);
              contentPane.setLayout(null);
              addComponent(contentPane, jScrollPane1, 58,65,301,207);
              this.setTitle("table1 - extends JFrame");
              this.setLocation(new Point(0, 0));
              this.setSize(new Dimension(473, 539));
         private void addComponent(Container container,Component c,int x,int
    y,int width,int height)
              c.setBounds(x,y,width,height);
              container.add(c);
         } Thanks again

  • Classic report - Highlight row

    APEX 4.2.1
    With all the latest and greatest dynamic action and jQuery goodness in 4.2.1, what is the easiest, declarative way to highlight rows in a classic report region (Generic Column Template) based on data condition using values on the row, using #COL# notation? e.g. If SAL > 1000 and DEPT = Marketing, highlight row in red or some such.
    In prior versions, this involved copying the Generic Column Template to one used just by this report and use the (up to 4) Column Templates with a PL/SQL expression.
    Thanks

    Custom report templates are okay if your needs are straightforward. But you said it already, there are only four different flavors to chose from.
    Here is a solution that'll work on all pages if once installed and can be extended to a multitude of visual attributes. Only an example that you may want to adapt to your liking.
    Edit Page, "CSS, Inline", or via Shared Components &gt; CSS files
    td.color1 {background-color:#9F9} /* Table cell gets colored in light green  */
    td.color2 {background-color:#FF9} /* Table cell gets colored in light yellow */
    td.color3 {background-color:#F99} /* Table cell gets colored in light red    */
    /** and so forth, followed by as many declarations as you need... */Page Template, "Function and Global Variable Declaration":
    /** Change the visual appearance of your classic report as you like after it's rendered */
    function customClassicReportDisplay(){
      /** Transfer the color class from the text to the table cell */
      $('td span.color1').closest('td').addClass('color1');
      $('td span.color2').closest('td').addClass('color2');
      $('td span.color3').closest('td').addClass('color3');
      // and so forth, followed by as many declarations as you need...
    }This jQuery code can be simplified, especially the handling of many lines for many colors can still be compacted, which makes it more difficult to understand though.
    Page Template, "Execute when Page Loads":
    /** Perform the function on Page Load */
    customClassicReportDisplay();
    /** Perform the function after Partial Page Rendering */
    $('form').bind('apexafterrefresh', function(){
      customClassicReportDisplay();
    });Here comes the trick. In the SQL statement, you wrap a &lt;span&gt; HTML tag with a different class declaration around each value that you want to color.
    SELECT '<span class="color' || case when some_value > 100 then '2' else null end || '">' || some_value       || '</span>' AS some_value
         , '<span class="color' || decode(some_other_value, 'too much', '3', NULL)   || '">' || some_other_value || '</span>' AS some_other_value
         , '<span class="color' || case when last_value between  0 and  10 then '1'
                                        when last_value between 11 and  50 then '2'
                                        when last_value between 51 and 100 then '3'
                                        else null end                                || '">' || last_value       || '</span>' AS last_value
      FROM ...This obviously makes the SQL a bit more complicated but in my opinion, I think this is a data driven topic and therefore just fine. Hence you say "depending on value ranges I want to change something" - and that belongs to SQL. WHAT you want to do (here: change color) is then up to your JS and CSS declaration. If you shift the SQL code into a view it's better to maintain and won't get spoiled by non-savvy third party developers...
    I know that's not what you originally asked for, because there is no #COL# notation, but for me it's the most flexible solution I can think of under APEX.

  • How to set background color of row in JTable

    Hi,I want to set different background color to rows in JTable according to some value in the this row.
    eg.
    no name isGood
    1 aaa yes (this row's background color is red)
    2 bbb no (this row's background color is blue)
    3 ccc yes (this row's background color is red)
    4 ddd yes (this row's background color is red)
    5 eee no (this row's background color is blue)
    thanks

    thanks!*_*                                                                                                                                                                                                                                                       

  • How to set background color in row of JTable ?

    i am new in java please tell me about How to set background color in row of JTable ? please example code. Thnak you.

    Here is an example: http://www.javaworld.com/javaworld/javaqa/2001-09/03-qa-0928-jtable.html
    For more info on how to use tables read the swing tutorial: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
    ICE

  • How to hide row in JTable?

    Hi all,
    How to hide some specific rows in JTable for user view filtering purpose?
    Thanks

    Try to use the Table Model.
    The "getValueAt" Methode decide what to Display.
    So a simple "if" command can hide the complete row - or a single Statement.
    public Object getValueAt(int row, int col) {
    ArrayList al = new ArrayList();
    StueliTeil tabellenzeile = (StueliTeil) getDaten().get(row);
    switch (col) {
    case 0 :
    return tabellenzeile.getUmfang();
    case 1 :
    return tabellenzeile.getTakt();
    ...

  • Inserting row in JTable (runtime)

    i need to inserting row in JTable in runtime so tell me what it do

    dear farhanaj ,
    try this code:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.table.*;
    /* <applet code=tableadd.class width=200 height=200>
    </applet>
    public class tableadd extends JApplet implements ActionListener
    Object[] data = new Object[5];
    DefaultTableModel defaulttablemodel = new DefaultTableModel();
    JTable jtable=new JTable(defaulttablemodel);
    JPanel jpanel= new JPanel();
    private     JPanel          topPanel,jpPanel;
    public     JTable          table;
    JButton jbutton1 = new JButton("create new row");
    JButton jbutton2 = new JButton("create new col");
    //JButton jbutton1=new Jbutton("r"),jbutton2=new Jbutton("c");
    public tableadd()
    for(int column=0 ; column<5 ; column++)
    defaulttablemodel.addColumn("column" + column);
    for(int row=0 ; row<5;row++)
    for(int column=0 ;column<5;column++)
    data[column]="cell" row "," + column;
    defaulttablemodel.addRow(data);
    //getContentPane().add(new JScrollPane(jtable) ,BorderLayout.CENTER);
    //getContentPane().add(new JPanel() ,BorderLayout.SOUTH);
    int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
    int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
    JScrollPane jsp = new JScrollPane(jtable , v, h);
    getContentPane().add(jsp, BorderLayout.CENTER);
    topPanel = new JPanel();
    jpPanel=new JPanel();
    topPanel.setLayout( new BorderLayout() );
    getContentPane().add(topPanel,BorderLayout.NORTH);
    getContentPane().add(jpPanel,BorderLayout.SOUTH);
    jpPanel.add(jbutton1);
    jpPanel.add(jbutton2);
    jbutton1.addActionListener(this);
    jbutton2.addActionListener(this);
    public void actionPerformed(ActionEvent e)
    if (e.getSource() == jbutton1)
    int numberrows = defaulttablemodel.getRowCount();
    int numbercolumns=defaulttablemodel.getColumnCount();
    Object[] data = new Object[numbercolumns];
    for(int column=0 ; column<numbercolumns;column++)
    data[column]="cell" numberrows "," +column;
    defaulttablemodel.addRow(data);
    else
    if (e.getSource() ==jbutton2)
    int numberrows=defaulttablemodel.getRowCount();
    int numbercolumns=defaulttablemodel.getColumnCount();
    defaulttablemodel.addColumn("column" + numbercolumns);
    for(int row=0; row<numberrows ; row++)
    defaulttablemodel.setValueAt("cell" row "," +numbercolumns ,row , numbercolumns);
                   System.out.println(row);
    //jtable.sizeColumnsToFit(0);

  • How to set different font for a particular row in jtables?

    How to set different font size and font type for a particular row in jtable?

    More than enough sample code here:
    [http://java.sun.com/docs/books/tutorial/uiswing/components/table.html]
    db

  • How to select a row in Jtable at runtime

    how to select a row in Jtable at runtime.

    use
    setRowSelectionInterval(int fromRowIndex, int toRowIndex);example if your table has 10 rows then u want to select the rows from 4 to 8 then use
    setRowSelectionInterval(3, 7);if you want to select just one row for example 5 then use
    setRowSelectionInterval(5, 5);

  • How to remove a row from JTable

    Hi!
    I'm used to remove rows from JTables getting the model and doing a removeRow(num) like this:
    ((DefaultTableModel)jTable1.getModel()).removeRow(0);
    But with ADF and JDeveloper the model says it's a JUTableBinding.JUTableModel but its not accessible.
    How to remove a row in Jdeveloper 10.1.3.4.0?

    Or maybe is just better to refresh data in the jTable but I do not know either like doing it.

  • How to apply different colors to specific rows in JTable

    hi,
    Anybody could tell me the way of colorising the rows in jtable.. I want to apply different colors to diff rows..
    If i get a piece of code that could help me a lot..
    thanks in advance,
    Sapna

    you'll find the answer at http://www2.gol.com/users/tame/swing/examples/SwingExamples.html

  • Highlight row in standard report based on value in column...

    I am trying to highlight rows of a standard report based on the value of the column TICKET_TYPE.
    I have been following the post: Highlighting a ROw in a tablular form based on a column in the row
    but having difficulty. I receive the following error:
    ORA-06550: line 1, column 34: PLS-00201: identifier 'SHRIMP' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored
    ERR-1025 Error processing PLSQL expression. SHRIMP = 'SHRIMP'
    My report query is:
    select T.TRIP_ID,
    T.TRIP_ID trip_show,
    T.TRIP_ID trip_select,
    T.DAYS_AT_SEA,
    T.NBR_OF_CREW,
    T.TRIP_START_DATE,
    T.VESSEL_ID,
    o.ticket_type ticket_type
    from TRIPS T, one_ticket_type o
    where t.dea_permit_id = :G_DEA_PERMIT_ID and t.trip_id = o.trip_id
    I have created a new template called one-ticket-highlight.
    row tempate 1 = <td #ALIGNMENT# headers="#COLUMN_HEADER#" class="t14data" style="background:red">#COLUMN_VALUE#</td>
    row template 1 condition = use based on pl/sql expression
    row template 1 expression = #TICKET_TYPE# = 'SHRIMP' (**** I have also tried without the quote)
    any thoughts? thanks!!
    Edited by: KEH813 on May 25, 2010 11:10 AM

    Hi,
    You can achive the same using javascript without changing the page template.
    http://apex.oracle.com/pls/apex/f?p=27576:8
    here is the code for the same
    <style>
    .myclass{ background-color:red;text-align:center}
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js "></script>
    <script>
    $(function(){
       $("td [headers='DEPTNO']").each( function(i){
           if($(this).html() == $v('P8_DEPTNO'))  //value of the textfield
               ele = $("td [headers='ENAME']").eq(i)
               ele.removeClass('t20data');   //i'm using theme 20 so t20data .. u need to change this part
               ele.addClass('myclass');
    </script>Regards,
    Shijesh

  • Delete row in JTable

    Hello I am new To JAVA SWING
    I have 2 questions related to JTable
    1) How do i remove selected row in JTable ...for instance, I click on the row to delete (It is selected) , later I press the delete button, and then row is removed .... any hints ?
    2) If I would like to save the rows in a JTable into a database , .... How can iterate through the rows in the JTable..each row .... the rows are saved in a List object...and a List Object is what I pass as a parameter in a class method in order to be saved into Database.
    Thanks,
    deibys

    1) use the removeRow(...) method of the DefaultTableModel
    20 use table.getModel().getValueAt(...) to get the data from the model and create your list Object.

Maybe you are looking for