cod*_*nja 6 java swing jbutton jlist
我不敢相信这不起作用.
我有一个JList.我已将其渲染器设置如下.基本上RankingPanel是一个带有两个标签和一个按钮的JPanel.
topAchieverList = new JList();
topAchieverList.setCellRenderer(new TopBottomCellRenderer());
Run Code Online (Sandbox Code Playgroud)
这是我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
列表正确呈现但JButton不可点击.点击它什么都不做.
我该如何工作?
渲染器只是涂在组件上的“橡皮图章”。它们不是实时的交互式组件。
请参阅此答案:JList 中的 JButton 以获取一种可能的解决方案。实际上,您将 a 添加MouseListener到您的JList,确定在该单击点呈现哪个特定按钮,然后以编程方式单击该按钮。
或者,您可以制作一个JPanel按钮,然后将面板放在JScrollPane.
或者,您可以创建一个单列JTable,您可以在其中实现自定义 TableCellEditor,如下所示:Table Button Column
| 归档时间: |
|
| 查看次数: |
7770 次 |
| 最近记录: |