• 0

Button Event Handler in a JList, Please help.


Question

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("Recoqnizedt, but not a button click...");

//return;

} else {

System.out.println("Recognizedt, IT IS A MOUSE CLICK, PROCESSING...");

}

System.out.println("VALUEomp.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.

3 answers to this question

Recommended Posts

  • 0

might help if you post your code....

what you have to do is

create a button, assign the button a listener and then assign to the jlist.

I have no jdk at the moment, but here is some code

class MyList extends JList implements ActionListener
{

    JButton b1 = new JButton();
    JButton b2 = new JButton();

    public MyList()
   {
       super(); 
      b1.addActionListener(this);
      b2.addActionListener(this);
      this.add(b1);
      this.add(b2);
   }

   public actionPerformed(ActionEvent e)
  { 
     System.out.println(e.toString());
   }
}

  • 0

I know the above code isnt what you are looking for, but your key problem is that you have not hooked your buttons into a listener. ie. addActionListener(this).

this is why you never here calls from the button being pressed, because nothing registered to listening for the event

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Windows 11 blocks Google Chrome due to a Microsoft safety feature, fix out by Sayan Sen Microsoft has a parental control and safety feature called "Microsoft Family Safety" which allows users to create safe spaces for their family members for browsing the web by setting up filters so as to block and filter inappropriate content and limit browsing to kid-friendly and family friendly content. However, as it turns out, following Chrome version updates 137.0.7151.68, 137.0.7151.69, Google's web browser is getting automatically blocked by Microsoft Family Safety as affected users have reported that the browser will automatically close or crash and then fail to reopen. Thus if you are using Edge, you get the green signal from the Family Safety app, but not if you are using Google Chrome. The issue seems to be affecting mainly Windows 11 devices but Windows 10 or macOS may be affected too. A thread on Microsoft's official Windows forum by Peter Priestley1, which is presumably from an educational institute, says: The thread has been upvoted by 122 people at the time of writing. There are plenty of other such threads online and users also say that they have tried all sorts of things like refreshing cookies and appdata but "nothing" seems to fix it. This shows that Microsoft's safety feature is certainly robust and that it is not easy to bypass but it also means affected users are not too happy about it considering it is seemingly blocking all versions of Chrome. There is one fix that worked though, renaming chrome.exe to something else like chrome1.exe for example. A Chrome community manager, Ellen T, has confirmed that the Microsoft feature is indeed what is causing it and the only way to fix the issue is to "unblock Chrome" inside the Family Safety app. Ellen says: Microsoft has also shared a similar guidance on the issue according to Fred SR., a senior member of the Chrome community.
    • Typical Microsoft... Go half way and then lazily stop. As if adding all the other directional options would have been so difficult...
    • Some of these robots are getting pretty human-like, but obviously stronger and more bendy. Weight and balance is probably a big hurdle because of all the batteries they have to pack in them, but it'll continue to improve. I'm guessing these companies foresee a future where every household has a robot slave...I mean, assistant.
    • You can do that right now, so what stops you? Nobody forbids you from installing Windows 10 on your PC.
  • Recent Achievements

    • Week One Done
      Helen Shafer earned a badge
      Week One Done
    • First Post
      emptyother earned a badge
      First Post
    • Week One Done
      Crunchy6 earned a badge
      Week One Done
    • One Month Later
      KynanSEIT earned a badge
      One Month Later
    • One Month Later
      gowtham07 earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      660
    2. 2
      ATLien_0
      270
    3. 3
      Michael Scrip
      218
    4. 4
      Steven P.
      162
    5. 5
      +FloatingFatMan
      159
  • Tell a friend

    Love Neowin? Tell a friend!