簡體   English   中英

使JList中的按鈕可單擊

[英]Making button in JList clickable

我不敢相信這不起作用。

我有一個JList。 我已將其渲染器設置如下。 基本上, RankingPanel是一個帶有兩個標簽和一個按鈕的JPanel。

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

這是我的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;
    }
}

列表正確呈現,但JButton不可點擊。 點擊它什么都不做。

我該如何工作?

渲染器只是塗在組件上的“橡皮圖章”。 它們不是實時的交互式組件。

請參閱此答案: JList中的JButton是一種可能的解決方案。 實際上,您將一個MouseListener添加到JList ,確定在該單擊點處呈現哪個特定按鈕,然后以編程方式單擊該按鈕。

或者,您可以創建按鈕的JPanel ,並將面板放在JScrollPane

或者,您可以創建一個單列JTable ,您可以在其中實現自定義TableCellEditor,如下所示: 表按鈕列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM