リストのいくつかのコンポーネントで構成されるより複雑なレンダラーを使用したいと思います(より正確には、このようなもの(パネルにいくつかのボタンが配置されたテキストフィールド入力)。ただし、リストでボタンを使用しようとすると、クリックが無視されるようです.
最小限の例
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
編集:提案された最小限の例を追加しました。元の問題は最小限の例の作成中に解決されたため、質問を更新しました