gpt4 book ai didi

java - 使用 Button 作为列表的渲染器

转载 作者:行者123 更新时间:2023-11-30 09:35:18 25 4
gpt4 key购买 nike

我想使用一个更复杂的渲染器,它由列表的几个组件组成(更准确地说是 this(一个带有一些按钮排列在面板中的文本字段输入)。但是当我尝试在列表中使用一个按钮时它似乎忽略了点击。

最小示例

from javax.swing import DefaultListCellRenderer
from javax.swing import DefaultListSelectionModel
from javax.swing import JButton
from javax.swing import JLabel
from javax.swing import JPanel
from javax.swing import JList
from javax.swing import JFrame


def printer():
print "pressed the button"

class cellRenderer(DefaultListCellRenderer):



def getListCellRendererComponent(self, theList, value, index, selected, hasFocus):
renderer = DefaultListCellRenderer.getListCellRendererComponent(self, theList, value, index, selected, hasFocus)

if selected:
pan = JPanel()
pan.add(JLabel('beer'))
pan.add(JButton('get one', actionPerformed=printer))
renderer = pan

return renderer

panel = JFrame('example', size=(200,200))

configurations = JList([1,2,3,4],
cellRenderer = cellRenderer(),
selectionMode = DefaultListSelectionModel.SINGLE_SELECTION )

panel.add(configurations)
panel.visible = True

编辑:按照建议添加了最小示例。更新问题,因为原始问题在最小示例创建期间得到解决

最佳答案

光有渲染器是不够的;您还需要一个编辑器,它不是 JList API 的一部分。作为替代方案,使用带有自定义渲染器和编辑器的 JTableJRadioAsRendererEditor是一个添加包含单选按钮的 StatusPanel 的示例。当然你也可以用multi-column table ,也是。

关于java - 使用 Button 作为列表的渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11408971/

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