Creating a button in jlist clickable

I can’t believe this is not working ...

I have a jlist. I set my renderer as follows. It is basically RankingPanela Jpanel with 2 shortcuts and a button.

topAchieverList = new JList();
topAchieverList.setCellRenderer(new TopBottomCellRenderer());

Here is my TopBottomCellRenderer.

class TopBottomCellRenderer extends RankingPanel implements ListCellRenderer {

    public TopBottomCellRenderer() {
    }

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        try {
            Achievers achiever = (Achievers) value;

            if (achiever == null) {
                return this;
            }
            itemRank.setText("#" + achiever.rank);
            itemUnits.setText("" + achiever.units);

            //this is the button that does not click
            itemNameButton.setText(achiever.name);

            //set bg
            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }
            return this;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return this;
    }
}

The list displays correctly, but is JButtonnot clickable. Clicking on it does nothing.

How can I do this job?

+4
source share
1 answer

Renderers are just rubber stamps drawn on a component. They are not live, interactive components.

: JButton JList . MouseListener JList, , , .

JPanel JScrollPane.

JTable, TableCellEditor, :

+2

Source: https://habr.com/ru/post/1532902/


All Articles