DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 4 of 4
  1. #1
    Join Date
    Nov 2004

    Button Event Handler in a JList, Please help.

    Hi everyone,

    I have created a small Java application which has a JList. The JList uses a custom cell renderer I named SmartCellRenderer. The SmartCellRenderer extends JPanel and implements the ListCellRenderer. I have added two buttons on the right side inside the JPanel of the SmartCellRenderer, since I want to buttons for each list item, and I have added mouse/action listeners for both buttons. However, they don't respond. It seems that the JList property overcomes the buttons underneath it. So the buttons never really get clicked because before that happens the JList item is being selected beforehand. I've tried everything. I've put listeners in the Main class, called Editor, which has the JList and also have listeners in the SmartCellRenderer itself and none of them get invoked.

    I also tried a manual solution. Every time the event handler for the JList was invoked (this is the handler for the JList itself and not the buttons), I sent the mouse event object to the SmartCellRenderer to manually check if the point the click happened was on one of the buttons in order to handle it.
    I used:
    // Inside SmartCellRenderer.java
    // e is the mouse event object being passed from the Editor whenever
    // a JList item is selected or clicked on

    Component comp = this.getComponent (e.getX(), e.getY())

    if(!(comp instanceof JButton)) {
    System.out.println("Recoqnized Event, but not a button click...");
    } else {
    System.out.println("Recognized Event, IT IS A MOUSE CLICK, PROCESSING...");

    System.out.println("VALUE: "+comp.toString());

    What I realized is that not only this still doesn't work (it never realizes the component as a JButton) it also throws an exception for the last line saying comp is null. Meaning with the passed x,y position the getComponent() returns a null which happens when the coordinates passed to it are outside the range of the Panel. Which is a whole other problem?

    I have yet to find an example on the web, using Google, that demonstrated using buttons inside a JList.

    Can anyone help me with this. Thanks.

  2. #2
    Join Date
    Nov 2004
    Sorry, I have never managed that. The renderer lends the 'looks' from the button, it just uses the buttons method for drawing, what you see on screen is a 'cardboard' representation of a button. You could pile a bunch of panels in a one column gridlayout-panel, and put that panel into a scrollpane. The logic for adding and removing 'lines' here I leave up to you
    eschew obfuscation

  3. #3
    Join Date
    Mar 2004
    You want a JList to display 2 buttons per item? Is that it? Why are you using a JList?

  4. #4
    Join Date
    Nov 2004
    I just come to think of this; what you basically want to do is to respond to a mouseclick in a JList, but you want to do different responses according to _where_ in the list cell the click occurs. You can do this by some mouse position translation. You wont get any button 'behaviour' though.
    eschew obfuscation

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center
Latest Articles
Questions? Contact us.
Web Development
Latest Tips
Open Source

   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center

We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.