gpt4 book ai didi

java - 使JList中的按钮可点击

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:27 34 4
gpt4 key购买 nike

我不敢相信这行不通。

我有一个 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 不可点击。单击它不会执行任何操作。

我如何使它工作?

最佳答案

渲染器只是涂在组件上的“橡皮图章”。它们不是实时的交互式组件。

查看此答案:JButton in JList一种可能的解决方案。实际上,您将 MouseListener 添加到您的 JList,确定在该点击点呈现哪个特定按钮,然后以编程方式点击该按钮。

或者,您可以制作一个 JPanel 按钮,并将面板放在 JScrollPane 中。

或者,您可以创建一个单列 JTable,您可以在其中实现自定义 TableCellEditor,如下所示:Table Button Column

关于java - 使JList中的按钮可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568849/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com