Error mouse click header on jtable

I have a small project. I use jtable, i wrote class MymodelTable for jtable (include event mouseclicked).
On jtable, i can click on header to sort.
But, when i click button search a string (get from textfield), i was be error ...
Please help me resolve my error. (I attached my project in path: http://www.mediafire.com/?u4nw7uajdxrg97h )
Thanks

With a call to getSelectionModel() of JTable, you can get a reference to the ListeSelectionModel.
This is in fact an instance of DefaultListSelectionModel, which allows you to set a new listener object using addListSelectionListener(ListSelectionListener l).
All you have to do then is implement a custom ListSelectionListener which handles events as you want.
Unfortunately there isnt going to be a way of avoiding writing a Listener, but this is how you would go about it.
colr__

Similar Messages

  • Changing mouse click behavior on JTable

    Hi everybody,
    The default behavior of a mouse click on a jTable is selection of the cell.
    I would like to change the behavior so when the user clicks once on the cell, the content can be marked and is ready to change. That would give the user the same feeling as Excel.
    Is there any way that I can do this without writing a new mouse/event handler?
    thanks,

    With a call to getSelectionModel() of JTable, you can get a reference to the ListeSelectionModel.
    This is in fact an instance of DefaultListSelectionModel, which allows you to set a new listener object using addListSelectionListener(ListSelectionListener l).
    All you have to do then is implement a custom ListSelectionListener which handles events as you want.
    Unfortunately there isnt going to be a way of avoiding writing a Listener, but this is how you would go about it.
    colr__

  • Multiple Buttons in JTable Headers:  Listening for Mouse Clicks

    I am writing a table which has table headers that contain multiple buttons. For the header cells, I am using a custom cell renderer which extends JPanel. A JLabel and JButtons are added to the JPanel.
    Unfortunately, the buttons do not do anything. (Clicking in the area of a button doesn't appear to have any effect; the button doesn't appear to be pressed.)
    Looking through the archives, I read a suggestion that the way to solve this problem is to listen for mouse clicks on the table header and then determine whether the mouse clicks fall in the area of the button. However, I cannot seem to get coordinates for the button that match the coordinates I see for mouse clicks.
    The coordinates for mouse clicks seem to be relative to the top left corner of the table header (which would match the specification for mouse listeners). I haven't figured out how to get corresponding coordinates for the button. The coordinates returned by JButton.getBounds() seem to be relative to the top left corner of the panel. I hoped I could just add those to the coordinates for the panel to get coordinates relative to the table header, but JPanel.getBounds() gives me negative numbers for x and y (?!?). JPanel.getLocation() gives me the same negative numbers. When I tried JPanel.getLocationOnScreen(), I get an IllegalComponentStateException:
    Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
    Can someone tell me how to get coordinates for the button on the JTableHeader? Or is there an easier way to do this (some way to make the buttons actually work so I can just use an ActionListener like I normally would)?
    Here is relevant code:
    public class MyTableHeaderRenderer extends JPanel implements TableCellRenderer {
    public MyTableHeaderRenderer() {
      setOpaque(true);
      // ... set colors...
      setBorder(UIManager.getBorder("TableHeader.cellBorder"));
      setLayout(new FlowLayout(FlowLayout.LEADING));
      setAlignmentY(Component.CENTER_ALIGNMENT);
    public Component getTableCellRendererComponent(JTable table,
                                                     Object value,
                                                     boolean isSelected,
                                                     boolean hasFocus,
                                                     int row,
                                                     int column){
      if (table != null){
        removeAll();
        String valueString = (value == null) ? "" : value.toString();
        add(new JLabel(valueString));
        Insets zeroInsets = new Insets(0, 0, 0, 0);
        final JButton sortAscendingButton = new JButton("1");
        sortAscendingButton.setMargin(zeroInsets);
        table.getTableHeader().addMouseListener(new MouseAdapter(){
          public void mouseClicked(MouseEvent e) {
            Rectangle buttonBounds = sortAscendingButton.getBounds();
            Rectangle panelBounds = MyTableHeaderRenderer.this.getBounds();
            System.out.println(Revising based on (" + panelBounds.x + ", "
                               + panelBounds.y + ")...");
            buttonBounds.translate(panelBounds.x, panelBounds.y);
            if (buttonBounds.contains(e.getX(), e.getY())){  // The click was on this button.
              System.out.println("Calling sortAscending...");
              ((MyTableModel) table.getModel()).sortAscending(column);
            else{
              System.out.println("(" + e.getX() + ", " + e.getY() + ") is not within "
                                 + sortAscendingButton.getBounds() + " [ revised to " + buttonBounds + "].");
        sortAscendingButton.setEnabled(true);
        add(sortAscendingButton);
        JButton button2 = new JButton("2");
        button2.setMargin(zeroInsets);
        add(button2);
        //etc
      return this;
    }

    I found a solution to this: It's the getHeaderRect method in class JTableHeader.
    table.getTableHeader().addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e) {
        Rectangle panelBounds = table.getTableHeader().getHeaderRect(column);
        Rectangle buttonBounds = sortAscendingButton.getBounds();
        buttonBounds.translate(panelBounds.x, panelBounds.y);
        if (buttonBounds.contains(e.getX(), e.getY()) && processedEvents.add(e)){  // The click was on this button.
          ((MyTableModel) table.getModel()).sortAscending(column);
    });

  • How do I fix error message "This document contains a link to an asset being upsampled. You should resize it smaller or right-mouse click on the asset in the Assets panel to see additional options." Which asset is it?

    I ab in Muse. How do I fix error message, This document contains a link to an asset being upsampled. You should resize it smaller or right-mouse click on the asset in the Assets panel to see additional options.

    You should ask in Help with using Adobe Muse CC
    This Cloud forum is not about using individual programs
    This Cloud forum is about the Cloud as a delivery & install process
    If you will start at the Forums Index https://forums.adobe.com/welcome
    You will be able to select a forum for the specific Adobe product(s) you use
    Click the "down arrow" symbol on the right (where it says All communities) to open the drop down list and scroll

  • Multiple JButtons inside JTable cell - Dispatch mouse clicks

    Hi.
    I know this subject has already some discussions on the forum, but I can't seem to find anything that solves my problem.
    In my application, every JTable cell is a JPanel, that using a GridLayout, places vertically several JPanel's witch using an Overlay layout contains a JLabel and a JButton.
    As you can see, its a fairly complex cell...
    Unfortunately, because I use several JButtons in several locations inside a JTable cell, sometimes I can't get the mouse clicks to make through.
    This is my Table custom renderer:
    public class TimeTableRenderer implements TableCellRenderer {
         Border unselectedBorder = null;
         Border selectedBorder = null;
         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                   boolean hasFocus, int row, int column) {
              if (value instanceof BlocoGrid) {
                   if (isSelected) {
                        if (selectedBorder == null)
                             selectedBorder = BorderFactory.createMatteBorder(2,2,2,2, table.getSelectionBackground());
                        ((BlocoGrid) value).setBorder(selectedBorder);
                   } else {
                        if (unselectedBorder == null)
                             unselectedBorder = BorderFactory.createMatteBorder(2,2,2,2, table.getBackground());
                        ((BlocoGrid) value).setBorder(unselectedBorder);
              return (Component) value;
    }and this is my custom editor (so clicks can get passed on):
    public class TimeTableEditor extends AbstractCellEditor implements TableCellEditor {
         private TimeTableRenderer render = null;
         public TimeTableEditor() {
              render = new TimeTableRenderer();
        public Component getTableCellEditorComponent(JTable table, Object value,
                boolean isSelected, int row, int column) {
             if (value instanceof BlocoGrid) {
                  if (((BlocoGrid) value).barras.size() > 0) {
                       return render.getTableCellRendererComponent(table, value, isSelected, true, row, column);
             return null;
        public Object getCellEditorValue() {
            return null;
    }As you can see, both the renderer and editor return the same component that cames from the JTable model (all table values (components) only get instantiated once, so the same component is passed on to the renderer and editor).
    Is this the most correct way to get clicks to the cell component?
    Please check the screenshot below to see how the JButtons get placed inside the cell:
    http://img141.imageshack.us/my.php?image=calendarxo9.jpg
    If you need more info, please say so.
    Thanks.

    My mistake... It worked fine. The cell span code was malfunctioning. Thanks anyway.

  • Mouse click in JTable

    Hi All,
    I want to force mouse click when right clicking on a JTable. I mean when the right click is done in the mouse, the left click should be forced. I have a JTable with some values in it. I want to select the particular column in the table when right click mouse action. How can I do it?
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    public class TableDemo extends JFrame
        private JTable table;
        private JScrollPane jsp;
        private JPanel jp;
        public TableDemo()
            initComponents();
        private void initComponents()
            jp = new JPanel();
            String columnNames[] = { "Column 1", "Column 2", "Column 3" };
            String dataValues[][] =
                { "12", "234", "67" },
                { "-123", "43", "853" },
                { "93", "89.2", "109" },
                { "279", "9033", "3092" }
            table = new JTable(dataValues, columnNames);
            jsp = new JScrollPane(table);
            jsp.setViewportView(table);
            jp.add(jsp);
            table.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent evt) {
                    if(evt.getButton() == 3) {
                        System.out.println("Right Click........");
                        // Mouse left click should be forced here to select the row.
                    if(evt.getButton() == 1) {
                        System.out.println("Mouse LEFT CLICK FORCED.....");
            getContentPane().add(jp);
            pack();
            setVisible(true);
        public static void main(String args[])
            new TableDemo();
    }

    There may be a better way, but you could just use java.awt.Robot to perform the left click. I've changed your code around a bit: it shouldn't extend JFrame as it is in no way a special type of JFrame. And a GUI should always be launched on the EDT.**import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class ForceLeftClick {
       private JTable table;
       private void makeUI() {
          String columnNames[] = {"Column 1", "Column 2", "Column 3"};
          String dataValues[][] = {
             {"12", "234", "67"},
             {"-123", "43", "853"},
             {"93", "89.2", "109"},
             {"279", "9033", "3092"}
          table = new JTable(dataValues, columnNames);
          JScrollPane scrollPane = new JScrollPane(table);
          scrollPane.setViewportView(table);
          table.addMouseListener(new MouseAdapter() {
             @Override
             public void mouseClicked(final MouseEvent evt) {
                if (evt.getButton() == MouseEvent.BUTTON3) {
                   System.out.println("Right Click........");
                   // Mouse left click should be forced here to select the row.
                   //final Point point = evt.getLocationOnScreen();
                   SwingUtilities.invokeLater(new Runnable() {
                      @Override
                      public void run() {
                         try {
                            Robot robot = new Robot();
                            //robot.mouseMove(point.x, point.y);
                            robot.mousePress(InputEvent.BUTTON1_MASK);
                            robot.mouseRelease(InputEvent.BUTTON1_MASK);
                         } catch (AWTException ex) {
                            ex.printStackTrace();
                if (evt.getButton() == MouseEvent.BUTTON1) {
                   System.out.println("Mouse LEFT CLICK FORCED.....");
          JFrame frame = new JFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.add(scrollPane);
          frame.pack();
          frame.setVisible(true);
       public static void main(String args[]) {
          SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
                new ForceLeftClick().makeUI();
    }If there are issues of Robot clicking in the wrong location because the user moves the mouse before the robot does its stuff (not likely, but..), uncomment the two commented lines.
    db
    **edit And always use constant fields by name, not magic numbers. MouseEvent.BUTTON1, not 1. That keeps your code implementation independent.
    Edited by: Darryl.Burke

  • JTable, select row on right mouse click

    Hi,
    If I right click on a jTable row in my application, the row I click on does not get selected.
    How can I modify the mouse listener attached to the jtable to deal with this?
    jtable.addMouseListener( { e->
    if (e.isPopupTrigger())
        swing.popupMenu(menuItems).show(e.getComponent(), e.getX(), e.getY());
    } as java.awt.event.MouseListener)Thanks!

    Problem solved!
    jtable.addMouseListener( { e->
    if (e.isPopupTrigger()){
        int row = jtable.rowAtPoint( e.getPoint() );
        jtable.changeSelection( row, 0, false, false );
        swing.popupMenu(menuItems).show(e.getComponent(), e.getX(), e.getY());
    } as java.awt.event.MouseListener)

  • How to Select  a Row in a JTable, on a right mouse click?

    Hi all!
    I need to know the Row index in a JTable, on a right mouse click?
    Executing following code, I get the "Column Number" on a mouse click
    TableColumnModel columnModel = tableView.getColumnModel();
    int viewColumn = columnModel.getColumnIndexAtX(e.getX());
    int columnIdx = tableView.convertColumnIndexToModel(viewColumn);
    Dows any body know the code that gets "rowIdx" on a mouse e.getY() method??
    Hope early response!

    int row = table.rowAtPoint( e.getPoint() );
    int column = table.columnAtPoint( e.getPoint() );

  • How to select a row in JTable for right mouse click ?

    Hi All,
    I need to select a row on JTable for right mouse click ?
    Can any one help me ?
    Thanks a lot.
    Seelam.

    Got solution...
    tabel.addRowSelectionInterval(..) works.
    thanks.

  • I want to manage my pdf conversion to word account, but when I click on manage I get an error message saying Heading too Large.  How do I get into manage

    I want to manage my pdf conversion to word account, but when I click on manage I get an error message saying Heading too Large.  How do I get into manage

    Hi,
    May i know which service you are using?
    Would it be possible for you to send me the screenshot of the error?
    Regards,
    Florence

  • Detecting mouse clicks in editable cell of JTable

    Hi everyone :)
    I thought that this question might have been asked before, but I have searched the forums extensively and have not been able to find the solution.
    What I want to achieve is to detect single and double mouse clicks on JTable cells (that are editable).
    For example, I have a JTable and there exists within it an editable cell. If the user clicks on it once then that cell goes into edit mode, and the user can type directly into the cell. I have already successfully implemented this.
    However, what I also want to do is detect a double-click so that I can pop up a dilaog that shows a list of default values that the user can select.
    So here is what I want;
    1. User clicks on the cell once.
    2. Cell moves into edit mode.
    3. If the user clicks again within a certain time interval then cancel edit mode and pop up a dialog containing values that the user can select from.
    I think that to do this I need to be able to detect mouse clicks on the cell that is currently being edited. So far I have been unable to discover how this is done. I have even tried extending JTextField to get what I want, but with no luck.
    Any help would be greatly appreciated.
    Kind regards,
    Ben Deany

    Thanks for the reply.
    Unfortunately, it is not possible to call 'AddMouseListener()' on a cell editor. You are only able to call 'addCellEditorListener()' and that only allows two events to the broadcast (edit cancel, and edit stop).
    Ben

  • Right Mouse Click Error Message

    I have captured a software simulation using Captivate 6 which requires the user to advance to the next slide via a right mouse click (RMC). I have the accessiblity features switched off. However from the LMS when I RMC I get an error message refering me to the course .htm file.
    Has anyone else came across this and if do how can I fix it.

    You should ask in Help with using Adobe Muse CC
    This Cloud forum is not about using individual programs
    This Cloud forum is about the Cloud as a delivery & install process
    If you will start at the Forums Index https://forums.adobe.com/welcome
    You will be able to select a forum for the specific Adobe product(s) you use
    Click the "down arrow" symbol on the right (where it says All communities) to open the drop down list and scroll

  • Emulating mouse click on JTable

    Hi. I'm trying to generate a mouse click on my table using:
    dispatchEvent(new MouseEvent(this, 0, System.currentTimeMillis(), 0, 0, 0, 1, false));
    but the program doesn't pick up the mouse event. What should I do?
    Thanks

    search www.globalleafs.com 's download section. there are some cool programmes out there.

  • Double click on a JTable row.

    I got and run a sample about double click on a JTable and it works fine. This sample defines a TableModel as shown at the end this note.
    On the other hand, I have an application in which I have defined a JTable
    using the DefaultTableModel as follows :
    DefaultTableModel dtm = new DefaultTableModel(data, names);
    JTable table  = new JTable(dtm);  where data and names are String arrays.
    Of course the mouse listener stuffs have been also specified.
    table.addMouseListener(new MouseAdapter(){
         public void mouseClicked(MouseEvent e){
          if (e.getClickCount() == 2){
             System.out.println(" double click" );
         } );Because the difference with the sample was the table model,
    I changed it with the DefaultTableModel class. At this point, the Double click does not work anymore.
    So I gues it should be an option which prevents double click to work.
    I thought of using mousePress() instead of mouseClick(), but it's very dangerous (I tried). . If by error the user clicks twice (instead of only once) the mousePress method is invoked twice for the same entry
    My question is now simple, may I use double click on a JTable with the default table model. If so, what I have to do ?
    Thanks a lot
    Gege
    TableModel dataModel = new AbstractTableModel() {
         public int getColumnCount() { return names.length; }
         public int getRowCount() { return data.length;}
         public Object getValueAt(int row, int col) {return data[row][col];}
         public String getColumnName(int column) {return names[column];}
         public Class getColumnClass(int col) {return getValueAt(0,col).getClass();}
         public void setValueAt(Object aValue, int row, int column) {
           data[row][column] = aValue;
         };

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class ClickIt extends MouseAdapter
        public void mousePressed(MouseEvent e)
            JTable table = (JTable)e.getSource();
            Point p = e.getPoint();
            if(e.getClickCount() == 2)
                System.out.println("table.isEditing = " + table.isEditing());
            int row = table.rowAtPoint(p);
            int col = table.columnAtPoint(p);
            String value = (String)table.getValueAt(row,col);
            System.out.println(value);
        private JTable getLeftTable()
            final String[] names = { "column 1", "column 2", "column 3", "column 4" };
            final Object[][] data = getData("left");
            TableModel dataModel = new AbstractTableModel() {
                public int getColumnCount() { return names.length; }
                public int getRowCount() { return data.length;}
                public Object getValueAt(int row, int col) {return data[row][col];}
                public String getColumnName(int column) {return names[column];}
                public Class getColumnClass(int col) {return getValueAt(0,col).getClass();}
                public void setValueAt(Object aValue, int row, int column) {
                    data[row][column] = aValue;
            JTable table = new JTable(dataModel);
            return configure(table);
        private JTable getRightTable()
            String[] colNames = { "column 1", "column 2", "column 3", "column 4" };
            JTable table = new JTable(new DefaultTableModel(getData("right"), colNames));
            return configure(table);
        private Object[][] getData(String s)
            int rows = 4, cols = 4;
            Object[][] data = new Object[rows][cols];
            for(int row = 0; row < rows; row++)
                for(int col = 0; col < cols; col++)
                    data[row][col] = s + " " + (row*cols + col + 1);
            return data;
        private JTable configure(JTable table)
            table.setColumnSelectionAllowed(true);
            table.setCellSelectionEnabled(true);
            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            table.addMouseListener(this);
            return table;
        private JPanel getContent()
            JPanel panel = new JPanel(new GridLayout(1,0,0,5));
            panel.add(new JScrollPane(getLeftTable()));
            panel.add(new JScrollPane(getRightTable()));
            return panel;
        public static void main(String[] args)
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setContentPane(new ClickIt().getContent());
            f.pack();
            f.setVisible(true);
    }

  • COMMIT_FOARM IS NOT WORKING INSIDE THE  WHEN-MOUSE-CLICK

    Dear friends
    I have following script in when-mouse-click trigger
    BEGIN
    IF NOT Form_Success THEN
    Bell;
    RAISE Form_Trigger_Failure;
    END IF;
    IF :System.Form_Status = 'CHANGED' THEN
    IF :LOCK_FLAG = 1 THEN
    UPDATE PROJ.IM_REQUEST_HEADER
         SET LOCK_FLAG = 1
         WHERE DOC_CODE = :DOC_CODE ;
         SHOW_MESSAGE('DOCUMENT CODE -1'|| ' '||:DOC_CODE);
         SHOW_MESSAGE('LOCK FLAG -1'|| ' '||:LOCK_FLAG);
         Commit_Form;
         MESSAGE('The Record have been changed -1 ');
    ELSE
         UPDATE PROJ.IM_REQUEST_HEADER
         SET LOCK_FLAG = 0
         WHERE DOC_CODE = :DOC_CODE ;
         Commit_Form;
         MESSAGE('The Record have been changed - 2');
    END IF;
    ELSIF :System.Form_Status <> 'QUERY' THEN
    Message('An error prevented your changes from being
    committed.');
    Bell;
    RAISE Form_Trigger_Failure;
    END IF;
    END;
    Note :
    The above trigger is attached to this field LOCK_FLAG and the item type of LOCK_FLAG is check box in the form and the property of the LOCK_FLAG
    is site as the following :
    database item = NO , and the property of the blcok IM_REQUEST_HEADER is site as the following :
    database data block = NO
    and my problem is when i change the value of LOCK_FLAG is not executting the update statement .
    waiting for your valuable answer in details thank in advance for your cooperation.
    best regards
    jamil alshaibani

    Dear Wilfred
    Thank you very much for your cooperation, yes when I change the “Database data block “ property to no, it works, as I wanted to be.
    Notes about my application:
    In my program I provide the store keeper query screen, he can check the orders and lock the specific order by clicking on the LOCK_FLAG field, so after he locked the field the requester user can not change his order content if it is locked by the store keeper
    And the way I was trying to do it ,by query the data from      IM_REQUEST_HEADER Table which is the Order table which is the header table ,the form is displaying doc_code ,doc_date ,lock_flag,and the order store name ,and I provide him a report on the same form that he can see the details of the order items ,and all the field properties set to no, that is update allowed to no ,insert allowed set to no, but the field lock_flag property set as update allowed to yes and insert allowed set to yes
    and I would like to now how it was displaying this message
    ORA-01400 cannot insert NULL INTO “PROJ”.IM_REQUEST_HEADER”.DOC_CODE
    And I was not inserting, I was just updating the lock_flag by the above update statement.
    Best regards
    Jamil Alshaibani

Maybe you are looking for